diff --git a/src/app/components/toast/toast-box.component.ts b/src/app/components/toast/toast-box.component.ts index c5c02d0..6e645ad 100644 --- a/src/app/components/toast/toast-box.component.ts +++ b/src/app/components/toast/toast-box.component.ts @@ -18,17 +18,17 @@ import {ToastConfig} from './toast-model'; state('fancy', style([{transform: 'translateX(0)'},{transform: 'translateY(0)'}, {opacity: 1}, {maxWidth: 450}])), transition('void => fancy', [ style({opacity: 0, maxWidth: 450, transform: 'translateX(100%)'}), - animate('300ms ease-in-out') + animate('1000ms ease-in-out') ]), transition('fancy => void', [ - animate('300ms ease-in-out', style({transform: 'translateX(100%)', height: 0, opacity: 0})) + animate('1000ms ease-in-out', style({transform: 'translateX(100%)', height: 0, opacity: 0})) ]), transition('void => decent', [ style({opacity: 0, maxWidth: 0}), - animate('300ms ease-in-out') + animate('1000ms ease-in-out') ]), transition('decent => void', [ - animate('300ms ease-in-out', style({width: 0, opacity: 0})) + animate('1000ms ease-in-out', style({width: 0, opacity: 0})) ]) ]) ] diff --git a/src/app/pages/main/main.component.html b/src/app/pages/main/main.component.html index 7f64275..d510c78 100644 --- a/src/app/pages/main/main.component.html +++ b/src/app/pages/main/main.component.html @@ -196,21 +196,21 @@ [ngClass]="{'selected':row_state['renderFlight']['FLNO']===airline_row['renderFlight']['FLNO']}"> {{start+i+1}} - - - - - - - - {{airline_row['renderFlight']['FLID']}} diff --git a/src/app/pages/main/main.component.ts b/src/app/pages/main/main.component.ts index 9c46646..746eb5b 100644 --- a/src/app/pages/main/main.component.ts +++ b/src/app/pages/main/main.component.ts @@ -145,7 +145,6 @@ export class MainComponent implements OnInit { console.log(message); //是否可以开始处理动态消息 if (this.canHandleDynamicMessage) { - // this.webWorkerService.terminate(promise); this.dynamicMessageHandle(message); } else { this.dynamicMessageArray.push(message); @@ -328,7 +327,8 @@ export class MainComponent implements OnInit { this.visibleCount = Math.ceil(this.tableBody.nativeElement.clientHeight / this.trItemHeight); const scrollTop = this.tableBody.nativeElement.scrollTop; const fixedScrollTop = scrollTop - scrollTop % this.trItemHeight; - this.tableContent.nativeElement.style.webkitTransform = `translateY(${fixedScrollTop}px)`; + this.tableContent.nativeElement.style.transform = `translateY(${fixedScrollTop}px)`; + this.start = Math.floor(scrollTop / this.trItemHeight); this.end = this.start + this.visibleCount; this.render_data = this.wait_render_data.slice(this.start, this.end); @@ -463,6 +463,14 @@ export class MainComponent implements OnInit { this.flightTypeSelections.push(this.flightTypes[index]); } + this.creatWorkers(); + + } + + /** + * 创建线程并执行 + */ + creatWorkers() { let dynamicData = { raw_data: this.raw_data, col_lists: this.col_lists, @@ -472,10 +480,19 @@ export class MainComponent implements OnInit { flightStatus: this.flightStatus, flightTypes: this.flightTypes } + // const promise = new Worker('/assets/web-worker-handle.js'); + // promise.postMessage(dynamicData); + // promise.onmessage = function (e) { + // console.log('====='); + // this.combined_data = e.data; + // this.selectChange('dynamic'); + // // promise.terminate(); + // }.bind(this); const promise = this.webWorkerService.run(webWorkerHandle, dynamicData); promise.then(function (response) { this.combined_data = response; this.selectChange('dynamic'); + this.webWorkerService.terminate(promise); }.bind(this)); } @@ -503,13 +520,20 @@ export class MainComponent implements OnInit { 'FLOP-FLBG': this.alertMessageHandle.flopFlbg.bind(this.alertMessageHandle), 'FLOP-RENO': this.alertMessageHandle.flopReno.bind(this.alertMessageHandle), 'FLOP-ABTM': this.alertMessageHandle.flopAbtm.bind(this.alertMessageHandle), - 'FLOP-CHDT': this.alertMessageHandle.flopChdt.bind(this.alertMessageHandle), + 'FLOP-CHOT': this.alertMessageHandle.flopChot.bind(this.alertMessageHandle), 'FLOP-TRML': this.alertMessageHandle.flopTrml.bind(this.alertMessageHandle), } dynamicAlertHandle(message) { let alertType = message.META.TYPE + '-' + message.META.STYP; let index = this.airline_message_alert.findIndex(val => val['COL_CODE'] === alertType); if (index > -1) { + if (alertType === 'FLOP-FDEL') { + let index = this.raw_data.findIndex(element => element['FLID'] === message.FLOP.FLID); + if (index > -1) { + this.raw_data.splice(index, 1); + this.creatWorkers() + } + } let alertText = this.alertMessage[alertType](message, this.airports); const toastCfg = new ToastConfig(ToastType.SUCCESS, '', alertText, 600000); this.toastService.toast(toastCfg); @@ -576,7 +600,7 @@ export class MainComponent implements OnInit { for (const key in filterItems) { if (filterItems.hasOwnProperty(key) && filterItems[key]) { if (key === 'Abnormal_state') { - if (item['preFlight'][filterItems[key]]) { + if (item['preFlight'][filterItems[key]] && item['preFlight'][filterItems[key]].length > 0) { is_satis = true; continue; } else { @@ -620,7 +644,7 @@ export class MainComponent implements OnInit { for (const key in filterItems) { if (filterItems.hasOwnProperty(key) && filterItems[key]) { if (key === 'Abnormal_state') { - if (item['reaFlight'][filterItems[key]]) { + if (item['reaFlight'][filterItems[key]] && item['reaFlight'][filterItems[key]].length > 0) { is_satis = true; continue; } else { @@ -665,7 +689,7 @@ export class MainComponent implements OnInit { for (const key in filterItems) { if (filterItems.hasOwnProperty(key) && filterItems[key]) { if (key === 'Abnormal_state') { - if (item['preFlight'][filterItems[key]]) { + if (item['preFlight'][filterItems[key]] && item['preFlight'][filterItems[key]].length > 0) { pre_satis = true; continue; } else { @@ -706,7 +730,7 @@ export class MainComponent implements OnInit { for (const key in filterItems) { if (filterItems.hasOwnProperty(key) && filterItems[key]) { if (key === 'Abnormal_state') { - if (item['reaFlight'][filterItems[key]]) { + if (item['reaFlight'][filterItems[key]] && item['reaFlight'][filterItems[key]].length > 0) { rea_satis = true; continue; } else { diff --git a/src/app/utils/alert-message-handle.ts b/src/app/utils/alert-message-handle.ts index 1d9d8c7..0acee21 100644 --- a/src/app/utils/alert-message-handle.ts +++ b/src/app/utils/alert-message-handle.ts @@ -150,7 +150,7 @@ export class AlertMessageHandle { public flopAbtm(message,airports,citys) { return message.FLOP.FFID + '靠桥撤桥消息'; } - public flopChdt(message,airports,citys) { + public flopChot(message,airports,citys) { return message.FLOP.FFID + '上下轮档消息'; } public flopTrml(message,airports,citys) { diff --git a/src/app/utils/flights-data-handle.ts b/src/app/utils/flights-data-handle.ts index 5bb3ff9..893f1b8 100644 --- a/src/app/utils/flights-data-handle.ts +++ b/src/app/utils/flights-data-handle.ts @@ -27,13 +27,42 @@ export class FlightsDataHandle { 'SODT': this.transferHandle.sodtFormatter.bind(this.transferHandle), 'GTDT': this.transferHandle.gateFormatter.bind(this.transferHandle), 'PADT': this.transferHandle.padtFormatter.bind(this.transferHandle), - 'FLDT':this.transferHandle.fldtFormatter.bind(this.transferHandle) + 'FLDT': this.transferHandle.fldtFormatter.bind(this.transferHandle) } public orderHandle = new DynamicFlightOrder(); public findLinkFlights(raw_flights) { + if (typeof Object.assign != 'function') { + // Must be writable: true, enumerable: false, configurable: true + Object.defineProperty(Object, "assign", { + value: function assign(target, varArgs) { // .length of function is 2 + 'use strict'; + if (target == null) { // TypeError if undefined or null + throw new TypeError('Cannot convert undefined or null to object'); + } + + var to = Object(target); + + for (var index = 1; index < arguments.length; index++) { + var nextSource = arguments[index]; + + if (nextSource != null) { // Skip over if undefined or null + for (var nextKey in nextSource) { + // Avoid bugs when hasOwnProperty is shadowed + if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + return to; + }, + writable: true, + configurable: true + }); + } let combined_raw_flights: Array = []; let copy_raw_flights = []; raw_flights.forEach(element => { @@ -76,6 +105,35 @@ export class FlightsDataHandle { } public flightsRenderTransfer(item, col_lists) { + if (typeof Object.assign != 'function') { + // Must be writable: true, enumerable: false, configurable: true + Object.defineProperty(Object, "assign", { + value: function assign(target, varArgs) { // .length of function is 2 + 'use strict'; + if (target == null) { // TypeError if undefined or null + throw new TypeError('Cannot convert undefined or null to object'); + } + + var to = Object(target); + + for (var index = 1; index < arguments.length; index++) { + var nextSource = arguments[index]; + + if (nextSource != null) { // Skip over if undefined or null + for (var nextKey in nextSource) { + // Avoid bugs when hasOwnProperty is shadowed + if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + return to; + }, + writable: true, + configurable: true + }); + } let render_flight = {}, render_pre_flight = {}, render_rea_flight = {}, @@ -125,7 +183,11 @@ export class FlightsDataHandle { } } else if (preHasValue && reaHasValue) { if (preHasValue === reaHasValue) { - render_flight[key] = preHasValue; + if(key==='FLNO'){ + render_flight[key] = preHasValue + ' / ' + reaHasValue; + }else{ + render_flight[key] = preHasValue; + } } else { if (key === 'ERUT') { render_flight[key] = preHasValue.split(' - ').slice(0, -1).join(' - ') + ' - ' + reaHasValue; @@ -160,8 +222,15 @@ export class FlightsDataHandle { for (let i = 0; i < erutCodeArray.length; i++) { try { let airportIndex = airports.findIndex(val => val.airportCodeIata === erutCodeArray[i]); - let cityIndex = citys.findIndex(val => airports[airportIndex].cityId === val.cityId); - erutChnArray.push(citys[cityIndex].cityNameChn); + if(airportIndex>-1){ + if(airports[airportIndex].briefNameChn){ + erutChnArray.push(airports[airportIndex].briefNameChn); + }else{ + erutChnArray.push(airports[airportIndex].airportNameChn); + } + }else{ + erutChnArray.push(erutCodeArray[i]); + } } catch (error) { erutChnArray.push(erutCodeArray[i]); } @@ -181,8 +250,15 @@ export class FlightsDataHandle { for (let i = 0; i < erutLinkCodeArray.length; i++) { try { let airportIndex = airports.findIndex(val => val.airportCodeIata === erutLinkCodeArray[i]); - let cityIndex = citys.findIndex(val => airports[airportIndex].cityId === val.cityId); - erutLinkChnArray.push(citys[cityIndex].cityNameChn); + if(airportIndex>-1){ + if(airports[airportIndex].briefNameChn){ + erutLinkChnArray.push(airports[airportIndex].briefNameChn); + }else{ + erutLinkChnArray.push(airports[airportIndex].airportNameChn); + } + }else{ + erutLinkChnArray.push(erutLinkCodeArray[i]); + } } catch (error) { erutLinkChnArray.push(erutLinkCodeArray[i]); } @@ -213,8 +289,15 @@ export class FlightsDataHandle { for (let i = 0; i < erutPreCodeArray.length; i++) { try { let airportIndex = airports.findIndex(val => val.airportCodeIata === erutPreCodeArray[i]); - let cityIndex = citys.findIndex(val => airports[airportIndex].cityId === val.cityId); - erutPreChnArray.push(citys[cityIndex].cityNameChn); + if(airportIndex>-1){ + if(airports[airportIndex].briefNameChn){ + erutPreChnArray.push(airports[airportIndex].briefNameChn); + }else{ + erutPreChnArray.push(airports[airportIndex].airportNameChn); + } + }else{ + erutPreChnArray.push(erutPreCodeArray[i]); + } } catch (error) { erutPreChnArray.push(erutPreCodeArray[i]); } @@ -235,8 +318,15 @@ export class FlightsDataHandle { for (let i = 0; i < erutReaCodeArray.length; i++) { try { let airportIndex = airports.findIndex(val => val.airportCodeIata === erutReaCodeArray[i]); - let cityIndex = citys.findIndex(val => airports[airportIndex].cityId === val.cityId); - erutReaChnArray.push(citys[cityIndex].cityNameChn); + if(airportIndex>-1){ + if(airports[airportIndex].briefNameChn){ + erutReaChnArray.push(airports[airportIndex].briefNameChn); + }else{ + erutReaChnArray.push(airports[airportIndex].airportNameChn); + } + }else{ + erutReaChnArray.push(erutReaCodeArray[i]); + } } catch (error) { erutReaChnArray.push(erutReaCodeArray[i]); } diff --git a/src/app/utils/web-worker-handle.ts b/src/app/utils/web-worker-handle.ts index 6e9cfe6..15b94b7 100644 --- a/src/app/utils/web-worker-handle.ts +++ b/src/app/utils/web-worker-handle.ts @@ -1,11 +1,42 @@ export default function (dynamicData) { - let raw_data = dynamicData.raw_data, - col_lists = dynamicData.col_lists, - airports = dynamicData.airports, - citys = dynamicData.citys, - airlines = dynamicData.airlines, - flightStatus = dynamicData.flightStatus, - flightTypes = dynamicData.flightTypes + if (typeof Object.assign != 'function') { + // Must be writable: true, enumerable: false, configurable: true + Object.defineProperty(Object, "assign", { + value: function assign(target, varArgs) { // .length of function is 2 + 'use strict'; + if (target == null) { // TypeError if undefined or null + throw new TypeError('Cannot convert undefined or null to object'); + } + + var to = Object(target); + + for (var index = 1; index < arguments.length; index++) { + var nextSource = arguments[index]; + + if (nextSource != null) { // Skip over if undefined or null + for (var nextKey in nextSource) { + // Avoid bugs when hasOwnProperty is shadowed + if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + return to; + }, + writable: true, + configurable: true + }); + } + + + let raw_data = dynamicData.raw_data, + col_lists = dynamicData.col_lists, + airports = dynamicData.airports, + citys = dynamicData.citys, + airlines = dynamicData.airlines, + flightStatus = dynamicData.flightStatus, + flightTypes = dynamicData.flightTypes /** * 时间转换 * @param dataString @@ -847,7 +878,11 @@ export default function (dynamicData) { } } else if (preHasValue && reaHasValue) { if (preHasValue === reaHasValue) { - render_flight[key] = preHasValue; + if (key === 'FLNO') { + render_flight[key] = preHasValue + ' / ' + reaHasValue; + } else { + render_flight[key] = preHasValue; + } } else { if (key === 'ERUT') { render_flight[key] = preHasValue.split(' - ').slice(0, -1).join(' - ') + ' - ' + reaHasValue; @@ -886,8 +921,15 @@ export default function (dynamicData) { for (let i = 0; i < erutCodeArray.length; i++) { try { let airportIndex = airports.findIndex(val => val.airportCodeIata === erutCodeArray[i]); - let cityIndex = citys.findIndex(val => airports[airportIndex].cityId === val.cityId); - erutChnArray.push(citys[cityIndex].cityNameChn); + if(airportIndex>-1){ + if(airports[airportIndex].briefNameChn){ + erutChnArray.push(airports[airportIndex].briefNameChn); + }else{ + erutChnArray.push(airports[airportIndex].airportNameChn); + } + }else{ + erutChnArray.push(erutCodeArray[i]); + } } catch (error) { erutChnArray.push(erutCodeArray[i]); } @@ -907,8 +949,15 @@ export default function (dynamicData) { for (let i = 0; i < erutLinkCodeArray.length; i++) { try { let airportIndex = airports.findIndex(val => val.airportCodeIata === erutLinkCodeArray[i]); - let cityIndex = citys.findIndex(val => airports[airportIndex].cityId === val.cityId); - erutLinkChnArray.push(citys[cityIndex].cityNameChn); + if(airportIndex>-1){ + if(airports[airportIndex].briefNameChn){ + erutLinkChnArray.push(airports[airportIndex].briefNameChn); + }else{ + erutLinkChnArray.push(airports[airportIndex].airportNameChn); + } + }else{ + erutLinkChnArray.push(erutLinkCodeArray[i]); + } } catch (error) { erutLinkChnArray.push(erutLinkCodeArray[i]); } @@ -939,8 +988,15 @@ export default function (dynamicData) { for (let i = 0; i < erutPreCodeArray.length; i++) { try { let airportIndex = airports.findIndex(val => val.airportCodeIata === erutPreCodeArray[i]); - let cityIndex = citys.findIndex(val => airports[airportIndex].cityId === val.cityId); - erutPreChnArray.push(citys[cityIndex].cityNameChn); + if(airportIndex>-1){ + if(airports[airportIndex].briefNameChn){ + erutPreChnArray.push(airports[airportIndex].briefNameChn); + }else{ + erutPreChnArray.push(airports[airportIndex].airportNameChn); + } + }else{ + erutPreChnArray.push(erutPreCodeArray[i]); + } } catch (error) { erutPreChnArray.push(erutPreCodeArray[i]); } @@ -961,8 +1017,15 @@ export default function (dynamicData) { for (let i = 0; i < erutReaCodeArray.length; i++) { try { let airportIndex = airports.findIndex(val => val.airportCodeIata === erutReaCodeArray[i]); - let cityIndex = citys.findIndex(val => airports[airportIndex].cityId === val.cityId); - erutReaChnArray.push(citys[cityIndex].cityNameChn); + if(airportIndex>-1){ + if(airports[airportIndex].briefNameChn){ + erutReaChnArray.push(airports[airportIndex].briefNameChn); + }else{ + erutReaChnArray.push(airports[airportIndex].airportNameChn); + } + }else{ + erutReaChnArray.push(erutReaCodeArray[i]); + } } catch (error) { erutReaChnArray.push(erutReaCodeArray[i]); } diff --git a/src/assets/images/important-notes/alternate .png b/src/assets/images/important-notes/alternate.png similarity index 100% rename from src/assets/images/important-notes/alternate .png rename to src/assets/images/important-notes/alternate.png diff --git a/src/assets/web-worker-handle.js b/src/assets/web-worker-handle.js new file mode 100644 index 0000000..9db50c6 --- /dev/null +++ b/src/assets/web-worker-handle.js @@ -0,0 +1,1060 @@ +onmessage = function (dynamicData) { + if (typeof Object.assign != 'function') { + // Must be writable: true, enumerable: false, configurable: true + Object.defineProperty(Object, "assign", { + value: function assign(target, varArgs) { // .length of function is 2 + 'use strict'; + if (target == null) { // TypeError if undefined or null + throw new TypeError('Cannot convert undefined or null to object'); + } + + var to = Object(target); + + for (var index = 1; index < arguments.length; index++) { + var nextSource = arguments[index]; + + if (nextSource != null) { // Skip over if undefined or null + for (var nextKey in nextSource) { + // Avoid bugs when hasOwnProperty is shadowed + if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + return to; + }, + writable: true, + configurable: true + }); + } + + + let raw_data = dynamicData.data.raw_data, + col_lists = dynamicData.data.col_lists, + airports = dynamicData.data.airports, + citys = dynamicData.data.citys, + airlines = dynamicData.data.airlines, + flightStatus = dynamicData.data.flightStatus, + flightTypes = dynamicData.data.flightTypes + /** + * 时间转换 + * @param dataString + */ + function timeFormatter(dataString) { + const monthToNumber = { + JAN: '01', + FEB: '02', + MAR: '03', + APR: '04', + MAY: '05', + JUN: '06', + JUL: '07', + AUG: '08', + SEP: '09', + OCT: '10', + NOV: '11', + DEC: '12', + } + if (!dataString || dataString.length < 11) { + return dataString ? dataString : ''; + } + if (!dataString.substring(7)) { + return dataString ? dataString : ''; + } + if (!monthToNumber.hasOwnProperty(dataString.substring(2, 5).toUpperCase())) { + return dataString ? dataString : ''; + } + + let year = "20" + dataString.substring(5, 7); + let month = monthToNumber[dataString.substring(2, 5).toUpperCase()]; + let day = dataString.substring(0, 2); + let hour = dataString.substring(7, 9); + let min = dataString.substring(9, 11); + return hour + ':' + min; + } + /** + * 日期转换 + * @param dataString + */ + function dateWithNotimeFormatter(dataString) { + const monthToNumber = { + JAN: '01', + FEB: '02', + MAR: '03', + APR: '04', + MAY: '05', + JUN: '06', + JUL: '07', + AUG: '08', + SEP: '09', + OCT: '10', + NOV: '11', + DEC: '12', + } + if (!dataString || dataString.length < 11) { + return dataString ? dataString : ''; + } + if (!dataString.substring(7)) { + return dataString ? dataString : ''; + } + if (!monthToNumber.hasOwnProperty(dataString.substring(2, 5).toUpperCase())) { + return dataString ? dataString : ''; + } + + let year = "20" + dataString.substring(5, 7); + let month = monthToNumber[dataString.substring(2, 5).toUpperCase()]; + let day = dataString.substring(0, 2); + let hour = dataString.substring(7, 9); + let min = dataString.substring(9, 11); + return year + '-' + month + '-' + day; + } + + /** + * 日期时间转换 + * @param dataString 需要转换成日期时间的字符串 + */ + function dateFormatter(dataString) { + const monthToNumber = { + JAN: '01', + FEB: '02', + MAR: '03', + APR: '04', + MAY: '05', + JUN: '06', + JUL: '07', + AUG: '08', + SEP: '09', + OCT: '10', + NOV: '11', + DEC: '12', + } + if (!dataString || dataString.length < 11) { + return dataString ? dataString : ''; + } + if (!dataString.substring(7)) { + return dataString ? dataString : ''; + } + if (!monthToNumber.hasOwnProperty(dataString.substring(2, 5).toUpperCase())) { + return dataString ? dataString : ''; + } + + let year = "20" + dataString.substring(5, 7); + let month = monthToNumber[dataString.substring(2, 5).toUpperCase()]; + let day = dataString.substring(0, 2); + let hour = dataString.substring(7, 9); + let min = dataString.substring(9, 11); + return year + '-' + month + '-' + day + ' ' + hour + ':' + min + } + + + /** + * 数据转换处理方法集 + */ + let formatter = { + 'GCTM': function gctmFormatter(flight) { + if (flight['GTDT']) { + if (Array.isArray(flight['GTDT']) && flight['GTDT'].length > 0) { + return timeFormatter(flight['GTDT'][0]['GCTM']); + } else if (Object.prototype.toString.call(flight['GTDT']) === '[object Object]') { + return timeFormatter(flight['GTDT']['GCTM']); + } else { + return ''; + } + } else { + return ''; + } + }, + 'BOTM': function botmFormatter(flight) { + if (flight['BOTM']) { + return timeFormatter(flight['BOTM']); + } else { + return ''; + } + }, + 'ABDG': function abdgFormatter(flight) { + if (flight['ABTM']) { + if (Array.isArray(flight['ABTM']) && flight['ABTM'].length > 0) { + let abdg = []; + for (let i = 0; i < flight['ABTM'].length; i++) { + abdg.push(flight['ABTM'][i]['ABDG']); + } + let set = new Set(abdg); + return Array.from(set).join(','); + } else if (Object.prototype.toString.call(flight['ABTM']) === '[object Object]') { + return flight['ABTM']['ABDG']; + } else { + return ''; + } + } else { + return ''; + } + }, + 'AOTM_A': function aotm_aFormatter(flight) { + if (flight['ABTM']) { + if (Array.isArray(flight['ABTM']) && flight['ABTM'].length > 0) { + for (let i = 0; i < flight['ABTM'].length; i++) { + if (flight['ABTM'][i]['ABOP'] === 'A') { + return timeFormatter(flight['ABTM'][i]['AOTM']); + } + } + } else if (Object.prototype.toString.call(flight['ABTM']) === '[object Object]') { + if (flight['ABTM']['ABOP'] === 'A') { + return timeFormatter(flight['ABTM']['AOTM']); + } else { + return ''; + } + + } else { + return ''; + } + } else { + return ''; + } + }, + 'AOTM_D': function aotm_dFormatter(flight) { + if (flight['ABTM']) { + if (Array.isArray(flight['ABTM']) && flight['ABTM'].length > 0) { + for (let i = 0; i < flight['ABTM'].length; i++) { + if (flight['ABTM'][i]['ABOP'] === 'D') { + return timeFormatter(flight['ABTM'][i]['AOTM']); + } + } + } else if (Object.prototype.toString.call(flight['ABTM']) === '[object Object]') { + if (flight['ABTM']['ABOP'] === 'D') { + return timeFormatter(flight['ABTM']['AOTM']); + } else { + return ''; + } + + } else { + return ''; + } + } else { + return ''; + } + }, + 'BELT': function beltFormatter(flight) { + if (flight['CLDT']) { + if (Array.isArray(flight['CLDT']) && flight['CLDT'].length > 0) { + let belt = []; + for (let i = 0; i < flight['CLDT'].length; i++) { + belt.push(flight['CLDT'][i]['BELT']); + } + let set = new Set(belt); + return Array.from(set).join(','); + } else if (Object.prototype.toString.call(flight['CLDT']) === '[object Object]') { + return flight['CLDT']['BELT']; + } else { + return ''; + } + } else { + return ''; + } + }, + 'CHKC': function chkcFormatter(flight) { + if (flight['CKDT']) { + if (Array.isArray(flight['CKDT']) && flight['CKDT'].length > 0) { + let chkc = []; + for (let i = 0; i < flight['CKDT'].length; i++) { + chkc.push(flight['CKDT'][i]['CHKC']); + } + let set = new Set(chkc); + return Array.from(set).join(','); + } else if (Object.prototype.toString.call(flight['CKDT']) === '[object Object]') { + return flight['CKDT']['CHKC']; + } else { + return ''; + } + } else { + return ''; + } + }, + 'CCTM': function cctmFormatter(flight) { + if (flight['CKDT']) { + if (Array.isArray(flight['CKDT']) && flight['CKDT'].length > 0) { + return timeFormatter(flight['CKDT'][0]['CCTM']); + } else if (Object.prototype.toString.call(flight['CKDT']) === '[object Object]') { + return timeFormatter(flight['CKDT']['CCTM']); + } else { + return ''; + } + } else { + return ''; + } + }, + 'COTM': function cotmFormatter(flight) { + if (flight['CKDT']) { + if (Array.isArray(flight['CKDT']) && flight['CKDT'].length > 0) { + return timeFormatter(flight['CKDT'][0]['COTM']); + } else if (Object.prototype.toString.call(flight['CKDT']) === '[object Object]') { + return timeFormatter(flight['CKDT']['COTM']); + } else { + return ''; + } + } else { + return ''; + } + }, + 'CHTM_ON': function chtmOnFormatter(flight) { + if (flight['CHOT']) { + if (Array.isArray(flight['CHOT']) && flight['CHOT'].length > 0) { + for (let i = 0; i < flight['CHOT'].length; i++) { + if (flight['CHOT'][i]['CHID'] === 'ON') { + return timeFormatter(flight['CHOT'][i]['CHTM']); + } + } + } else if (Object.prototype.toString.call(flight['CHOT']) === '[object Object]') { + if (flight['CHOT']['CHID'] === 'ON') { + return timeFormatter(flight['CHOT']['CHTM']); + } else { + return ''; + } + } else { + return ''; + } + } else { + return ''; + } + }, + 'CHTM_OFF': function chtmOffFormatter(flight) { + if (flight['CHOT']) { + if (Array.isArray(flight['CHOT']) && flight['CHOT'].length > 0) { + for (let i = 0; i < flight['CHOT'].length; i++) { + if (flight['CHOT'][i]['CHID'] === 'OFF') { + return timeFormatter(flight['CHOT'][i]['CHTM']); + } + } + } else if (Object.prototype.toString.call(flight['CHOT']) === '[object Object]') { + if (flight['CHOT']['CHID'] === 'OFF') { + return timeFormatter(flight['CHOT']['CHTM']); + } else { + return ''; + } + } else { + return ''; + } + } else { + return ''; + } + }, + 'LACL': function laclFormatter(flight) { + if (flight['LACL']) { + return timeFormatter(flight['LACL']); + } else { + return ''; + } + }, + 'CHUT': function chutFormatter(flight) { + if (flight['CHDT']) { + if (Array.isArray(flight['CHDT']) && flight['CHDT'].length > 0) { + let chut = []; + for (let i = 0; i < flight['CHDT'].length; i++) { + chut.push(flight['CHDT'][i]['CHUT']); + } + let set = new Set(chut); + return Array.from(set).join(','); + } else if (Object.prototype.toString.call(flight['CHDT']) === '[object Object]') { + return flight['CHDT']['CHUT']; + } else { + return ''; + } + } else { + return ''; + } + }, + 'ACTT': function acttFormatter(flight) { + if (flight['ACTT']) { + return timeFormatter(flight['ACTT']); + } else { + return ''; + } + }, + 'PSST': function psstFormatter(flight) { + if (flight['PSDT']) { + if (Array.isArray(flight['PSDT']) && flight['PSDT'].length > 0) { + let psst = []; + for (let i = 0; i < flight['PSDT'].length; i++) { + psst.push(flight['PSDT'][i]['PSST']); + } + let set = new Set(psst); + return Array.from(set).join(','); + } else if (Object.prototype.toString.call(flight['PSDT']) === '[object Object]') { + return flight['PSDT']['PSST']; + } else { + return ''; + } + } else { + return ''; + } + }, + 'ESTT': function esttFormatter(flight) { + if (flight['ESTT']) { + return timeFormatter(flight['ESTT']); + } else { + return ''; + } + }, + 'MVIN': function mvinFormatter(flight) { + if (flight['MVIN']) { + if (flight['MVIN'] === 'A') { + return '到达'; + } else if (flight['MVIN'] === 'D') { + return '出发'; + } + } else { + return ''; + } + }, + 'ERUT': function erutFormatter(flight) { + if (flight['ERUT']) { + if (Array.isArray(flight['ERUT']) && flight['ERUT'].length > 0) { + let erut = []; + for (let i = 0; i < flight['ERUT'].length; i++) { + erut.push(flight['ERUT'][i]['APCD']); + } + return erut.join(' - '); + } else if (Object.prototype.toString.call(flight['ERUT']) === '[object Object]') { + return flight['ERUT']['APCD']; + } else { + return ''; + } + } else { + return ''; + } + }, + 'FLIN': function flinFormatter(flight) { + const flinChn = { + 'D': '国内', + 'I': '国际', + 'M': '混合', + 'R': '地区' + } + if (flight['FLIN']) { + return flinChn[flight['FLIN']]; + } else { + return ''; + } + }, + 'SODT': function sodtFormatter(flight) { + if (flight['SODT']) { + return timeFormatter(flight['SODT']); + } else { + return ''; + } + }, + 'GTDT': function gateFormatter(flight) { + if (flight['GTDT']) { + if (Array.isArray(flight['GTDT']) && flight['GTDT'].length > 0) { + let gate = []; + for (let i = 0; i < flight['GTDT'].length; i++) { + gate.push(flight['GTDT'][i]['GATE']); + } + let set = new Set(gate); + return Array.from(set).join(','); + } else if (Object.prototype.toString.call(flight['GTDT']) === '[object Object]') { + return flight['GTDT']['GATE']; + } else { + return ''; + } + } else { + return ''; + } + }, + 'PADT': function padtFormatter(flight) { + if (flight['PADT']) { + return timeFormatter(flight['PADT']); + } else { + return ''; + } + }, + 'FLDT': function fldtFormatter(flight) { + if (flight['SODT']) { + return dateWithNotimeFormatter(flight['SODT']); + } else { + return ''; + } + } + } + + /** + * 执行排序 + */ + let TOP_1 = 1000000000000; + let TOP_2 = 2000000000000; + let TOP_3 = 3000000000000; + let TOP_4 = 4000000000000; + let TOP_5 = 5000000000000; + let TOP_6 = 6000000000000; + let TOP_7 = 7000000000000; + let TOP_8 = 8000000000000; + let TOP_9 = 9000000000000; + let TOP_10 = 10000000000000; + let TOP_11 = 11000000000000; + let TOP_12 = 12000000000000; + let TOP_13 = 13000000000000; + let TOP_14 = 14000000000000; + + /** + * 获取航班实际时间 + * @param flight + * @return + */ + function getActualDatetime(flight) { + return flight['ACTT']; + } + + /** + * 获取航班预计时间 + * @param flight + * @return + */ + function getEstimatedDatetime(flight) { + return flight['ESTT'] + } + + /** + * 获取航班计划时间 + * @param flight + * @return + */ + function getScheduledDatetime(flight) { + return flight['SODT'] + } + + + /** + * 判断航班是否是链接航班 + * @param flight + * @return + */ + function isLinked(flight) { + if (flight['preFlight'] && flight['reaFlight']) { + return true + } else { + return false + } + } + + /** + * 判断航班是否是纯离港航班 + * @param flight + * @return + */ + function isDeptFlight(flight) { + if (!flight['preFlight'] && flight['reaFlight']) { + return true + } else { + return false + } + + } + + /** + * 判断航班是否是纯到港航班 + * @param flight + * @return + */ + function isArriFlight(flight) { + if (flight['preFlight'] && !flight['reaFlight']) { + return true; + } else { + return false; + } + } + + /** + * 判断航班是否已经前站起飞 + * @param flight + * @return + */ + function isFlying(flight) { + if (isArriFlight(flight) || isLinked(flight)) { + if (flight['preFlight']['PADT']) { + return true; + } else { + return false; + } + } else { + return false; + } + } + + + /** + * 判断航班是否取消 + * @param flight + * @return + */ + function isCancled(flight) { + if (isArriFlight(flight)) { + if (flight['preFlight']['CNCL']) { + return true; + } else { + return false; + } + } else if (isDeptFlight(flight)) { + if (flight['reaFlight']['CNCL']) { + return true; + } else { + return false; + } + } else { + return false; + } + } + + /** + * 判断航班是否延误(只针对纯离港航班或链接航班中的离港航班) + * @param flight + * @return + */ + function isDelayed(flight) { + if (isDeptFlight(flight) || isLinked(flight)) { + if (flight['reaFlight']['DELY']) { + return true + } else { + return false + } + } else { + return false; + } + } + + /** + * 判断航班是否已经执行完成 + * @param flight + * @return + */ + function isDone(flight) { + if (isLinked(flight) || isDeptFlight(flight)) { + if (!getActualDatetime(flight['reaFlight'])) { + return false; + } else { + return true; + } + } else if (isArriFlight(flight)) { + if (!getActualDatetime(flight['preFlight'])) { + return false; + } else { + return true; + } + } else { + return false; + } + } + + /** + * 判断航班是否开始登机 + * @param flight + * @return + */ + function startBoading(flight) { + if (isLinked(flight) || isDeptFlight(flight)) { + if (!flight['reaFlight']['BOTM']) { + return false; + } else { + return true; + } + } else { + return false; + } + + } + + /** + * 判断航班是否正在登机中 + * @param flight + * @return + */ + function isBoading(flight) { + if (isLinked(flight) || isDeptFlight(flight)) { + if (flight['reaFlight']['BOTM'] && !(flight['reaFlight']['GTDT'] && flight['reaFlight']['GTDT']['GCTM'])) { + return true; + } else { + return false; + } + } else { + return false; + } + } + + + /** + * 判断航班是否登机结束 + * @param flight + * @return + */ + function isOverBoading(flight) { + if (isLinked(flight) || isDeptFlight(flight)) { + if (flight['reaFlight']['GTDT'] && flight['reaFlight']['GTDT']['GCTM']) { + return true; + } else { + return false; + } + } else { + return false; + } + } + + /** + * 行排序规则方法 + * @param flight + * @return + */ + function sequence(flight) { + let dateTag = 10; + let dateToCompare = new Date().getTime(); + if (!isCancled(flight) && !isDone(flight) && isDelayed(flight)) { + if (isLinked(flight)) { + if (getActualDatetime(flight['preFlight']) && !getActualDatetime(flight['reaFlight'])) { + dateToCompare = new Date(dateFormatter(getActualDatetime(flight['preFlight']))).getTime(); + dateTag = TOP_1; + } + else { + dateToCompare = new Date(dateFormatter(getScheduledDatetime(flight['reaFlight']))).getTime(); + dateTag = TOP_2; + } + } + else { + dateToCompare = new Date(dateFormatter(getScheduledDatetime(flight['reaFlight']))).getTime(); + dateTag = TOP_3; + } + return dateToCompare + dateTag; + } + if (!isCancled(flight) && !isDone(flight) && isBoading(flight)) { + dateToCompare = new Date(dateFormatter(getScheduledDatetime(flight['reaFlight']))).getTime(); + dateTag = TOP_4; + return dateToCompare + dateTag; + } + if (!isCancled(flight) && !isDone(flight) && isFlying(flight) && !getActualDatetime(flight['preFlight'])) { + if (getEstimatedDatetime(flight['preFlight'])) { + dateToCompare = new Date(dateFormatter(getEstimatedDatetime(flight['preFlight']))).getTime(); + } else { + dateToCompare = new Date(dateFormatter(getScheduledDatetime(flight['preFlight']))).getTime(); + } + dateTag = TOP_5; + return dateToCompare + dateTag; + } + if (!isCancled(flight) && !isDone(flight) && isLinked(flight) && getActualDatetime(flight['preFlight']) && !getActualDatetime(flight['reaFlight'])) { + dateToCompare = new Date(dateFormatter(getActualDatetime(flight['preFlight']))).getTime(); + dateTag = TOP_6; + return dateToCompare + dateTag; + } + if (!isCancled(flight) && !isDone(flight) && isDeptFlight(flight) && !startBoading(flight)) { + dateToCompare = new Date(dateFormatter(getScheduledDatetime(flight['reaFlight']))).getTime(); + dateTag = TOP_7; + return dateToCompare + dateTag; + } + if (!isCancled(flight) && isArriFlight(flight) && isDone(flight)) { + dateToCompare = new Date(dateFormatter(getActualDatetime(flight['preFlight']))).getTime(); + dateTag = TOP_8; + return dateToCompare + dateTag; + } + if (!isCancled(flight) && !isDone(flight) && isOverBoading(flight)) { + dateToCompare = new Date(dateFormatter(getScheduledDatetime(flight['reaFlight']))).getTime(); + dateTag = TOP_9; + return dateToCompare + dateTag; + } + if (!isCancled(flight) && !isDone(flight) && !isFlying(flight)) { + if (isLinked(flight)) { + dateToCompare = new Date(dateFormatter(getScheduledDatetime(flight['reaFlight']))).getTime(); + dateTag = TOP_10; + } else if (isArriFlight(flight)) { + dateToCompare = new Date(dateFormatter(getScheduledDatetime(flight['preFlight']))).getTime(); + dateTag = TOP_11; + } + return dateToCompare + dateTag; + } + if (!isCancled(flight) && isDone(flight) && (isLinked(flight) || isDeptFlight(flight))) { + dateToCompare = new Date(dateFormatter(getActualDatetime(flight['reaFlight']))).getTime(); + dateTag = TOP_12; + return dateToCompare + dateTag; + } + if (isCancled(flight)) { + if (isDeptFlight(flight)) { + dateToCompare = new Date(dateFormatter(getScheduledDatetime(flight['reaFlight']))).getTime(); + } else { + dateToCompare = new Date(dateFormatter(getScheduledDatetime(flight['preFlight']))).getTime(); + } + + dateTag = TOP_13; + return dateToCompare + dateTag; + } + return TOP_14 + } + + /** + * 查找链接航班 + */ + let combined_raw_flights = []; + let copy_raw_flights = []; + raw_data.forEach(element => { + copy_raw_flights.push(Object.assign({}, element)) + }) + for (let i = 0; i < copy_raw_flights.length; i++) { + if (copy_raw_flights[i]['MVIN'] === 'A') { + if (copy_raw_flights[i]['TAID']) { + let index = copy_raw_flights.findIndex(val => { return val['FLID'] === copy_raw_flights[i]['TAID'] }); + if (index > -1) { + copy_raw_flights[i]['isLinked'] = true; + copy_raw_flights[i]['linkFlight'] = copy_raw_flights[index]; + if (!copy_raw_flights[i]['linkFlight']['TAID']) { + copy_raw_flights[i]['linkFlight']['TAID'] = copy_raw_flights[i]['FLID']; + } + copy_raw_flights.splice(index, 1); + i--; + } + } + } + } + copy_raw_flights.forEach(element => { + let flights_item = {}; + if (element['MVIN'] === 'A' && !element['isLinked']) { + flights_item['preFlight'] = element; + } else if (element['MVIN'] === 'D' && !element['isLinked']) { + flights_item['reaFlight'] = element; + } else { + flights_item['reaFlight'] = element['linkFlight']; + delete element['linkFlight']; + delete element['isLinked']; + flights_item['preFlight'] = element; + } + + combined_raw_flights.push(flights_item); + }); + + /** + * 数据转换 + */ + let combined_data = []; + combined_raw_flights.forEach(element => { + let render_flight = {}, + render_pre_flight = {}, + render_rea_flight = {}, + flights_item = Object.assign({}, element) + + try { + if (flights_item['preFlight'] && !flights_item['reaFlight']) { + render_flight['FLID'] = flights_item['preFlight']['FLID'] + for (let i = 0; i < col_lists.length; i++) { + let key = col_lists[i]['COL_CODE']; + render_flight[key] = formatter.hasOwnProperty(key) ? formatter[key](flights_item['preFlight']) : flights_item['preFlight'][key]; + } + flights_item['renderFlight'] = render_flight; + } else if (!flights_item['preFlight'] && flights_item['reaFlight']) { + render_flight['FLID'] = flights_item['reaFlight']['FLID'] + for (let i = 0; i < col_lists.length; i++) { + let key = col_lists[i]['COL_CODE'] + render_flight[key] = formatter.hasOwnProperty(key) ? formatter[key](flights_item['reaFlight']) : flights_item['reaFlight'][key]; + } + flights_item['renderFlight'] = render_flight; + } else { + render_flight['FLID'] = flights_item['preFlight']['FLID'] + ' / ' + flights_item['reaFlight']['FLID']; + render_pre_flight['FLID'] = flights_item['preFlight']['FLID']; + render_rea_flight['FLID'] = flights_item['reaFlight']['FLID']; + for (let i = 0; i < col_lists.length; i++) { + let preHasValue, reaHasValue; + let key = col_lists[i]['COL_CODE']; + if (formatter.hasOwnProperty(key)) { + preHasValue = formatter[key](flights_item['preFlight']); + reaHasValue = formatter[key](flights_item['reaFlight']); + } else { + preHasValue = flights_item['preFlight'][key]; + reaHasValue = flights_item['reaFlight'][key]; + } + + if (preHasValue && !reaHasValue) { + if (key === 'SODT' || key === 'ESTT' || key === 'ACTT') { + render_flight[key] = preHasValue + ' / '; + } else { + render_flight[key] = preHasValue; + } + } else if (!preHasValue && reaHasValue) { + if (key === 'SODT' || key === 'ESTT' || key === 'ACTT') { + render_flight[key] = ' / ' + reaHasValue; + } else { + render_flight[key] = reaHasValue; + } + } else if (preHasValue && reaHasValue) { + if (preHasValue === reaHasValue) { + if (key === 'FLNO') { + render_flight[key] = preHasValue + ' / ' + reaHasValue; + } else { + render_flight[key] = preHasValue; + } + } else { + if (key === 'ERUT') { + render_flight[key] = preHasValue.split(' - ').slice(0, -1).join(' - ') + ' - ' + reaHasValue; + } else { + render_flight[key] = preHasValue + ' / ' + reaHasValue; + } + } + } else { + render_flight[key] = ''; + } + render_pre_flight[key] = preHasValue; + render_rea_flight[key] = reaHasValue; + } + flights_item['renderPreFlight'] = render_pre_flight; + flights_item['renderReaFlight'] = render_rea_flight; + flights_item['renderFlight'] = Object.assign({}, render_flight); + } + } catch (error) { + console.log('数据有误,处理失败,请检查数据'); + throw error; + } finally { + combined_data.push(flights_item); + } + }); + + /** + * 基础数据转换 + */ + let coustom_data = []; + combined_data.forEach(item => { + try { + if (isArriFlight(item) || isDeptFlight(item)) { + //航线处理 + let erutCodeArray = item['renderFlight']['ERUT'].split(' - '); + let erutChnArray = [] + for (let i = 0; i < erutCodeArray.length; i++) { + try { + let airportIndex = airports.findIndex(val => val.airportCodeIata === erutCodeArray[i]); + if(airportIndex>-1){ + if(airports[airportIndex].briefNameChn){ + erutChnArray.push(airports[airportIndex].briefNameChn); + }else{ + erutChnArray.push(airports[airportIndex].airportNameChn); + } + }else{ + erutChnArray.push(erutCodeArray[i]); + } + } catch (error) { + erutChnArray.push(erutCodeArray[i]); + } + } + item['renderFlight']['ERUT'] = erutChnArray.join(' - '); + //航空公司处理 + let airlineIndex = airlines.findIndex(val => val.airlineCode === item['renderFlight']['ALCD']); + item['renderFlight']['ALCD'] = airlines[airlineIndex].airlineName; + //运营状态处理 + item['renderFlight']['FTSS'] = flightStatus.find(val => val.sttc === item['renderFlight']['FTSS']).stdc; + //航班类型处理 + item['renderFlight']['FLTY'] = flightTypes.find(val => val.flightTypeCode === item['renderFlight']['FLTY']).flightTypeNameCn; + } else { + //航线处理 + let erutLinkCodeArray = item['renderFlight']['ERUT'].split(' - '); + let erutLinkChnArray = [] + for (let i = 0; i < erutLinkCodeArray.length; i++) { + try { + let airportIndex = airports.findIndex(val => val.airportCodeIata === erutLinkCodeArray[i]); + if(airportIndex>-1){ + if(airports[airportIndex].briefNameChn){ + erutLinkChnArray.push(airports[airportIndex].briefNameChn); + }else{ + erutLinkChnArray.push(airports[airportIndex].airportNameChn); + } + }else{ + erutLinkChnArray.push(erutLinkCodeArray[i]); + } + } catch (error) { + erutLinkChnArray.push(erutLinkCodeArray[i]); + } + } + item['renderFlight']['ERUT'] = erutLinkChnArray.join(' - '); + //航空公司处理 + let airlineLinkIndex = airlines.findIndex(val => val.airlineCode === item['renderFlight']['ALCD']); + item['renderFlight']['ALCD'] = airlines[airlineLinkIndex].airlineName; + //运营状态处理 + let ftssLinkCodeArray = item['renderFlight']['FTSS'].split(' / '); + let ftssLinkChnArray = []; + for (let i = 0; i < ftssLinkCodeArray.length; i++) { + ftssLinkChnArray.push(flightStatus.find(val => val.sttc === ftssLinkCodeArray[i]).stdc) + } + item['renderFlight']['FTSS'] = ftssLinkChnArray.join(' / '); + + //航班类型处理 + let fltyLinkCodeArray = item['renderFlight']['FLTY'].split(' / '); + let fltyLinkChnArray = []; + for (let i = 0; i < fltyLinkCodeArray.length; i++) { + fltyLinkChnArray.push(flightTypes.find(val => val.flightTypeCode === fltyLinkCodeArray[i]).flightTypeNameCn) + } + item['renderFlight']['FLTY'] = fltyLinkChnArray.join(' / '); + + //航线处理 + let erutPreCodeArray = item['renderPreFlight']['ERUT'].split(' - '); + let erutPreChnArray = [] + for (let i = 0; i < erutPreCodeArray.length; i++) { + try { + let airportIndex = airports.findIndex(val => val.airportCodeIata === erutPreCodeArray[i]); + if(airportIndex>-1){ + if(airports[airportIndex].briefNameChn){ + erutPreChnArray.push(airports[airportIndex].briefNameChn); + }else{ + erutPreChnArray.push(airports[airportIndex].airportNameChn); + } + }else{ + erutPreChnArray.push(erutPreCodeArray[i]); + } + } catch (error) { + erutPreChnArray.push(erutPreCodeArray[i]); + } + } + item['renderPreFlight']['ERUT'] = erutPreChnArray.join(' - '); + //航空公司处理 + let airlinePreIndex = airlines.findIndex(val => val.airlineCode === item['renderPreFlight']['ALCD']); + item['renderPreFlight']['ALCD'] = airlines[airlinePreIndex].airlineName; + //运营状态处理 + item['renderPreFlight']['FTSS'] = flightStatus.find(val => val.sttc === item['renderPreFlight']['FTSS']).stdc + //航班类型处理 + item['renderPreFlight']['FLTY'] = flightTypes.find(val => val.flightTypeCode === item['renderPreFlight']['FLTY']).flightTypeNameCn; + + + //航线处理 + let erutReaCodeArray = item['renderReaFlight']['ERUT'].split(' - '); + let erutReaChnArray = [] + for (let i = 0; i < erutReaCodeArray.length; i++) { + try { + let airportIndex = airports.findIndex(val => val.airportCodeIata === erutReaCodeArray[i]); + if(airportIndex>-1){ + if(airports[airportIndex].briefNameChn){ + erutReaChnArray.push(airports[airportIndex].briefNameChn); + }else{ + erutReaChnArray.push(airports[airportIndex].airportNameChn); + } + }else{ + erutReaChnArray.push(erutReaCodeArray[i]); + } + } catch (error) { + erutReaChnArray.push(erutReaCodeArray[i]); + } + } + item['renderReaFlight']['ERUT'] = erutReaChnArray.join(' - '); + //航空公司处理 + let airlineReaIndex = airlines.findIndex(val => val.airlineCode === item['renderReaFlight']['ALCD']); + item['renderReaFlight']['ALCD'] = airlines[airlineReaIndex].airlineName; + //运营状态处理 + item['renderReaFlight']['FTSS'] = flightStatus.find(val => val.sttc === item['renderReaFlight']['FTSS']).stdc + //航班类型处理 + item['renderReaFlight']['FLTY'] = flightTypes.find(val => val.flightTypeCode === item['renderReaFlight']['FLTY']).flightTypeNameCn; + } + } catch (error) { + console.log('基础数据转换有误,处理失败,请检查数据'); + throw error; + } finally { + coustom_data.push(item) + } + }) + combined_data = coustom_data; + + + combined_data.forEach(element => { + element['ORDER'] = sequence(element); + }) + combined_data = combined_data.sort(function (a, b) { + return (a['ORDER'] - b['ORDER']); + }) + + postMessage(combined_data); +} \ No newline at end of file diff --git a/src/index.html b/src/index.html index 990863c..42ba1a7 100644 --- a/src/index.html +++ b/src/index.html @@ -3,40 +3,52 @@ + + + + 航班信息查询系统 + + + diff --git a/src/polyfills.ts b/src/polyfills.ts index 0f92b27..00250f1 100644 --- a/src/polyfills.ts +++ b/src/polyfills.ts @@ -38,7 +38,7 @@ import 'core-js/es6/set'; // import 'classlist.js'; // Run `npm install --save classlist.js`. /** IE10 and IE11 requires the following for the Reflect API. */ -// import 'core-js/es6/reflect'; +import 'core-js/es6/reflect'; /** Evergreen browsers require these. **/