航班定位实现
This commit is contained in:
@@ -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;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
Reference in New Issue
Block a user