WS1399 - 18. May 2023: WestJet (WJA1399) from Las Vegas to Calgary (2023)

WestJet WS1399 (WJA1399)
WS1399 / WJA1399
18. May 2023
This is not the most recent flight. Click here for the WS1399 flight plan.

Landed
The flight has landed. It arrived 6 days ago (11min early).
Las Vegas
LAS / KLAS

2h 23m
1,676km / 1,035mi

Departure 08:40PDT
5min late

Arrival 12:03MDT
11min early
" : "") + "WS1399 - 18. May 2023: WestJet (WJA1399) from Las Vegas to Calgary (4)"; liveMap.removeLayer(marker[activeHex]); const m = L.marker(activeMarker.getLatLng(), { icon: L.divIcon({ className: 'flt-marker', html: htmlc }) , alt: activeHex , opacity: lp[3] ? 0.9 : 0.6 }).addTo(liveMap).on('click', onPlaneClick); marker[activeHex] = m; document.getElementById("mi-"+activeHex).style.transform = "rotate("+lp[2]+"deg)"; activeMarker = null; } activeHex = null; liveTrack = null; liveMarker = null; estTrack = null; document.getElementById('liveMapContainer').style.display = 'none'; } async function updateCalc(liveMap) { if (recalcInProg) { return; } if (liveMap.getZoom() < 6) { return; } recalcInProg = true; for (const [key, prevPos] of Object.entries(lastPos)) { if (key in marker) { if (prevPos[3] < 50 || prevPos[6]) { continue; } // calc next position const speed = prevPos[3] ? prevPos[3] : 0; const interval = Date.now() - prevPos[4]; const dist = speed * interval / 1000 / 3600 * 1852; if (dist < 50) { continue; } const lat1 = toRad(prevPos[0]); const lon1 = toRad(prevPos[1]); const brng = toRad(prevPos[2]); const lat2 = Math.asin(sin(lat1) * cos(dist / r_earth) + cos(lat1) * sin(dist / r_earth) * cos(brng)); const lon2 = lon1 + Math.atan2(sin(brng) * sin(dist / r_earth) * cos(lat1), cos(dist / r_earth) - sin(lat1) * sin(lat2)); const lat2d = toDeg(lat2); const lon2d = toDeg(lon2); lastPos[key] = [lat2d, lon2d, prevPos[2], prevPos[3], Date.now(), prevPos[5],prevPos[6],prevPos[7]]; marker[key].setLatLng([lat2d, lon2d]); if (liveTrack && activeMarker == key) { l = liveTrack.getLatLngs(); l.push(L.latLng(lat2d, lon2d,prevPos[5])); try { liveTrack.setLatLngs(l); } catch (e) { } if (activeDest) { t = activeDest; tn = L.latLng(lat2d, lon2d); liveMap.removeLayer(estTrack); if (t.lng < tn.lng) { estTrack = L.Polyline.Arc(t, tn, { color: "gray", noClip: true, vertices: 100 }).addTo(liveMap); } else { estTrack = L.Polyline.Arc(tn, t, { color: "gray", noClip: true, vertices: 100 }).addTo(liveMap); } tracks.push(estTrack); } } } } recalcInProg = false; } async function getData(url) { url=url + "?" + Math.floor(Date.now() / 5000) const ret = await (fetch(url, { headers: { Authorization: auth_token } }).then((response) => { if (response.ok) { if (sf == "") { document.getElementById("liveUpdErr").style.display = 'none'; document.getElementById("liveUpdNotFound").style.display = 'none'; } return response.json(); } else if (response.status != 404 && sf == "") { refreshsActive = false; document.getElementById("liveUpdNotFound").style.display = 'none'; document.getElementById("liveUpdErr").style.display = 'block'; document.getElementById("liveMapContainer").style.display = 'none'; document.getElementById("liveUpdErrCode").innerText = response.status; } else if (sf == "") { document.getElementById("liveUpdErr").style.display = 'none'; document.getElementById("liveMapContainer").style.display = 'none'; document.getElementById("liveUpdNotFound").style.display = 'block'; } return null; }).catch((error) => { return null; })); return ret; } async function updateMap(liveMap, fromZoom) { if (typeof document.hidden !== "undefined") { if (document.hidden) { return; } } b = liveMap.getBounds(); const widthText = screenWidth > 1000 ? "large" : "small"; url = "/en/live/map/" + Math.floor(b['_northEast'].lat * 1e5) + "/" + Math.floor(b['_southWest'].lat * 1e5) + "/" + Math.floor(b['_southWest'].lng * 1e5) + "/" + Math.floor(b['_northEast'].lng * 1e5) + "/"+liveMap.getZoom() + "/" + widthText; if (updateInProg) { return; } freq = fromZoom ? minZoomFreq : minRefreshFreq; if (Date.now() - lastUpdate < freq) { return; } recalcInProg = true; lastUpdate = Date.now(); updateInProg = true; const ld = await getData(url); if (!ld) { updateInProg = false; return; } newMarker = {}; arcs = []; curArc = []; arcCol = ""; prevCoord = []; document.getElementById("nr_flights_disp").innerText =ld["f"]; document.getElementById("nr_flights_tot").innerText =ld["t"]; st = screenWidth / ld["f"] > 2; const redraw = st != hadTitles; for (const entr in ld["m"]) { const e = ld["m"][entr]; if (e[4] == null || e[5] == null) { continue; } const currentPos = L.latLng(e[4], e[5]); if (redraw && e[0] in marker) { liveMap.removeLayer(marker[e[0]]); delete marker[e[0]]; } if (e[0] in marker) { const m = marker[e[0]]; m.setLatLng(currentPos); lastPos[e[0]] = [e[4], e[5], e[2], e[6], Date.now(),e[7],e[8],e[9]]; newMarker[e[0]] = true; document.getElementById("mi-"+e[0]).style.transform = "rotate("+e[2]+"deg)"; } else { const htmlc = (st ? "

"+e[9]+"

" : "") + "WS1399 - 18. May 2023: WestJet (WJA1399) from Las Vegas to Calgary (5)" const m = L.marker(currentPos, { icon: L.divIcon({ className: 'flt-marker', html: htmlc }) , alt: e[0] , opacity: e[3] ? 0.9 : 0.6 }).addTo(liveMap).on('click', onPlaneClick); marker[e[0]] = m; newMarker[e[0]] = true; lastPos[e[0]] = [e[4], e[5], e[2], e[6], Date.now(),e[7],e[8],e[9]]; document.getElementById("mi-"+e[0]).style.transform = "rotate("+e[2]+"deg)"; } } hadTitles = st; for (const m in marker) { if (!(m in newMarker) && m != activeHex) { liveMap.removeLayer(marker[m]); delete marker[m]; } } updateInProg = false; recalcInProg = false; firstUpd = false; } function onMoveend(e) { localStorage.setItem('livemapCenter', JSON.stringify(e.target.getCenter())); localStorage.setItem('livemapZoom', e.target.getZoom()); updateMap(e.sourceTarget, false); } function onZoomed(e) { updateMap(e.sourceTarget, true) } function onPlaneClick(e) { if (sf != "") { return; } updateInProg = true; const liveMap = e.target._map; const hex = e.target.options.alt; if (hex == activeHex) { return; } updateTrack(liveMap, "/en/live/track_hex/" + hex, hex, e) } function updateTrack(liveMap, url, hex, e) { getData(url).then(function (ld) { if (!ld) { return; } const hadNoHex = hex == ""; if (hex == "") { hex = ld[0]; } if (activeMarker && hex != activeHex) { // reset old marker const lp = lastPos[activeHex]; const htmlc = (hadTitles ? "

"+lp[7]+"

" : "") + "WS1399 - 18. May 2023: WestJet (WJA1399) from Las Vegas to Calgary (6)"; liveMap.removeLayer(marker[activeHex]); const m = L.marker(activeMarker.getLatLng(), { icon: L.divIcon({ className: 'flt-marker', html: htmlc }) , alt: activeHex , opacity: lp[3] ? 0.9 : 0.6 }).addTo(liveMap).on('click', onPlaneClick); marker[activeHex] = m; document.getElementById("mi-"+activeHex).style.transform = "rotate("+lp[2]+"deg)"; activeMarker = m; } // set new marker if (hex != activeHex && e) { const lp = lastPos[hex]; const htmlc = (hadTitles ? "

"+lp[7]+"

" : "") + "WS1399 - 18. May 2023: WestJet (WJA1399) from Las Vegas to Calgary (7)" const m = L.marker(e.target.getLatLng(), { icon: L.divIcon({ className: 'flt-marker', html: htmlc }) , alt: hex , opacity: ld[3] ? 0.9 : 0.6 }).addTo(liveMap).on('click', onPlaneClick); marker[hex] = m; liveMap.removeLayer(e.target); activeMarker = m; } refreshsActive = true; recalcInProg = true; arcs = []; curArc = []; arcCol = ""; prevCoord = []; track = ld[23]; if (sf == "") { if (ld[0] != "") { document.getElementById("liveFlnr").href = "/en/live/flight_details/" + ld[10]; document.getElementById("liveFlnr").innerText = ld[0]; } else { document.getElementById("liveFlnr").innerText = ""; document.getElementById("liveFlnr").href = ""; } if (ld[21]) { document.getElementById("liveAirline").innerText = ld[21]; } else { document.getElementById("liveAirline").innerText = ""; } document.getElementById("liveHex").innerText = ld[1] ; if (ld[2] != "" && ld[2] != ld[0]) { document.getElementById("liveCallsign").innerText = ld[2]; } else { document.getElementById("liveCallsign").innerText = ""; } if (ld[3] != "") { document.getElementById("liveReg").href = "/en/planes/" + ld[3]; document.getElementById("liveRegBlock").style.display="block"; document.getElementById("liveReg").innerText = ld[3]; } else { document.getElementById("liveReg").innerText = "NA"; document.getElementById("liveRegBlock").style.display="none"; document.getElementById("liveReg").href = ""; } if (ld[4] != "NA") { document.getElementById("liveDep").innerText = ld[5]; document.getElementById("liveDepFlag").src="/staticfiles/"+ld[6].toLowerCase()+".svg"; document.getElementById("liveDep").href = "/en/airport/" + ld[5] + "/" + ld[4]; document.getElementById("liveDepTime").innerText = ld[11]; if (ld[19] && ld[19] != "+0") { document.getElementById("liveDepDelay").innerText = ld[19]; } else { document.getElementById("liveDepDelay").innerText = ""; } } else { document.getElementById("liveDep").innerText = "NA"; document.getElementById("liveDepTime").innerText = ""; document.getElementById("liveDepDelay").innerText = ""; } if (ld[7] != "NA") { document.getElementById("liveArr").innerText = ld[8]; document.getElementById("liveArrFlag").src="/staticfiles/"+ld[9].toLowerCase()+".svg"; document.getElementById("liveArr").href = "/en/airport/" + ld[8] + "/" + ld[7]; document.getElementById("liveArrTime").innerText = ld[12]; if (ld[20] && ld[20] != "+0") { document.getElementById("liveArrDelay").innerText = ld[20]; } else { document.getElementById("liveArrDelay").innerText = ""; } } else { document.getElementById("liveArr").innerText = "NA"; document.getElementById("liveArrTime").innerText = ""; document.getElementById("liveArrDelay").innerText = ""; } if (ld[10] != null) { document.getElementById("liveLink").href = "/en/live/flight_details/" + ld[10]; document.getElementById("liveLink").style.display = "block"; } else { document.getElementById("liveLink").style.display = "none"; } const lt = track[track.length - 1]; document.getElementById("liveAlt").innerText = lt[3] + " ft"; document.getElementById("liveSpeed").innerText = lt[5] + " kts"; document.getElementById("liveTrack").innerText = lt[4] + "°"; if (ld[18] != "") { document.getElementById("planePic").src = ld[18]; document.getElementById("planePic").style.display = "block"; } else { document.getElementById("planePic").style.display = "none"; } if (ld[22]) { document.getElementById("liveType").innerText = ld[22]; document.getElementById("liveTypeBlock").style.display="block"; } else { document.getElementById("liveTypeBlock").style.display="none"; document.getElementById("liveType").innerText = "NA"; } } if (ld[13] != null && ld[14] != null && track.length > 0 && Math.abs(ld[13] - track[0][1] / 1e5) > 1 && Math.abs(ld[14] - track[0][2] / 1e5) > 1) { arcs.push([[[ld[13], ld[14]], [track[0][1] / 1e5, track[0][2] / 1e5]], "gray", true]) } var prevCoord = null; var prevCoordFull = null; lp = null; for (const entr in track) { const p = track[entr]; if (p[1] == null || p[2] == null) { continue; } col = "green"; if (prevCoord && (Math.abs(prevCoord[0] - p[1] / 1e5) > 1 || Math.abs(prevCoord[1] - p[2] / 1e5) > 1)) { arcs.push([curArc, arcCol, false]); arcCol = ""; arcs.push([[[prevCoord[0], prevCoord[1]], L.latLng(p[1] / 1e5, p[2] / 1e5,p[3])], "gray", true]); curArc = [L.latLng(p[1] / 1e5, p[2] / 1e5,p[3])]; } else if (arcCol != col) { if (curArc.length > 0) { arcs.push([curArc, arcCol, false]); } if (prevCoord) { curArc = [prevCoord]; } else { curArc = []; } arcCol = col; } prevCoordFull = [p[1] / 1e5, p[2] / 1e5, p[4], p[5], Date.now(),p[3],false,p[9]]; prevCoord = L.latLng(p[1] / 1e5, p[2] / 1e5,p[3]); curArc.push(prevCoord); if (p[4] != 0) { lastTrack = p[4]; } } if (curArc.length > 0) { arcs.push([curArc, arcCol]); } if (ld[15] != null && ld[16] != null && prevCoord && (Math.abs(prevCoord.lat - ld[15]) > 0.1 || Math.abs(prevCoord.lng - ld[16]) > 0.1)) { arcs.push([[prevCoord, [ld[15], ld[16]]], "gray", true]) activeDest = L.latLng(ld[15], ld[16]); } for (const idx in tracks) { tracks[idx].remove(); } tracks = []; for (const idx in arcs) { var a = arcs[idx]; if (a[2]) { if (a[0][0][1] > a[0][1][1]) { var p = a[0][0]; a[0][0] = a[0][1]; a[0][1] = p; } p = L.Polyline.Arc(a[0][0], a[0][1], { color: a[1], noClip: true, vertices: 100 }); estTrack = p; } else { p = L.hotline(a[0], { palette: {0:'gray',0.1:'green',0.5:'yellow',0.7:'orange',1:'red'},min:0,max:36000, outlineWidth: 0,weight:4, noClip: true }); liveTrack = p; } p.addTo(liveMap); tracks.push(p); } if (prevCoordFull) { lastPos[hex] = prevCoordFull; } if (prevCoord) { if (e) { const i = e.sourceTarget; i.setLatLng(prevCoord); activeMarker = i; if (lastTrack) { document.getElementById("mi-"+hex).style.transform = "rotate("+lastTrack+"deg)"; } if (!refreshs && !viewSet) { liveMap.setView(prevCoord, 8); } } else { if (!activeMarker) { activeMarker = L.marker(prevCoord, { icon: L.icon({ iconUrl: "/img/plane-icon_active.svg?20221124", iconSize: liveMap._zoom > 7 ? sizes[0] : sizes[1] }) , rotationAngle: prevCoordFull[2] , rotationOrigin: "center center" , opacity: 0.8 , title: hex }).addTo(liveMap); } else { activeMarker.setLatLng(prevCoord); } } if (e || hadNoHex) { // only set refresh on first click or for live flight tracks (no hex given then) if (trackRefresh) { window.clearInterval(trackRefresh); } if (ld[17]) { trackRefresh = window.setInterval(function () { if (refreshsActive) { updateTrack(liveMap, url, hex, null); } }, 5000); } } } if (!refreshs && !viewSet) { liveMap.setView(prevCoord, 8); } if (sf == "") { document.getElementById("liveMapContainer").style.display = 'block'; } activeHex = hex; updateInProg = false; recalcInProg = false; }); } function buildLiveMap(liveMap) { const osmUrl = 'https://a.tile.openstreetmap.org/{z}/{x}/{y}.png'; const osmAttrib = '© OpenStreetMap'; const osm = new L.TileLayer(osmUrl, { attribution: osmAttrib }); liveMap.attributionControl.setPrefix(''); liveMap.addLayer(osm); updateMap(liveMap, false); liveMap.on('zoomend', onZoomed); liveMap.on('moveend', onMoveend); } function buildTrackMap(liveMap, url) { const osmUrl = 'https://a.tile.openstreetmap.org/{z}/{x}/{y}.png'; const osmAttrib = '© OpenStreetMap'; const osm = new L.TileLayer(osmUrl, { attribution: osmAttrib }); liveMap.attributionControl.setPrefix(''); liveMap.addLayer(osm); updateTrack(liveMap, url, "", null); }
Full Screen Map

TERMINAL: 3
GATE: E6

GATE: D71

FREQUENCY:

daily
Sun,Mon,Tue,Wed,Thu,Fri,Sat
AIRLINE
WestJet
WS/WJA

PLANE

MODEL
C-FKWS Boeing B737-700

ICAO IDENTIFIER
C01CB7

SEAT CONFIGURATION
130 seats
12 Eco+118 Economy

FIRST FLIGHT
Jul 2001
21 years ago

GENERAL ROUTE INFO

DISTANCE
1,676km 1,041mi

FLIGHT TIME
2 hours 44 min

FLIGHTS / WEEK
29 Flights

PUNCTUALITY
10 Flights/week delayed
64% On-Time Performance

SEATS / WEEK
162 seats/Flight
20,138 seats/week

CO2 EMISSIONS*

Economy
550kg

Eco+
637kg

Our CO2 calculations are based on real flight data and show the estimated carbon emissions for the entire flight, including takeoff, cruising, and landing. We take into account factors such as aircraft type, fuel efficiency, and distance traveled to provide an accurate estimate of the CO2 emissions for the flight. Our goal is to provide transparency and help travelers make more informed decisions about their environmental impact.

* CO2 calculations provided by CarbonCompute.com

Flight delays happen, but that doesn’t mean you have to accept them. You may be entitled to as much as €600/$700 in compensation if your flight has been delayed, canceled or overbooked within the last three years.

Top Articles
Latest Posts
Article information

Author: Greg Kuvalis

Last Updated: 07/04/2023

Views: 5853

Rating: 4.4 / 5 (75 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Greg Kuvalis

Birthday: 1996-12-20

Address: 53157 Trantow Inlet, Townemouth, FL 92564-0267

Phone: +68218650356656

Job: IT Representative

Hobby: Knitting, Amateur radio, Skiing, Running, Mountain biking, Slacklining, Electronics

Introduction: My name is Greg Kuvalis, I am a witty, spotless, beautiful, charming, delightful, thankful, beautiful person who loves writing and wants to share my knowledge and understanding with you.