diff --git a/package.json b/package.json index a70fabe..86540aa 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,6 @@ "layui-laydate": "^5.0.9", "ng-zorro-antd": "^1.8.0", "ngx-color-picker": "^7.0.1", - "ngx-web-worker": "^7.0.0", "rxjs": "^6.0.0", "zone.js": "^0.8.26", "ztree": "^3.5.24" diff --git a/src/app/pages/historical-data/historical-data.component.ts b/src/app/pages/historical-data/historical-data.component.ts index e809bfe..142e535 100644 --- a/src/app/pages/historical-data/historical-data.component.ts +++ b/src/app/pages/historical-data/historical-data.component.ts @@ -5,7 +5,7 @@ import { HttpClientService } from '../../services/http-client.service'; import { BasicDataService } from '../../services/basic-data-service'; import { OperateSpinServiceService } from '../../services/operate-spin-service.service'; -import { DynamicFlightOrder } from '../../utils/dynamic-flight-order'; +import { FlightOrder } from '../../utils/flight-order'; import { FlightsDataHandle } from '../../utils/flights-data-handle'; import * as $ from 'jquery'; @@ -28,7 +28,7 @@ export class HistoricalDataComponent implements OnInit { this.operateSpinServiceService.showSpin(); this.changeDetectorRef.detach(); } - public orderHandle = new DynamicFlightOrder(); + public orderHandle = new FlightOrder(); public dataHandle = new FlightsDataHandle(); public tabClose: boolean = true; diff --git a/src/app/pages/main/main.component.html b/src/app/pages/main/main.component.html index 1984495..0a4dcca 100644 --- a/src/app/pages/main/main.component.html +++ b/src/app/pages/main/main.component.html @@ -3,7 +3,7 @@
- @@ -15,7 +15,7 @@ 查找定位 - +
@@ -101,42 +101,6 @@
- -
diff --git a/src/app/pages/main/main.component.ts b/src/app/pages/main/main.component.ts index 6914221..82186e2 100644 --- a/src/app/pages/main/main.component.ts +++ b/src/app/pages/main/main.component.ts @@ -1,7 +1,5 @@ import { Component, OnInit, ViewChild, Renderer2 } from '@angular/core'; import { NavigationEnd, Router } from '@angular/router'; -import { WebWorkerService } from 'ngx-web-worker'; - import { ToastService } from '../../components/toast/toast.service'; import { ToastConfig, ToastType } from '../../components/toast/toast-model'; @@ -10,28 +8,23 @@ import { BasicDataService } from '../../services/basic-data-service'; import { OperateSpinServiceService } from '../../services/operate-spin-service.service'; import { WebsocketService } from '../../services/websocket.service'; -import { DynamicFlightOrder } from '../../utils/dynamic-flight-order'; +import { FlightOrder } from '../../utils/flight-order'; import { FlightsDataHandle } from '../../utils/flights-data-handle'; import { CellColorHandle } from '../../utils/cell-color-handle'; import { AlertMessageHandle } from '../../utils/alert-message-handle'; +import { Utils } from '../../utils/utils'; -import dateFormatter from '../../utils/date-formatter'; -import webWorkerHandle from '../../utils/web-worker-handle'; - -import { filter } from 'rxjs/operators'; import * as $ from 'jquery'; @Component({ selector: 'app-main', templateUrl: './main.component.html', - styleUrls: ['./main.component.scss'], - providers: [WebWorkerService] + styleUrls: ['./main.component.scss'] }) export class MainComponent implements OnInit { constructor( private router: Router, private renderer2: Renderer2, - private webWorkerService: WebWorkerService, private basicDataService: BasicDataService, private operateSpinServiceService: OperateSpinServiceService, private httpCilent: HttpClientService, @@ -64,10 +57,11 @@ export class MainComponent implements OnInit { // } // ) } - public orderHandle = new DynamicFlightOrder(); + public orderHandle = new FlightOrder(); public dataHandle = new FlightsDataHandle(); public cellColorHandle = new CellColorHandle(); public alertMessageHandle = new AlertMessageHandle(); + public utils = new Utils(); public tabClose: boolean = true; @@ -268,10 +262,9 @@ export class MainComponent implements OnInit { }) //计算可视区域高度,渲染数据 - this.calcVisibleCount() this.wait_render_data = combined_data; this.selectedFilterData = combined_data; - this.render_data = this.wait_render_data.slice(this.start, this.end); + this.calcVisibleCount() //默认选中第一条 if (this.render_data.length > 0) { @@ -354,6 +347,8 @@ export class MainComponent implements OnInit { */ refresh() { this.operateSpinServiceService.showSpin(); + this.positionedArray = []; //定位数组为清空 + this.positionArrayIndex = 0; //定位元素Index归零 this.canHandleDynamicMessage = false; this.canHandleDynamicAlert = false; this.SEARCH = ''; //手动输入条件 @@ -369,8 +364,6 @@ export class MainComponent implements OnInit { FTSS: '', //运营状态 TRML: '', //航站楼 Abnormal_state: '', //异常状态 - // Start_time: '9', - // End_time: '9', FHAG: '', //机坪代理 MHAG: '', //维护代理 PHAG: '', //旅客代理 @@ -541,11 +534,11 @@ export class MainComponent implements OnInit { if (this.FLT_POS === 1) { this.LAST_SEL_COL = this.SEL_COL; this.LASTSEARCH = this.SEARCH; - // this.selectChange('filter') + // this.selectChange('filter'); this.operateSpinServiceService.showSpin(); this.inputFilter(this.selectedFilterData); } else { - this.inputPosition(this.render_data) + this.inputPosition(this.wait_render_data) } } @@ -554,6 +547,8 @@ export class MainComponent implements OnInit { */ selectChange(type) { if (type === 'filter') { + this.positionedArray = []; + this.positionArrayIndex = 0; this.operateSpinServiceService.showSpin(); } @@ -814,64 +809,150 @@ export class MainComponent implements OnInit { positionArrayIndex: number = 0; inputPosition(filterData) { - let transArray = [] + let hasSearchData: boolean = false; + let hasPositionedEle: boolean = false; if (this.SEL_COL) { let sel_col = this.SEL_COL; - filterData.forEach(element => { - if (element['renderFlight'][sel_col]) { - if (element['renderFlight'][sel_col].toString().match(new RegExp(this.SEARCH, 'i'))) { - transArray.push(element); + for (let i = 0; i < filterData.length; i++) { + if (i === filterData.length - 1) { + this.positionedArray = []; + this.positionArrayIndex = 0; + } + let fliterElement = filterData[i]; + if (fliterElement['renderFlight'][sel_col]) { + if (fliterElement['renderFlight'][sel_col].toString().match(new RegExp(this.SEARCH, 'i'))) { + let hasThisEle: boolean = false; + hasSearchData = true; + for (let k = 0; k < this.positionedArray.length; k++) { + let positionedElement = this.positionedArray[k]; + let diffResult = this.utils.diff(positionedElement, fliterElement); + if (diffResult) { + hasThisEle = true; + break; + } else { + continue; + } + }; + if (!hasThisEle) { + hasPositionedEle = true; + this.row_state = fliterElement; + this.positionArrayIndex = i; + this.positionedArray.push(fliterElement); + break; + } + } else { + continue; } } else { if (!this.SEARCH) { - transArray.push(element); + let hasThisEle: boolean = false; + hasSearchData = true; + for (let k = 0; k < this.positionedArray.length; k++) { + let positionedElement = this.positionedArray[k]; + let diffResult = this.utils.diff(positionedElement, fliterElement); + if (diffResult) { + hasThisEle = true; + break; + } else { + continue; + } + }; + if (!hasThisEle) { + hasPositionedEle = true; + this.row_state = fliterElement; + this.positionArrayIndex = i; + this.positionedArray.push(fliterElement); + break; + } + } else { + continue; } } - }); + } } else { - filterData.forEach(element => { - let cols = this.col_lists; - for (let i = 0; i < cols.length; i++) { - if (element['renderFlight'][cols[i]['COL_CODE']]) { - if (element['renderFlight'][cols[i]['COL_CODE']].toString().match(new RegExp(this.SEARCH, 'i'))) { - transArray.push(element) + let cols = this.render_col_lists; + for (let i = 0; i < filterData.length; i++) { + if (i === filterData.length - 1) { + this.positionedArray = []; + this.positionArrayIndex = 0; + } + let positionIsOk: boolean = false; + let filterElement = filterData[i]; + for (let j = 0; j < cols.length; j++) { + let elementCol = cols[j]; + if (filterElement['renderFlight'][elementCol['COL_CODE']]) { + if (filterElement['renderFlight'][elementCol['COL_CODE']].toString().match(new RegExp(this.SEARCH, 'i'))) { + let hasThisEle: boolean = false; + hasSearchData = true; + for (let k = 0; k < this.positionedArray.length; k++) { + let positionedElement = this.positionedArray[k]; + let diffResult = this.utils.diff(positionedElement, filterElement); + if (diffResult) { + hasThisEle = true; + break; + } else { + continue; + } + }; + if (!hasThisEle) { + hasPositionedEle = true; + positionIsOk = true; + this.row_state = filterElement; + this.positionArrayIndex = i; + this.positionedArray.push(filterElement); + } break; } else { continue; } } else { - if (this.SEARCH) { - continue; - } else { - transArray.push(element) + if (!this.SEARCH) { + let hasThisEle: boolean = false; + hasSearchData = true; + for (let k = 0; k < this.positionedArray.length; k++) { + let positionedElement = this.positionedArray[k]; + let diffResult = this.utils.diff(positionedElement, filterElement); + if (diffResult) { + hasThisEle = true; + break; + } else { + continue; + } + }; + if (!hasThisEle) { + hasPositionedEle = true; + positionIsOk = true; + this.row_state = filterElement; + this.positionArrayIndex = i; + this.positionedArray.push(filterElement); + } break; + } else { + continue; } } } - }); - } - - if (transArray.length > 0) { - if (transArray.toString() == this.positionedArray.toString()) { - this.positionArrayIndex++; - if (this.positionArrayIndex === this.positionedArray.length) { - this.positionArrayIndex = 0; + if (positionIsOk) { + break; } - this.row_state = this.positionedArray[this.positionArrayIndex]; - } else { - this.positionedArray = transArray; - this.positionArrayIndex = 0; - this.row_state = this.positionedArray[this.positionArrayIndex]; } - } else { - alert('没有搜索到相关数据'); } - let tr = $(".selected"); - let objTr = tr[0]; - if (objTr) { - $("#table-container").animate({ scrollTop: objTr.offsetTop - 42 }, "slow"); + if (!hasSearchData) { + alert("没有搜索到相关数据"); } + if (hasPositionedEle) { + const scrollTop = this.positionArrayIndex * this.trItemHeight + this.tableBody.nativeElement.scrollTop = scrollTop; + } + } + + /** + * 重置定位数组 + */ + resetPositionArray() { + this.positionedArray = []; + this.positionArrayIndex = 0; } /** @@ -1134,37 +1215,37 @@ export class MainComponent implements OnInit { getStopoverNotes(flight) { if (this.orderHandle.isLinked(flight)) { if (flight['preFlight']['ACTT'] && flight['reaFlight']['ESTT']) { - if (new Date(dateFormatter(flight['reaFlight']['ESTT'])).getTime() - new Date(dateFormatter(flight['preFlight']['ACTT'])).getTime() > 3600000) { + if (new Date(this.utils.dateFormatter(flight['reaFlight']['ESTT'])).getTime() - new Date(this.utils.dateFormatter(flight['preFlight']['ACTT'])).getTime() > 3600000) { return false; } else { return true; } } else if (flight['preFlight']['ACTT'] && flight['reaFlight']['SODT']) { - if (new Date(dateFormatter(flight['reaFlight']['SODT'])).getTime() - new Date(dateFormatter(flight['preFlight']['ACTT'])).getTime() > 3600000) { + if (new Date(this.utils.dateFormatter(flight['reaFlight']['SODT'])).getTime() - new Date(this.utils.dateFormatter(flight['preFlight']['ACTT'])).getTime() > 3600000) { return false; } else { return true; } } else if (flight['preFlight']['ESTT'] && flight['reaFlight']['ESTT']) { - if (new Date(dateFormatter(flight['reaFlight']['ESTT'])).getTime() - new Date(dateFormatter(flight['preFlight']['ESTT'])).getTime() > 3600000) { + if (new Date(this.utils.dateFormatter(flight['reaFlight']['ESTT'])).getTime() - new Date(this.utils.dateFormatter(flight['preFlight']['ESTT'])).getTime() > 3600000) { return false; } else { return true; } } else if (flight['preFlight']['ESTT'] && flight['reaFlight']['SODT']) { - if (new Date(dateFormatter(flight['reaFlight']['SODT'])).getTime() - new Date(dateFormatter(flight['preFlight']['ESTT'])).getTime() > 3600000) { + if (new Date(this.utils.dateFormatter(flight['reaFlight']['SODT'])).getTime() - new Date(this.utils.dateFormatter(flight['preFlight']['ESTT'])).getTime() > 3600000) { return false; } else { return true; } } else if (flight['preFlight']['SODT'] && flight['reaFlight']['ESTT']) { - if (new Date(dateFormatter(flight['reaFlight']['ESTT'])).getTime() - new Date(dateFormatter(flight['preFlight']['SODT'])).getTime() > 3600000) { + if (new Date(this.utils.dateFormatter(flight['reaFlight']['ESTT'])).getTime() - new Date(this.utils.dateFormatter(flight['preFlight']['SODT'])).getTime() > 3600000) { return false; } else { return true; } } else if (flight['preFlight']['SODT'] && flight['reaFlight']['SODT']) { - if (new Date(dateFormatter(flight['reaFlight']['SODT'])).getTime() - new Date(dateFormatter(flight['preFlight']['SODT'])).getTime() > 3600000) { + if (new Date(this.utils.dateFormatter(flight['reaFlight']['SODT'])).getTime() - new Date(this.utils.dateFormatter(flight['preFlight']['SODT'])).getTime() > 3600000) { return false; } else { return true; @@ -1200,50 +1281,4 @@ export class MainComponent implements OnInit { }, 10) } } -} - - - - -// if (this.SEL_COL) { -// let sel_col = this.SEL_COL; -// for (let i = 0; i < filterData.length; i++) { -// let fliterElement = filterData[i]; -// if (fliterElement['renderFlight'][sel_col]) { -// if (fliterElement['renderFlight'][sel_col].toString().match(new RegExp(this.SEARCH, 'i'))) { -// let positionedIsMarry = false; -// for (let k = 0; k < this.positionedArray.length; k++) { -// let positionedElement = this.positionedArray[k]; -// if (positionedElement['preFlight'] && !positionedElement['reaFlight']) { -// if (fliterElement['preFlight'] && !fliterElement['reaFlight']) { -// if (positionedElement['preFlight']['FLID'] === fliterElement['preFlight']['FLID']) { -// positionedIsMarry = true; -// break; -// } -// } -// } else if (!positionedElement['preFlight'] && positionedElement['reaFlight']) { -// if (!fliterElement['preFlight'] && fliterElement['reaFlight']) { -// if (positionedElement['reaFlight']['FLID'] === fliterElement['reaFlight']['FLID']) { -// positionedIsMarry = true; -// break; -// } -// } -// } else { -// if (fliterElement['preFlight'] && fliterElement['reaFlight']) { -// if ((positionedElement['preFlight']['FLID'] === fliterElement['preFlight']['FLID']) && (positionedElement['reaFlight']['FLID'] === fliterElement['reaFlight']['FLID'])) { -// positionedIsMarry = true; -// break; -// } -// } -// } -// }; - -// if(!positionedIsMarry){ -// this.row_state = fliterElement; -// this.positionedArray.push(fliterElement); -// break; -// } -// } -// } -// } -// } \ No newline at end of file +} \ No newline at end of file diff --git a/src/app/pages/main/related-tab/related-tab.component.ts b/src/app/pages/main/related-tab/related-tab.component.ts index 281decf..4ed7fa7 100644 --- a/src/app/pages/main/related-tab/related-tab.component.ts +++ b/src/app/pages/main/related-tab/related-tab.component.ts @@ -1,6 +1,5 @@ import { Component, OnInit, Input } from '@angular/core'; -import timeFormatter from '../../../utils/time-formatter'; -import dateFormatter from '../../../utils/date-formatter'; +import { Utils } from '../../../utils/utils'; @Component({ selector: 'app-related-tab', @@ -8,6 +7,8 @@ import dateFormatter from '../../../utils/date-formatter'; styleUrls: ['./related-tab.component.scss'] }) export class RelatedTabComponent implements OnInit { + private utils = new Utils(); + public lines; public airports; public predelay; @@ -37,12 +38,12 @@ export class RelatedTabComponent implements OnInit { if (this.lines.preFlight && !this.lines.reaFlight) { this.airports = this.lines.renderFlight.ERUT.split(' - '); for (let i = 0; i < this.airports.length; i++) { - this.airports[i] = { airport: this.airports[i], scdt: timeFormatter(this.lines.preFlight.ERUT[i].SCDT), scat: timeFormatter(this.lines.preFlight.ERUT[i].SCAT) } + this.airports[i] = { airport: this.airports[i], scdt: this.utils.timeFormatter(this.lines.preFlight.ERUT[i].SCDT), scat: this.utils.timeFormatter(this.lines.preFlight.ERUT[i].SCAT) } } } else if (!this.lines.preFlight && this.lines.reaFlight) { this.airports = this.lines.renderFlight.ERUT.split(' - '); for (let i = 0; i < this.airports.length; i++) { - this.airports[i] = { airport: this.airports[i], scdt: timeFormatter(this.lines.reaFlight.ERUT[i].SCDT), scat: timeFormatter(this.lines.reaFlight.ERUT[i].SCAT) } + this.airports[i] = { airport: this.airports[i], scdt: this.utils.timeFormatter(this.lines.reaFlight.ERUT[i].SCDT), scat: this.utils.timeFormatter(this.lines.reaFlight.ERUT[i].SCAT) } } } else { this.lines.preFlight.ERUT[this.lines.preFlight.ERUT.length - 1]['SCDT'] = this.lines.reaFlight.ERUT[0]['SCDT']; @@ -50,7 +51,7 @@ export class RelatedTabComponent implements OnInit { let linkAirport = this.lines.preFlight.ERUT.concat(concatArray) this.airports = this.lines.renderFlight.ERUT.split(' - '); for (let i = 0; i < this.airports.length; i++) { - this.airports[i] = { airport: this.airports[i], scdt: timeFormatter(linkAirport[i].SCDT), scat: timeFormatter(linkAirport[i].SCAT) } + this.airports[i] = { airport: this.airports[i], scdt: this.utils.timeFormatter(linkAirport[i].SCDT), scat: this.utils.timeFormatter(linkAirport[i].SCAT) } } } @@ -77,12 +78,12 @@ export class RelatedTabComponent implements OnInit { if (fimsFlightstatusDefinition) { this.predelay['TYPE'] = fimsFlightstatusDefinition.ddsc; } - this.predelay['STRT'] = new Date(dateFormatter(this.predelay['STRT'])).getTime(); + this.predelay['STRT'] = new Date(this.utils.dateFormatter(this.predelay['STRT'])).getTime(); this.predelay['DURA'] = parseInt(this.predelay['DURA'].substr(0, 2)) * 3600000 + parseInt(this.predelay['DURA'].substr(2, 3)) * 60000 + this.predelay['STRT'] } if (cancleIndex > -1) { let cancle = this.lines.preFlight['ABN'][cancleIndex].BODY; - this.precancle = new Date(dateFormatter(cancle)).getTime(); + this.precancle = new Date(this.utils.dateFormatter(cancle)).getTime(); } if (fdivIndex > -1) { let fdiv = this.lines.preFlight['ABN'][fdivIndex].BODY; @@ -125,12 +126,12 @@ export class RelatedTabComponent implements OnInit { this.readelay['TYPE'] = fimsFlightstatusDefinition.ddsc; } - this.readelay['STRT'] = new Date(dateFormatter(this.readelay['STRT'])).getTime(); + this.readelay['STRT'] = new Date(this.utils.dateFormatter(this.readelay['STRT'])).getTime(); this.readelay['DURA'] = parseInt(this.readelay['DURA'].substr(0, 2)) * 3600000 + parseInt(this.readelay['DURA'].substr(2, 3)) * 60000 + this.readelay['STRT']; } if (cancleIndex > -1) { let cancle = this.lines.reaFlight['ABN'][cancleIndex].BODY; - this.reacancle = new Date(dateFormatter(cancle)).getTime(); + this.reacancle = new Date(this.utils.dateFormatter(cancle)).getTime(); } if (fdivIndex > -1) { let fdiv = this.lines.reaFlight['ABN'][fdivIndex].BODY; diff --git a/src/app/pages/seasonal-plan/related-tab/related-tab.component.ts b/src/app/pages/seasonal-plan/related-tab/related-tab.component.ts index e629656..e875e63 100644 --- a/src/app/pages/seasonal-plan/related-tab/related-tab.component.ts +++ b/src/app/pages/seasonal-plan/related-tab/related-tab.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit, Input } from '@angular/core'; -import timeFormatter from '../../../utils/time-formatter'; +import { Utils } from '../../../utils/utils' @Component({ selector: 'app-related-tab', @@ -7,6 +7,8 @@ import timeFormatter from '../../../utils/time-formatter'; styleUrls: ['./related-tab.component.scss'] }) export class RelatedTabComponent implements OnInit { + private utils = new Utils(); + public lines; public airports; @Input() set flight(flight) { @@ -14,24 +16,24 @@ export class RelatedTabComponent implements OnInit { if (this.lines && !this.lines) { this.airports = this.lines.split(' - '); for (let i = 0; i < this.airports.length; i++) { - this.airports[i] = { airport: this.airports[i], scdt: timeFormatter(this.lines[i].departureTime), scat: timeFormatter(this.lines[i].arrivalTime) } + this.airports[i] = { airport: this.airports[i], scdt: this.utils.timeFormatter(this.lines[i].departureTime), scat: this.utils.timeFormatter(this.lines[i].arrivalTime) } } } else if (!this.lines && this.lines) { this.airports = this.lines.split(' - '); for (let i = 0; i < this.airports.length; i++) { - this.airports[i] = { airport: this.airports[i], scdt: timeFormatter(this.lines[i].departureTime), scat: timeFormatter(this.lines[i].arrivalTime) } + this.airports[i] = { airport: this.airports[i], scdt: this.utils.timeFormatter(this.lines[i].departureTime), scat: this.utils.timeFormatter(this.lines[i].arrivalTime) } } } else { // this.lines[this.lines.length - 1] = this.lines[0]; // let concatArray = this.lines.arrivalTime.slice(1); // let linkAirport = this.lines.arrivalTime.concat(concatArray) - if(this.lines.startAirport){ + if (this.lines.startAirport) { this.airports = this.lines.startAirport.split(' - '); for (let i = 0; i < this.airports.length; i++) { - this.airports[i] = { airport: this.airports[i], scdt: timeFormatter(this.lines.departureTime), scat: timeFormatter(this.lines.arrivalTime) } + this.airports[i] = { airport: this.airports[i], scdt: this.utils.timeFormatter(this.lines.departureTime), scat: this.utils.timeFormatter(this.lines.arrivalTime) } } } - + } }; diff --git a/src/app/services/login-auth.service.ts b/src/app/services/login-auth.service.ts index 59d51df..7f54114 100644 --- a/src/app/services/login-auth.service.ts +++ b/src/app/services/login-auth.service.ts @@ -1,9 +1,10 @@ import { Injectable } from '@angular/core'; import { CanActivate, Router, ActivatedRouteSnapshot } from '@angular/router'; -import getCookie from '../utils/get-cookie'; +import { Utils } from '../utils/utils'; @Injectable() export class LoginAuthService implements CanActivate { + private utils = new Utils(); constructor( private router: Router, ) { } @@ -34,6 +35,6 @@ export class LoginAuthService implements CanActivate { } getToken(): string { - return getCookie('token'); + return this.utils.getCookie('token'); } } \ No newline at end of file diff --git a/src/app/utils/alert-message-handle.ts b/src/app/utils/alert-message-handle.ts index 69f60be..31a053b 100644 --- a/src/app/utils/alert-message-handle.ts +++ b/src/app/utils/alert-message-handle.ts @@ -1,5 +1,6 @@ -import dateFormatter from "./date-formatter"; +import { Utils } from './utils'; export class AlertMessageHandle { + private utils = new Utils(); //ok public flopCncl(message) { if (message.FLOP.CNCL) { @@ -100,7 +101,7 @@ export class AlertMessageHandle { } //ok public flopActt(message) { - return message.FLOP.FFID + " 航班实际时间:" + dateFormatter(message.FLOP.ACTT); + return message.FLOP.FFID + " 航班实际时间:" + this.utils.dateFormatter(message.FLOP.ACTT); } //ok public flopGtdt(message) { @@ -112,7 +113,7 @@ export class AlertMessageHandle { gotm = gtdts[i]["GOTM"], gctm = gtdts[i]["GCTM"]; if (gate) { - gateCode += gate + ":【登机门打开:" + (!gotm ? "待定" : dateFormatter(gotm)) + ";登机门关闭:" + (!gctm ? "待定" : dateFormatter(gctm)) + "】\n"; + gateCode += gate + ":【登机门打开:" + (!gotm ? "待定" : this.utils.dateFormatter(gotm)) + ";登机门关闭:" + (!gctm ? "待定" : this.utils.dateFormatter(gctm)) + "】\n"; } } } @@ -135,12 +136,12 @@ export class AlertMessageHandle { } //ok public flopEstt(message) { - return message.FLOP.FFID + " 预计时间变更为" + dateFormatter(message.FLOP.ESTT); + return message.FLOP.FFID + " 预计时间变更为" + this.utils.dateFormatter(message.FLOP.ESTT); } //ok public flopPadt(message) { if (message.FLOP.PADT) { - return message.FLOP.FFID + " 前站实际起飞时间:" + dateFormatter(message.FLOP.PADT); + return message.FLOP.FFID + " 前站实际起飞时间:" + this.utils.dateFormatter(message.FLOP.PADT); } else { return message.FLOP.FFID + " 前站实际起飞时间撤销"; } @@ -155,7 +156,7 @@ export class AlertMessageHandle { cotm = ckdts[i]["GOTM"], cctm = ckdts[i]["GCTM"]; if (chkc) { - ckdtCode += chkc + ":【值机打开:" + (!cotm ? "待定" : dateFormatter(cotm)) + ";值机关闭:" + (!cctm ? "待定" : dateFormatter(cctm)) + "】\n"; + ckdtCode += chkc + ":【值机打开:" + (!cotm ? "待定" : this.utils.dateFormatter(cotm)) + ";值机关闭:" + (!cctm ? "待定" : this.utils.dateFormatter(cctm)) + "】\n"; } } } @@ -164,7 +165,7 @@ export class AlertMessageHandle { //ok public flopBotm(message) { if (message.FLOP.BOTM) { - return message.FLOP.FFID + " 登机开始时间:" + dateFormatter(message.FLOP.BOTM); + return message.FLOP.FFID + " 登机开始时间:" + this.utils.dateFormatter(message.FLOP.BOTM); } else { return message.FLOP.FFID + " 撤销登机开始时间"; } @@ -288,7 +289,7 @@ export class AlertMessageHandle { } else { flbttype = "末件行李到达时间:"; } - bridgestr += "\n转盘号:" + blst + "转盘等级:" + bcls + " " + flbttype + dateFormatter(flbt); + bridgestr += "\n转盘号:" + blst + "转盘等级:" + bcls + " " + flbttype + this.utils.dateFormatter(flbt); } } return message.FLOP.FFID + " " + bridgestr; @@ -311,7 +312,7 @@ export class AlertMessageHandle { let abdg = optbridgedata.ABDG; let abop = optbridgedata.ABOP; let aotm = optbridgedata.AOTM; - bridgestr += "【登机桥 " + abdg + " " + ((abop === "A") ? "靠桥" : "撤桥") + " " + dateFormatter(aotm) + "】\n"; + bridgestr += "【登机桥 " + abdg + " " + ((abop === "A") ? "靠桥" : "撤桥") + " " + this.utils.dateFormatter(aotm) + "】\n"; } return message.FLOP.FFID + "\n" + bridgestr; } else { @@ -328,7 +329,7 @@ export class AlertMessageHandle { let chid = optchocksdata.CHID; let chst = optchocksdata.CHST; let chtm = optchocksdata.CHTM; - bridgestr += "【机位:" + chst + ((chid === "ON") ? " 上轮挡:" : " 下轮挡:") + dateFormatter(chtm) + "】\n"; + bridgestr += "【机位:" + chst + ((chid === "ON") ? " 上轮挡:" : " 下轮挡:") + this.utils.dateFormatter(chtm) + "】\n"; } return message.FLOP.FFID + "\n" + bridgestr; } else { diff --git a/src/app/utils/cell-color-handle.ts b/src/app/utils/cell-color-handle.ts index 7028e29..29aa458 100644 --- a/src/app/utils/cell-color-handle.ts +++ b/src/app/utils/cell-color-handle.ts @@ -1,10 +1,8 @@ -import { DynamicFlightOrder } from './dynamic-flight-order'; +import { FlightOrder } from './flight-order'; export class CellColorHandle { - - public orderHandle = new DynamicFlightOrder(); - + public orderHandle = new FlightOrder(); public reno(flight, colorSetting) { if (flight['renderFlight']['RENO'] && flight['renderFlight']['RENO'].indexOf('(') > 0) { @@ -16,7 +14,6 @@ export class CellColorHandle { return {}; } } - public actt(flight, colorSetting) { if (this.orderHandle.isArriFlight(flight)) { if (flight['preFlight']['ACTT']) { @@ -38,7 +35,6 @@ export class CellColorHandle { } } } - public estt(flight, colorSetting) { if (this.orderHandle.isArriFlight(flight)) { if (flight['preFlight']['ESTT'] && !flight['preFlight']['ACTT']) { @@ -61,7 +57,6 @@ export class CellColorHandle { } } } - public sodt(flight, colorSetting) { if (this.orderHandle.isArriFlight(flight)) { if (flight['preFlight']['SODT'] && !flight['preFlight']['ESTT'] && !flight['preFlight']['ACTT']) { @@ -83,7 +78,6 @@ export class CellColorHandle { } } } - public padt(flight, colorSetting) { if (this.orderHandle.isArriFlight(flight) || this.orderHandle.isLinked(flight)) { if (flight['preFlight']['PADT']) { @@ -98,7 +92,6 @@ export class CellColorHandle { return {}; } } - public psst(flight, colorSetting) { if (flight['renderFlight']['PSST'] && flight['renderFlight']['PSST'].indexOf('(') > 0) { return { diff --git a/src/app/utils/date-formatter.ts b/src/app/utils/date-formatter.ts deleted file mode 100644 index c206e5e..0000000 --- a/src/app/utils/date-formatter.ts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * 日期时间转换 - * @param dataString 需要转换成日期时间的字符串 - */ -export default function (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 -} \ No newline at end of file diff --git a/src/app/utils/date-with-notime-formatter.ts b/src/app/utils/date-with-notime-formatter.ts deleted file mode 100644 index f66b173..0000000 --- a/src/app/utils/date-with-notime-formatter.ts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * 日期转换 - * @param dataString 需要转换成日期的字符串 - */ -export default function (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 -} \ No newline at end of file diff --git a/src/app/utils/dynamic-flight-order.ts b/src/app/utils/flight-order.ts similarity index 80% rename from src/app/utils/dynamic-flight-order.ts rename to src/app/utils/flight-order.ts index d110cf3..3ba08e2 100644 --- a/src/app/utils/dynamic-flight-order.ts +++ b/src/app/utils/flight-order.ts @@ -1,5 +1,6 @@ -import dateFormatter from './date-formatter'; -export class DynamicFlightOrder { +import {Utils} from './utils'; +export class FlightOrder { + private utils = new Utils(); public TOP_1 = 1000000000000; public TOP_2 = 2000000000000; @@ -229,74 +230,74 @@ export class DynamicFlightOrder { if (!this.isCancled(flight) && !this.isDone(flight) && this.isDelayed(flight)) { if (this.isLinked(flight)) { if (this.getActualDatetime(flight['preFlight']) && !this.getActualDatetime(flight['reaFlight'])) { - dateToCompare = new Date(dateFormatter(this.getActualDatetime(flight['preFlight']))).getTime(); + dateToCompare = new Date(this.utils.dateFormatter(this.getActualDatetime(flight['preFlight']))).getTime(); dateTag = this.TOP_1; } else { - dateToCompare = new Date(dateFormatter(this.getScheduledDatetime(flight['reaFlight']))).getTime(); + dateToCompare = new Date(this.utils.dateFormatter(this.getScheduledDatetime(flight['reaFlight']))).getTime(); dateTag = this.TOP_2; } } else { - dateToCompare = new Date(dateFormatter(this.getScheduledDatetime(flight['reaFlight']))).getTime(); + dateToCompare = new Date(this.utils.dateFormatter(this.getScheduledDatetime(flight['reaFlight']))).getTime(); dateTag = this.TOP_3; } return dateToCompare + dateTag; } if (!this.isCancled(flight) && !this.isDone(flight) && this.isBoading(flight)) { - dateToCompare = new Date(dateFormatter(this.getScheduledDatetime(flight['reaFlight']))).getTime(); + dateToCompare = new Date(this.utils.dateFormatter(this.getScheduledDatetime(flight['reaFlight']))).getTime(); dateTag = this.TOP_4; return dateToCompare + dateTag; } if (!this.isCancled(flight) && !this.isDone(flight) && this.isFlying(flight) && !this.getActualDatetime(flight['preFlight'])) { if (this.getEstimatedDatetime(flight['preFlight'])) { - dateToCompare = new Date(dateFormatter(this.getEstimatedDatetime(flight['preFlight']))).getTime(); + dateToCompare = new Date(this.utils.dateFormatter(this.getEstimatedDatetime(flight['preFlight']))).getTime(); } else { - dateToCompare = new Date(dateFormatter(this.getScheduledDatetime(flight['preFlight']))).getTime(); + dateToCompare = new Date(this.utils.dateFormatter(this.getScheduledDatetime(flight['preFlight']))).getTime(); } dateTag = this.TOP_5; return dateToCompare + dateTag; } if (!this.isCancled(flight) && !this.isDone(flight) && this.isLinked(flight) && this.getActualDatetime(flight['preFlight']) && !this.getActualDatetime(flight['reaFlight'])) { - dateToCompare = new Date(dateFormatter(this.getActualDatetime(flight['preFlight']))).getTime(); + dateToCompare = new Date(this.utils.dateFormatter(this.getActualDatetime(flight['preFlight']))).getTime(); dateTag = this.TOP_6; return dateToCompare + dateTag; } if (!this.isCancled(flight) && !this.isDone(flight) && this.isDeptFlight(flight) && !this.startBoading(flight)) { - dateToCompare = new Date(dateFormatter(this.getScheduledDatetime(flight['reaFlight']))).getTime(); + dateToCompare = new Date(this.utils.dateFormatter(this.getScheduledDatetime(flight['reaFlight']))).getTime(); dateTag = this.TOP_7; return dateToCompare + dateTag; } if (!this.isCancled(flight) && this.isArriFlight(flight) && this.isDone(flight)) { - dateToCompare = new Date(dateFormatter(this.getActualDatetime(flight['preFlight']))).getTime(); + dateToCompare = new Date(this.utils.dateFormatter(this.getActualDatetime(flight['preFlight']))).getTime(); dateTag = this.TOP_8; return dateToCompare + dateTag; } if (!this.isCancled(flight) && !this.isDone(flight) && this.isOverBoading(flight)) { - dateToCompare = new Date(dateFormatter(this.getScheduledDatetime(flight['reaFlight']))).getTime(); + dateToCompare = new Date(this.utils.dateFormatter(this.getScheduledDatetime(flight['reaFlight']))).getTime(); dateTag = this.TOP_9; return dateToCompare + dateTag; } if (!this.isCancled(flight) && !this.isDone(flight) && !this.isFlying(flight)) { if (this.isLinked(flight)) { - dateToCompare = new Date(dateFormatter(this.getScheduledDatetime(flight['reaFlight']))).getTime(); + dateToCompare = new Date(this.utils.dateFormatter(this.getScheduledDatetime(flight['reaFlight']))).getTime(); dateTag = this.TOP_10; } else if (this.isArriFlight(flight)) { - dateToCompare = new Date(dateFormatter(this.getScheduledDatetime(flight['preFlight']))).getTime(); + dateToCompare = new Date(this.utils.dateFormatter(this.getScheduledDatetime(flight['preFlight']))).getTime(); dateTag = this.TOP_11; } return dateToCompare + dateTag; } if (!this.isCancled(flight) && this.isDone(flight) && (this.isLinked(flight) || this.isDeptFlight(flight))) { - dateToCompare = new Date(dateFormatter(this.getActualDatetime(flight['reaFlight']))).getTime(); + dateToCompare = new Date(this.utils.dateFormatter(this.getActualDatetime(flight['reaFlight']))).getTime(); dateTag = this.TOP_12; return dateToCompare + dateTag; } if (this.isCancled(flight)) { if (this.isDeptFlight(flight)) { - dateToCompare = new Date(dateFormatter(this.getScheduledDatetime(flight['reaFlight']))).getTime(); + dateToCompare = new Date(this.utils.dateFormatter(this.getScheduledDatetime(flight['reaFlight']))).getTime(); } else { - dateToCompare = new Date(dateFormatter(this.getScheduledDatetime(flight['preFlight']))).getTime(); + dateToCompare = new Date(this.utils.dateFormatter(this.getScheduledDatetime(flight['preFlight']))).getTime(); } dateTag = this.TOP_13; diff --git a/src/app/utils/flights-data-handle.ts b/src/app/utils/flights-data-handle.ts index 6b3bfb4..03cda96 100644 --- a/src/app/utils/flights-data-handle.ts +++ b/src/app/utils/flights-data-handle.ts @@ -1,5 +1,5 @@ import { TransferRenderHandle } from './transfer-render-handle'; -import { DynamicFlightOrder } from './dynamic-flight-order'; +import { FlightOrder } from './flight-order'; export class FlightsDataHandle { public transferHandle = new TransferRenderHandle(); @@ -33,7 +33,7 @@ export class FlightsDataHandle { 'FLDT': this.transferHandle.fldtFormatter.bind(this.transferHandle) } - public orderHandle = new DynamicFlightOrder(); + public orderHandle = new FlightOrder(); public findLinkFlights(raw_flights) { diff --git a/src/app/utils/get-cookie.ts b/src/app/utils/get-cookie.ts deleted file mode 100644 index 5e8d794..0000000 --- a/src/app/utils/get-cookie.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * 菜单点击事件 - * @param name 需要获取的cookie属性名 - */ -export default function (name) { - name = name + "=" - var start = document.cookie.indexOf(name), - value = null; - if (start > -1) { - var end = document.cookie.indexOf(";", start); - if (end == -1) { - end = document.cookie.length; - } - value = document.cookie.substring(start + name.length, end); - } - return value; -} \ No newline at end of file diff --git a/src/app/utils/time-formatter.ts b/src/app/utils/time-formatter.ts deleted file mode 100644 index 560883a..0000000 --- a/src/app/utils/time-formatter.ts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * 时间转换显示 - * @param dataString 需要转换成时间的字符串 - */ -export default function (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 -} \ No newline at end of file diff --git a/src/app/utils/transfer-render-handle.ts b/src/app/utils/transfer-render-handle.ts index b7935dd..2603d2e 100644 --- a/src/app/utils/transfer-render-handle.ts +++ b/src/app/utils/transfer-render-handle.ts @@ -1,6 +1,7 @@ -import timeFormatter from './time-formatter'; -import dateWithNotimeFormatter from './date-with-notime-formatter'; +import { Utils } from './utils' export class TransferRenderHandle { + private utils = new Utils(); + public arsfFormatter(flight) { if (flight['MVIN'] === 'A') { if (Array.isArray(flight['MAFL']) && flight['MAFL'].length > 0) { @@ -59,9 +60,16 @@ export class TransferRenderHandle { public gctmFormatter(flight) { if (flight['GTDT']) { if (Array.isArray(flight['GTDT']) && flight['GTDT'].length > 0) { - return timeFormatter(flight['GTDT'][0]['GCTM']); + let gtdt = flight['GTDT']; + gtdt.forEach(element => { + + }); + + + + return this.utils.timeFormatter(flight['GTDT'][0]['GCTM']); } else if (Object.prototype.toString.call(flight['GTDT']) === '[object Object]') { - return timeFormatter(flight['GTDT']['GCTM']); + return this.utils.timeFormatter(flight['GTDT']['GCTM']); } else { return ''; } @@ -71,7 +79,7 @@ export class TransferRenderHandle { } public botmFormatter(flight) { if (flight['BOTM']) { - return timeFormatter(flight['BOTM']); + return this.utils.timeFormatter(flight['BOTM']); } else { return ''; } @@ -99,12 +107,12 @@ export class TransferRenderHandle { 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']); + return this.utils.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']); + return this.utils.timeFormatter(flight['ABTM']['AOTM']); } else { return ''; } @@ -121,12 +129,12 @@ export class TransferRenderHandle { 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']); + return this.utils.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']); + return this.utils.timeFormatter(flight['ABTM']['AOTM']); } else { return ''; } @@ -177,9 +185,9 @@ export class TransferRenderHandle { public cctmFormatter(flight) { if (flight['CKDT']) { if (Array.isArray(flight['CKDT']) && flight['CKDT'].length > 0) { - return timeFormatter(flight['CKDT'][0]['CCTM']); + return this.utils.timeFormatter(flight['CKDT'][0]['CCTM']); } else if (Object.prototype.toString.call(flight['CKDT']) === '[object Object]') { - return timeFormatter(flight['CKDT']['CCTM']); + return this.utils.timeFormatter(flight['CKDT']['CCTM']); } else { return ''; } @@ -190,9 +198,9 @@ export class TransferRenderHandle { public cotmFormatter(flight) { if (flight['CKDT']) { if (Array.isArray(flight['CKDT']) && flight['CKDT'].length > 0) { - return timeFormatter(flight['CKDT'][0]['COTM']); + return this.utils.timeFormatter(flight['CKDT'][0]['COTM']); } else if (Object.prototype.toString.call(flight['CKDT']) === '[object Object]') { - return timeFormatter(flight['CKDT']['COTM']); + return this.utils.timeFormatter(flight['CKDT']['COTM']); } else { return ''; } @@ -205,12 +213,12 @@ export class TransferRenderHandle { 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']); + return this.utils.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']); + return this.utils.timeFormatter(flight['CHOT']['CHTM']); } else { return ''; } @@ -226,12 +234,12 @@ export class TransferRenderHandle { 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']); + return this.utils.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']); + return this.utils.timeFormatter(flight['CHOT']['CHTM']); } else { return ''; } @@ -244,7 +252,7 @@ export class TransferRenderHandle { } public laclFormatter(flight) { if (flight['LACL']) { - return timeFormatter(flight['LACL']); + return this.utils.timeFormatter(flight['LACL']); } else { return ''; } @@ -269,7 +277,7 @@ export class TransferRenderHandle { } public acttFormatter(flight) { if (flight['ACTT']) { - return timeFormatter(flight['ACTT']); + return this.utils.timeFormatter(flight['ACTT']); } else { return ''; } @@ -320,7 +328,7 @@ export class TransferRenderHandle { } public esttFormatter(flight) { if (flight['ESTT']) { - return timeFormatter(flight['ESTT']); + return this.utils.timeFormatter(flight['ESTT']); } else { return ''; } @@ -368,7 +376,7 @@ export class TransferRenderHandle { } public sodtFormatter(flight) { if (flight['SODT']) { - return timeFormatter(flight['SODT']); + return this.utils.timeFormatter(flight['SODT']); } else { return ''; } @@ -396,45 +404,45 @@ export class TransferRenderHandle { if (flight['PADT']) { if (Array.isArray(flight['ROUT']) && flight['ROUT'].length > 0) { let lastRout = flight['ROUT'][flight['ROUT'].length - 1]; - if (lastRout['SCDT']){ - return timeFormatter(flight['PADT']) + '(' + timeFormatter(lastRout['SCDT']) + ')'; - }else{ - return timeFormatter(flight['PADT']); + if (lastRout['SCDT']) { + return this.utils.timeFormatter(flight['PADT']) + '(' + this.utils.timeFormatter(lastRout['SCDT']) + ')'; + } else { + return this.utils.timeFormatter(flight['PADT']); } } else if (Object.prototype.toString.call(flight['ROUT']) === '[object Object]') { - if (flight['ROUT']['SCDT']){ - return timeFormatter(flight['PADT']) + '(' + timeFormatter(flight['ROUT']['SCDT']) + ')'; - }else{ - return timeFormatter(flight['PADT']); + if (flight['ROUT']['SCDT']) { + return this.utils.timeFormatter(flight['PADT']) + '(' + this.utils.timeFormatter(flight['ROUT']['SCDT']) + ')'; + } else { + return this.utils.timeFormatter(flight['PADT']); } - }else{ - return timeFormatter(flight['PADT']); + } else { + return this.utils.timeFormatter(flight['PADT']); } } else { if (Array.isArray(flight['ROUT']) && flight['ROUT'].length > 0) { let lastRout = flight['ROUT'][flight['ROUT'].length - 1]; - if (lastRout['SCDT']){ - return '(' + timeFormatter(lastRout['SCDT']) + ')'; - }else{ + if (lastRout['SCDT']) { + return '(' + this.utils.timeFormatter(lastRout['SCDT']) + ')'; + } else { return ''; } } else if (Object.prototype.toString.call(flight['ROUT']) === '[object Object]') { - if (flight['ROUT']['SCDT']){ - return '(' + timeFormatter(flight['ROUT']['SCDT']) + ')'; - }else{ + if (flight['ROUT']['SCDT']) { + return '(' + this.utils.timeFormatter(flight['ROUT']['SCDT']) + ')'; + } else { return ''; } - }else{ - return ''; + } else { + return ''; } } - }else{ + } else { return ''; } } public fldtFormatter(flight) { if (flight['SODT']) { - return dateWithNotimeFormatter(flight['SODT']); + return this.utils.dateWithoutTime(flight['SODT']); } else { return ''; } diff --git a/src/app/utils/utils.ts b/src/app/utils/utils.ts new file mode 100644 index 0000000..ad9db50 --- /dev/null +++ b/src/app/utils/utils.ts @@ -0,0 +1,164 @@ +/** + * 工具类 + */ +export class Utils { + public diff(obj1, obj2) { + if (obj1['preFlight'] && !obj1['reaFlight']) { + if (obj2['preFlight'] && !obj2['reaFlight']) { + if (obj1['preFlight']['FLID'] === obj2['preFlight']['FLID']) { + return true; + } else { + return false; + } + } else { + return false; + } + } else if (!obj1['preFlight'] && obj1['reaFlight']) { + if (!obj2['preFlight'] && obj2['reaFlight']) { + if (obj1['reaFlight']['FLID'] === obj2['reaFlight']['FLID']) { + return true; + } else { + return false; + } + } else { + return false; + } + } else { + if (obj2['preFlight'] && obj2['reaFlight']) { + if ((obj1['preFlight']['FLID'] === obj2['preFlight']['FLID']) && (obj1['reaFlight']['FLID'] === obj2['reaFlight']['FLID'])) { + return true; + } else { + return false; + } + } else { + return false; + } + } + + // var o1 = obj1 instanceof Object; + // var o2 = obj2 instanceof Object; + // if (!o1 || !o2) { + // return false; + // } + // if (Object.keys(obj1).length !== Object.keys(obj2).length) { + // return false; + // } + // for (var attr in obj1) { + // var t1 = obj1[attr] instanceof Object; + // var t2 = obj2[attr] instanceof Object; + // if (t1 && t2) { + // return this.diff(obj1[attr], obj2[attr]); + // } else if (obj1[attr] !== obj2[attr]) { + // return false; + // } + // } + // return true; + } + + public getCookie(name) { + name = name + "=" + var start = document.cookie.indexOf(name), + value = null; + if (start > -1) { + var end = document.cookie.indexOf(";", start); + if (end == -1) { + end = document.cookie.length; + } + value = document.cookie.substring(start + name.length, end); + } + return value; + } + + public dateFormatter(dateString) { + 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 (!dateString || dateString.length < 11) { + return dateString ? dateString : ''; + } + if (!dateString.substring(7)) { + return dateString ? dateString : ''; + } + if (!monthToNumber.hasOwnProperty(dateString.substring(2, 5).toUpperCase())) { + return dateString ? dateString : ''; + } + + let year = "20" + dateString.substring(5, 7); + let month = monthToNumber[dateString.substring(2, 5).toUpperCase()]; + let day = dateString.substring(0, 2); + let hour = dateString.substring(7, 9); + let min = dateString.substring(9, 11); + return year + '-' + month + '-' + day + ' ' + hour + ':' + min + } + + public timeFormatter(dateString) { + 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 (!dateString || dateString.length < 11) { + return dateString ? dateString : ''; + } + if (!dateString.substring(7)) { + return dateString ? dateString : ''; + } + if (!monthToNumber.hasOwnProperty(dateString.substring(2, 5).toUpperCase())) { + return dateString ? dateString : ''; + } + let hour = dateString.substring(7, 9); + let min = dateString.substring(9, 11); + return hour + ':' + min + } + + public dateWithoutTime(dateString) { + 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 (!dateString || dateString.length < 11) { + return dateString ? dateString : ''; + } + if (!dateString.substring(7)) { + return dateString ? dateString : ''; + } + if (!monthToNumber.hasOwnProperty(dateString.substring(2, 5).toUpperCase())) { + return dateString ? dateString : ''; + } + + let year = "20" + dateString.substring(5, 7); + let month = monthToNumber[dateString.substring(2, 5).toUpperCase()]; + let day = dateString.substring(0, 2); + return year + '-' + month + '-' + day + } +} \ No newline at end of file diff --git a/src/app/utils/web-worker-handle.ts b/src/app/utils/web-worker-handle.ts deleted file mode 100644 index 291f409..0000000 --- a/src/app/utils/web-worker-handle.ts +++ /dev/null @@ -1,1205 +0,0 @@ -export default 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 messageArray = dynamicData.message, - airlinesSelections = dynamicData.airlinesSelections, - flightTypeSelections = dynamicData.flightTypeSelections, - 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 (messageArray && Array.isArray(messageArray) && messageArray.length > 0) { - messageArray.forEach(message => { - let index = raw_data.findIndex(element => element['FLID'] === message.FLID); - if (index > -1) { - raw_data[index] = message; - } else { - raw_data.push(message); - } - - if (airlinesSelections.findIndex(airline => airline.airlineCodeIata === message['ALCD']) === -1) { - let index = airlines.findIndex(val => val.airlineCodeIata === message['ALCD']); - airlinesSelections.push(airlines[index]); - } - - if (flightTypeSelections.findIndex(flightType => flightType.flightTypeCode === message['FLTY']) === -1) { - let index = flightTypes.findIndex(val => val.flightTypeCode === message['FLTY']); - flightTypeSelections.push(flightTypes[index]); - } - }) - } - /** - * 时间转换 - * @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 = { - 'ARSF': function arsfFormatter(flight) { - if (flight['MVIN'] === 'A') { - if (Array.isArray(flight['MAFL']) && flight['MAFL'].length > 0) { - let arsf = []; - for (let i = 0; i < flight['MAFL'].length; i++) { - arsf.push(flight['MAFL'][i]['FLNO']); - } - let set = new Set(arsf); - return Array.from(set).join(','); - } else if (Object.prototype.toString.call(flight['MAFL']) === '[object Object]') { - return flight['MAFL']['FLNO']; - } else { - return ''; - } - } else { - return ''; - } - }, - 'DESF': function desfFormatter(flight) { - if (flight['MVIN'] === 'D') { - if (Array.isArray(flight['MAFL']) && flight['MAFL'].length > 0) { - let desf = []; - for (let i = 0; i < flight['MAFL'].length; i++) { - desf.push(flight['MAFL'][i]['FLNO']); - } - let set = new Set(desf); - return Array.from(set).join(','); - } else if (Object.prototype.toString.call(flight['MAFL']) === '[object Object]') { - return flight['MAFL']['FLNO']; - } else { - return ''; - } - } else { - return ''; - } - }, - 'RENO': function renoFormatter(flight) { - if (flight['RENO']) { - if (flight['LRENO']) { - if (flight['RENO'] == flight['LRENO']) { - return flight['RENO']; - } else { - return flight['RENO'] + '(' + flight['LRENO'] + ')'; - } - } else { - return flight['RENO']; - } - } else { - if (flight['LRENO']) { - return '(' + flight['LRENO'] + ')'; - } else { - return ''; - } - } - }, - '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); - let joinedPsst = Array.from(set).join(',') - if (flight['LPSDT']) { - if (joinedPsst == flight['LPSDT']) { - return joinedPsst; - } else { - return joinedPsst + '(' + flight['LPSDT'] + ')'; - } - } else { - return joinedPsst; - } - } else if (Object.prototype.toString.call(flight['PSDT']) === '[object Object]') { - if (flight['LPSDT']) { - if (flight['PSDT']['PSST'] == flight['LPSDT']) { - return flight['PSDT']['PSST']; - } else { - return flight['PSDT']['PSST'] + '(' + flight['LPSDT'] + ')'; - } - - } else { - return flight['PSDT']['PSST']; - } - } else { - if (flight['LPSDT']) { - return '(' + flight['LPSDT'] + ')'; - } else { - return ''; - } - } - } else { - if (flight['LPSDT']) { - return '(' + flight['LPSDT'] + ')'; - } 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['MVIN'] === 'A') { - if (flight['PADT']) { - if (Array.isArray(flight['ROUT']) && flight['ROUT'].length > 0) { - let lastRout = flight['ROUT'][flight['ROUT'].length - 1]; - if (lastRout['SCDT']) { - return timeFormatter(flight['PADT']) + '(' + timeFormatter(lastRout['SCDT']) + ')'; - } else { - return timeFormatter(flight['PADT']); - } - } else if (Object.prototype.toString.call(flight['ROUT']) === '[object Object]') { - if (flight['ROUT']['SCDT']) { - return timeFormatter(flight['PADT']) + '(' + timeFormatter(flight['ROUT']['SCDT']) + ')'; - } else { - return timeFormatter(flight['PADT']); - } - } else { - return timeFormatter(flight['PADT']); - } - } else { - if (Array.isArray(flight['ROUT']) && flight['ROUT'].length > 0) { - let lastRout = flight['ROUT'][flight['ROUT'].length - 1]; - if (lastRout['SCDT']) { - return '(' + timeFormatter(lastRout['SCDT']) + ')'; - } else { - return ''; - } - } else if (Object.prototype.toString.call(flight['ROUT']) === '[object Object]') { - if (flight['ROUT']['SCDT']) { - return '(' + timeFormatter(flight['ROUT']['SCDT']) + ')'; - } else { - return ''; - } - } else { - return ''; - } - } - } 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: number = 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: Array = []; - 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']); - }) - - return { - "raw_data": raw_data, - "airlinesSelections": airlinesSelections, - "flightTypeSelections": flightTypeSelections, - "combined_data": combined_data, - }; -} \ No newline at end of file