动态消息更新优化及请求错误处理
This commit is contained in:
@@ -29,6 +29,8 @@ import { WebsocketService } from './services/websocket.service';
|
||||
/* 路由缓存策略 */
|
||||
import { AppReuseStrategy } from './router-reuse-strategy';
|
||||
|
||||
import { OperateSpinServiceService } from './services/operate-spin-service.service';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
AppComponent
|
||||
@@ -48,6 +50,7 @@ import { AppReuseStrategy } from './router-reuse-strategy';
|
||||
HttpService,
|
||||
HttpClientService,
|
||||
WebsocketService,
|
||||
OperateSpinServiceService,
|
||||
{ provide: RouteReuseStrategy, useClass: AppReuseStrategy }
|
||||
],
|
||||
bootstrap: [AppComponent]
|
||||
|
||||
@@ -250,6 +250,25 @@ export class MainComponent implements OnInit {
|
||||
this.raw_data.push(message);
|
||||
}
|
||||
|
||||
//查找链接航班并将其组合成一条数据
|
||||
let combined_linked_data = this.dataHandle.findLinkFlights(this.raw_data);
|
||||
let combined_data = [];
|
||||
this.combined_data = [];
|
||||
combined_linked_data.forEach(element => {
|
||||
let flights_item = this.dataHandle.flightsRenderTransfer(element, this.col_lists);
|
||||
this.combined_data.push(flights_item);
|
||||
});
|
||||
this.combined_data.forEach(item => {
|
||||
combined_data.push(this.dataHandle.basicDataTransHandle(item, this.airports, this.citys, this.airlines, this.flightStatus, this.flightTypes));
|
||||
})
|
||||
this.combined_data = combined_data;
|
||||
this.combined_data.forEach(element => {
|
||||
element['ORDER'] = this.orderHandle.sequence(element);
|
||||
})
|
||||
this.combined_data = this.combined_data.sort(function (a, b) {
|
||||
return (a['ORDER'] - b['ORDER']);
|
||||
})
|
||||
|
||||
if (this.airlinesSelections.findIndex(airline => airline.airlineCodeIata === message['ALCD']) === -1) {
|
||||
let index = this.airlines.findIndex(val => val.airlineCodeIata === message['ALCD']);
|
||||
this.airlinesSelections.push(this.airlines[index]);
|
||||
@@ -262,7 +281,6 @@ export class MainComponent implements OnInit {
|
||||
|
||||
let dynamicHandleData = this.dataHandle.dynamicMessageHandle(
|
||||
message,
|
||||
this.combined_data,
|
||||
this.render_data,
|
||||
this.col_lists,
|
||||
this.filterItems,
|
||||
@@ -274,17 +292,8 @@ export class MainComponent implements OnInit {
|
||||
this.flightStatus,
|
||||
this.flightTypes
|
||||
)
|
||||
|
||||
this.combined_data = dynamicHandleData.combined_data;
|
||||
this.render_data = dynamicHandleData.render_data;
|
||||
|
||||
this.combined_data.forEach(element => {
|
||||
element['ORDER'] = this.orderHandle.sequence(element);
|
||||
})
|
||||
this.combined_data = this.combined_data.sort(function (a, b) {
|
||||
return (a['ORDER'] - b['ORDER']);
|
||||
})
|
||||
|
||||
this.render_data.forEach(element => {
|
||||
element['ORDER'] = this.orderHandle.sequence(element);
|
||||
})
|
||||
|
||||
@@ -9,7 +9,7 @@ import { SidebarMenuModule } from '../components/sidebar-menu/sidebar-menu.modul
|
||||
import { BarMenuModule } from '../components/bar-menu/bar-menu.module';
|
||||
|
||||
import { BasicDataService } from '../services/basic-data-service';
|
||||
import { OperateSpinServiceService } from '../services/operate-spin-service.service';
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
@@ -20,6 +20,6 @@ import { OperateSpinServiceService } from '../services/operate-spin-service.serv
|
||||
PagesRoutingModule,
|
||||
],
|
||||
declarations: [PagesComponent],
|
||||
providers: [BasicDataService, OperateSpinServiceService]
|
||||
providers: [BasicDataService]
|
||||
})
|
||||
export class PagesModule { }
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Router } from '@angular/router';
|
||||
import { HttpClient, HttpRequest, HttpHeaders, HttpParams } from '@angular/common/http';
|
||||
import { HttpObserve } from '@angular/common/http/src/client';
|
||||
import { OperateSpinServiceService } from './operate-spin-service.service';
|
||||
import { ToastService } from '../components/toast/toast.service';
|
||||
import { ToastConfig, ToastType } from '../components/toast/toast-model';
|
||||
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
@@ -11,7 +15,10 @@ import { Observable } from 'rxjs';
|
||||
export class HttpClientService {
|
||||
|
||||
constructor(
|
||||
private router: Router,
|
||||
private httpClient: HttpClient,
|
||||
private operateSpinServiceService: OperateSpinServiceService,
|
||||
private toastService: ToastService,
|
||||
) { }
|
||||
|
||||
|
||||
@@ -113,6 +120,27 @@ export class HttpClientService {
|
||||
observable.subscribe(res => {
|
||||
observer.next(res);
|
||||
}, (err) => {
|
||||
switch (err.status) {
|
||||
case 401: {
|
||||
this.operateSpinServiceService.hideSpin();
|
||||
let cookieMsg = ['SESSION', 'token']
|
||||
let sessionStorageMsg = ['userInfo']
|
||||
sessionStorageMsg.forEach(element => {
|
||||
sessionStorage.removeItem(element)
|
||||
})
|
||||
cookieMsg.forEach(element => {
|
||||
this.delCookie(element)
|
||||
})
|
||||
this.router.navigate(['/login']);
|
||||
break;
|
||||
};
|
||||
case 500: {
|
||||
this.operateSpinServiceService.hideSpin();
|
||||
const toastCfg = new ToastConfig(ToastType.ERROR, '', '数据请求失败!', 5000);
|
||||
this.toastService.toast(toastCfg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
observer.error(err);
|
||||
}, () => {
|
||||
observer.complete();
|
||||
@@ -120,4 +148,10 @@ export class HttpClientService {
|
||||
});
|
||||
}
|
||||
|
||||
delCookie($name) {
|
||||
let myDate = new Date();
|
||||
myDate.setTime(-1000);
|
||||
document.cookie = $name + "=''; expires=" + myDate.toUTCString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -247,78 +247,9 @@ export class FlightsDataHandle {
|
||||
return item;
|
||||
}
|
||||
|
||||
public dynamicMessageHandle(message, combined_data, render_data, col_lists, filterItems, LASTSEARCH, LAST_SEL_COL, airports, citys, airlines, flightStatus, flightTypes) {
|
||||
public dynamicMessageHandle(message, render_data, col_lists, filterItems, LASTSEARCH, LAST_SEL_COL, airports, citys, airlines, flightStatus, flightTypes) {
|
||||
|
||||
if (message.MVIN === 'A') {
|
||||
//针对combined_data的处理
|
||||
let index = combined_data.findIndex(element => {
|
||||
if (this.orderHandle.isArriFlight(element) || this.orderHandle.isLinked(element)) {
|
||||
if (element['preFlight']['FLID'] === message.FLID) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
if (index > -1) {
|
||||
combined_data[index]['preFlight'] = message;
|
||||
combined_data[index] = this.flightsRenderTransfer(combined_data[index], col_lists);
|
||||
combined_data[index] = this.basicDataTransHandle(combined_data[index], airports, citys, airlines, flightStatus, flightTypes);
|
||||
|
||||
if (message.UPTP === 'FLOP-AOTP') {
|
||||
if (this.orderHandle.isArriFlight(combined_data[index])) {
|
||||
if (message.TAID) {
|
||||
combined_data.splice(index, 1);
|
||||
|
||||
let i = combined_data.findIndex(element => {
|
||||
if (this.orderHandle.isDeptFlight(element)) {
|
||||
if (message.TAID === element['reaFlight']['FLID']) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
})
|
||||
combined_data[i]['reaFlight']['TAID'] = message.FLID;
|
||||
let newFlight = {};
|
||||
newFlight['preFlight'] = message;
|
||||
newFlight['reaFlight'] = combined_data[i]['reaFlight'];
|
||||
|
||||
combined_data.splice(i, 1);
|
||||
|
||||
newFlight = this.flightsRenderTransfer(newFlight, col_lists);
|
||||
newFlight = this.basicDataTransHandle(newFlight, airports, citys, airlines, flightStatus, flightTypes);
|
||||
combined_data.push(newFlight)
|
||||
}
|
||||
} else if (this.orderHandle.isLinked(combined_data[index])) {
|
||||
if (!message.TAID) {
|
||||
let newPreFlight = {},
|
||||
newReaFlight = {};
|
||||
|
||||
newPreFlight['preFlight'] = combined_data[index]['preFlight'];
|
||||
newPreFlight['renderFlight'] = combined_data[index]['renderPreFlight'];
|
||||
combined_data.push(newPreFlight);
|
||||
|
||||
delete combined_data[index]['reaFlight']['TAID'];
|
||||
newPreFlight['reaFlight'] = combined_data[index]['reaFlight'];
|
||||
newPreFlight['renderFlight'] = combined_data[index]['renderReaFlight'];
|
||||
combined_data.push(newReaFlight);
|
||||
|
||||
combined_data.splice(index, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
let newFlight = {};
|
||||
newFlight['preFlight'] = message;
|
||||
newFlight = this.flightsRenderTransfer(newFlight, col_lists);
|
||||
newFlight = this.basicDataTransHandle(newFlight, airports, citys, airlines, flightStatus, flightTypes);
|
||||
combined_data.push(newFlight);
|
||||
}
|
||||
|
||||
//针对render_data的处理
|
||||
let index1 = render_data.findIndex(element => {
|
||||
if (this.orderHandle.isArriFlight(element) || this.orderHandle.isLinked(element)) {
|
||||
@@ -390,49 +321,52 @@ export class FlightsDataHandle {
|
||||
}
|
||||
|
||||
if (is_satis && search_satis) {
|
||||
if (message.UPTP === 'FLOP-TAOP') {
|
||||
// if (message.UPTP === 'FLOP-TAOP') {
|
||||
if (message.TAID) {
|
||||
if (this.orderHandle.isArriFlight(render_data[index1])) {
|
||||
if (message.TAID) {
|
||||
let i = render_data.findIndex(element => {
|
||||
if (this.orderHandle.isDeptFlight(element)) {
|
||||
if (message.TAID === element['reaFlight']['FLID']) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
let i = render_data.findIndex(element => {
|
||||
if (this.orderHandle.isDeptFlight(element)) {
|
||||
if (message.TAID === element['reaFlight']['FLID']) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
})
|
||||
|
||||
if (i > -1) {
|
||||
render_data.splice(index1, 1);
|
||||
render_data[i]['reaFlight']['TAID'] = message.FLID;
|
||||
let newFlight = {};
|
||||
newFlight['preFlight'] = message;
|
||||
newFlight['reaFlight'] = render_data[i]['reaFlight'];
|
||||
render_data.splice(i, 1);
|
||||
newFlight = this.flightsRenderTransfer(newFlight, col_lists);
|
||||
newFlight = this.basicDataTransHandle(newFlight, airports, citys, airlines, flightStatus, flightTypes);
|
||||
render_data.push(newFlight)
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else if (this.orderHandle.isLinked(render_data[index1])) {
|
||||
if (!message.TAID) {
|
||||
let newPreFlight = {},
|
||||
newReaFlight = {};
|
||||
delete render_data[index1]['preFlight']['TAID'];
|
||||
newPreFlight['preFlight'] = render_data[index1]['preFlight'];
|
||||
newPreFlight['renderFlight'] = render_data[index1]['renderPreFlight'];
|
||||
delete render_data[index1]['reaFlight']['TAID'];
|
||||
newPreFlight['reaFlight'] = render_data[index1]['reaFlight'];
|
||||
newPreFlight['renderFlight'] = render_data[index1]['renderReaFlight'];
|
||||
})
|
||||
|
||||
if (i > -1) {
|
||||
// render_data.splice(index1, 1);
|
||||
render_data[i]['reaFlight']['TAID'] = message.FLID;
|
||||
render_data[i]['preFlight'] = message;
|
||||
render_data.splice(index1, 1);
|
||||
render_data.push(newPreFlight);
|
||||
render_data.push(newReaFlight);
|
||||
// let newFlight = {};
|
||||
// newFlight['preFlight'] = message;
|
||||
// newFlight['reaFlight'] = render_data[i]['reaFlight'];
|
||||
// render_data.splice(i, 1);
|
||||
render_data[i] = this.flightsRenderTransfer(render_data[i], col_lists);
|
||||
render_data[i] = this.basicDataTransHandle(render_data[i], airports, citys, airlines, flightStatus, flightTypes);
|
||||
// render_data.push(newFlight)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (this.orderHandle.isLinked(render_data[index1])) {
|
||||
let newPreFlight = {},
|
||||
newReaFlight = {};
|
||||
|
||||
delete render_data[index1]['preFlight']['TAID'];
|
||||
newPreFlight['preFlight'] = render_data[index1]['preFlight'];
|
||||
newPreFlight['renderFlight'] = render_data[index1]['renderPreFlight'];
|
||||
delete render_data[index1]['reaFlight']['TAID'];
|
||||
newPreFlight['reaFlight'] = render_data[index1]['reaFlight'];
|
||||
newPreFlight['renderFlight'] = render_data[index1]['renderReaFlight'];
|
||||
render_data.splice(index1, 1);
|
||||
render_data.push(newPreFlight);
|
||||
render_data.push(newReaFlight);
|
||||
}
|
||||
}
|
||||
// }
|
||||
} else {
|
||||
if (this.orderHandle.isArriFlight(render_data[index1])) {
|
||||
render_data.splice(index1, 1);
|
||||
@@ -503,56 +437,31 @@ export class FlightsDataHandle {
|
||||
}
|
||||
}
|
||||
if (is_satis && search_satis) {
|
||||
let i = render_data.findIndex(element => {
|
||||
if (this.orderHandle.isDeptFlight(element)) {
|
||||
if (message.TAID === element['reaFlight']['FLID']) {
|
||||
return true;
|
||||
if (message.TAID) {
|
||||
let i = render_data.findIndex(element => {
|
||||
if (this.orderHandle.isDeptFlight(element)) {
|
||||
if (message.TAID === element['reaFlight']['FLID']) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
if (i > -1) {
|
||||
let newFlight = {};
|
||||
newFlight['preFlight'] = message;
|
||||
newFlight['reaFlight'] = Object.assign({}, render_data[i]['reaFlight']);
|
||||
render_data.splice(i, 1);
|
||||
newFlight = this.flightsRenderTransfer(newFlight, col_lists);
|
||||
newFlight = this.basicDataTransHandle(newFlight, airports, citys, airlines, flightStatus, flightTypes);
|
||||
render_data.push(newFlight);
|
||||
if (i > -1) {
|
||||
render_data[i]['preFlight'] = newFlight['preFlight'];
|
||||
render_data[i]['renderPreFlight'] = newFlight['renderPreFlight'];
|
||||
} else {
|
||||
render_data.push(newFlight);
|
||||
}
|
||||
} else {
|
||||
render_data.push(newFlight);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//针对combined_data的处理
|
||||
let index = combined_data.findIndex(element => {
|
||||
if (this.orderHandle.isDeptFlight(element) || this.orderHandle.isLinked(element)) {
|
||||
if (element['reaFlight']['FLID'] === message.FLID) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
if (index > -1) {
|
||||
combined_data[index]['reaFlight'] = message;
|
||||
combined_data[index] = this.flightsRenderTransfer(combined_data[index], col_lists);
|
||||
combined_data[index] = this.basicDataTransHandle(combined_data[index], airports, citys, airlines, flightStatus, flightTypes);
|
||||
} else {
|
||||
let newFlight = {};
|
||||
newFlight['reaFlight'] = message;
|
||||
newFlight = this.flightsRenderTransfer(newFlight, col_lists);
|
||||
newFlight = this.basicDataTransHandle(newFlight, airports, citys, airlines, flightStatus, flightTypes);
|
||||
combined_data.push(newFlight);
|
||||
}
|
||||
|
||||
//针对render_data的处理
|
||||
let index1 = render_data.findIndex(element => {
|
||||
if (this.orderHandle.isDeptFlight(element) || this.orderHandle.isLinked(element)) {
|
||||
@@ -703,15 +612,9 @@ export class FlightsDataHandle {
|
||||
return false;
|
||||
}
|
||||
})
|
||||
|
||||
if (i > -1) {
|
||||
let newFlight = {};
|
||||
newFlight['reaFlight'] = message;
|
||||
newFlight['preFlight'] = Object.assign({}, render_data[i]['preFlight']);
|
||||
render_data.splice(i, 1);
|
||||
newFlight = this.flightsRenderTransfer(newFlight, col_lists);
|
||||
newFlight = this.basicDataTransHandle(newFlight, airports, citys, airlines, flightStatus, flightTypes);
|
||||
render_data.push(newFlight);
|
||||
render_data[i]['reaFlight'] = newFlight['reaFlight'];
|
||||
render_data[i]['renderReaFlight'] = newFlight['renderReaFlight'];
|
||||
} else {
|
||||
render_data.push(newFlight);
|
||||
}
|
||||
@@ -720,7 +623,6 @@ export class FlightsDataHandle {
|
||||
}
|
||||
|
||||
return {
|
||||
'combined_data': combined_data,
|
||||
'render_data': render_data
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user