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