动态消息更新优化及请求错误处理
This commit is contained in:
@@ -29,6 +29,8 @@ import { WebsocketService } from './services/websocket.service';
|
|||||||
/* 路由缓存策略 */
|
/* 路由缓存策略 */
|
||||||
import { AppReuseStrategy } from './router-reuse-strategy';
|
import { AppReuseStrategy } from './router-reuse-strategy';
|
||||||
|
|
||||||
|
import { OperateSpinServiceService } from './services/operate-spin-service.service';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
AppComponent
|
AppComponent
|
||||||
@@ -48,6 +50,7 @@ import { AppReuseStrategy } from './router-reuse-strategy';
|
|||||||
HttpService,
|
HttpService,
|
||||||
HttpClientService,
|
HttpClientService,
|
||||||
WebsocketService,
|
WebsocketService,
|
||||||
|
OperateSpinServiceService,
|
||||||
{ provide: RouteReuseStrategy, useClass: AppReuseStrategy }
|
{ provide: RouteReuseStrategy, useClass: AppReuseStrategy }
|
||||||
],
|
],
|
||||||
bootstrap: [AppComponent]
|
bootstrap: [AppComponent]
|
||||||
|
|||||||
@@ -250,6 +250,25 @@ export class MainComponent implements OnInit {
|
|||||||
this.raw_data.push(message);
|
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) {
|
if (this.airlinesSelections.findIndex(airline => airline.airlineCodeIata === message['ALCD']) === -1) {
|
||||||
let index = this.airlines.findIndex(val => val.airlineCodeIata === message['ALCD']);
|
let index = this.airlines.findIndex(val => val.airlineCodeIata === message['ALCD']);
|
||||||
this.airlinesSelections.push(this.airlines[index]);
|
this.airlinesSelections.push(this.airlines[index]);
|
||||||
@@ -262,7 +281,6 @@ export class MainComponent implements OnInit {
|
|||||||
|
|
||||||
let dynamicHandleData = this.dataHandle.dynamicMessageHandle(
|
let dynamicHandleData = this.dataHandle.dynamicMessageHandle(
|
||||||
message,
|
message,
|
||||||
this.combined_data,
|
|
||||||
this.render_data,
|
this.render_data,
|
||||||
this.col_lists,
|
this.col_lists,
|
||||||
this.filterItems,
|
this.filterItems,
|
||||||
@@ -274,17 +292,8 @@ export class MainComponent implements OnInit {
|
|||||||
this.flightStatus,
|
this.flightStatus,
|
||||||
this.flightTypes
|
this.flightTypes
|
||||||
)
|
)
|
||||||
|
|
||||||
this.combined_data = dynamicHandleData.combined_data;
|
|
||||||
this.render_data = dynamicHandleData.render_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 => {
|
this.render_data.forEach(element => {
|
||||||
element['ORDER'] = this.orderHandle.sequence(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 { BarMenuModule } from '../components/bar-menu/bar-menu.module';
|
||||||
|
|
||||||
import { BasicDataService } from '../services/basic-data-service';
|
import { BasicDataService } from '../services/basic-data-service';
|
||||||
import { OperateSpinServiceService } from '../services/operate-spin-service.service';
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
@@ -20,6 +20,6 @@ import { OperateSpinServiceService } from '../services/operate-spin-service.serv
|
|||||||
PagesRoutingModule,
|
PagesRoutingModule,
|
||||||
],
|
],
|
||||||
declarations: [PagesComponent],
|
declarations: [PagesComponent],
|
||||||
providers: [BasicDataService, OperateSpinServiceService]
|
providers: [BasicDataService]
|
||||||
})
|
})
|
||||||
export class PagesModule { }
|
export class PagesModule { }
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
import { HttpClient, HttpRequest, HttpHeaders, HttpParams } from '@angular/common/http';
|
import { HttpClient, HttpRequest, HttpHeaders, HttpParams } from '@angular/common/http';
|
||||||
import { HttpObserve } from '@angular/common/http/src/client';
|
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';
|
import { Observable } from 'rxjs';
|
||||||
|
|
||||||
@@ -11,7 +15,10 @@ import { Observable } from 'rxjs';
|
|||||||
export class HttpClientService {
|
export class HttpClientService {
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
|
private router: Router,
|
||||||
private httpClient: HttpClient,
|
private httpClient: HttpClient,
|
||||||
|
private operateSpinServiceService: OperateSpinServiceService,
|
||||||
|
private toastService: ToastService,
|
||||||
) { }
|
) { }
|
||||||
|
|
||||||
|
|
||||||
@@ -113,6 +120,27 @@ export class HttpClientService {
|
|||||||
observable.subscribe(res => {
|
observable.subscribe(res => {
|
||||||
observer.next(res);
|
observer.next(res);
|
||||||
}, (err) => {
|
}, (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.error(err);
|
||||||
}, () => {
|
}, () => {
|
||||||
observer.complete();
|
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;
|
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') {
|
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的处理
|
//针对render_data的处理
|
||||||
let index1 = render_data.findIndex(element => {
|
let index1 = render_data.findIndex(element => {
|
||||||
if (this.orderHandle.isArriFlight(element) || this.orderHandle.isLinked(element)) {
|
if (this.orderHandle.isArriFlight(element) || this.orderHandle.isLinked(element)) {
|
||||||
@@ -390,49 +321,52 @@ export class FlightsDataHandle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (is_satis && search_satis) {
|
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 (this.orderHandle.isArriFlight(render_data[index1])) {
|
||||||
if (message.TAID) {
|
let i = render_data.findIndex(element => {
|
||||||
let i = render_data.findIndex(element => {
|
if (this.orderHandle.isDeptFlight(element)) {
|
||||||
if (this.orderHandle.isDeptFlight(element)) {
|
if (message.TAID === element['reaFlight']['FLID']) {
|
||||||
if (message.TAID === element['reaFlight']['FLID']) {
|
return true;
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
})
|
} 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 if (this.orderHandle.isLinked(render_data[index1])) {
|
|
||||||
if (!message.TAID) {
|
if (i > -1) {
|
||||||
let newPreFlight = {},
|
// render_data.splice(index1, 1);
|
||||||
newReaFlight = {};
|
render_data[i]['reaFlight']['TAID'] = message.FLID;
|
||||||
delete render_data[index1]['preFlight']['TAID'];
|
render_data[i]['preFlight'] = message;
|
||||||
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.splice(index1, 1);
|
||||||
render_data.push(newPreFlight);
|
// let newFlight = {};
|
||||||
render_data.push(newReaFlight);
|
// 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 {
|
} else {
|
||||||
if (this.orderHandle.isArriFlight(render_data[index1])) {
|
if (this.orderHandle.isArriFlight(render_data[index1])) {
|
||||||
render_data.splice(index1, 1);
|
render_data.splice(index1, 1);
|
||||||
@@ -503,56 +437,31 @@ export class FlightsDataHandle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (is_satis && search_satis) {
|
if (is_satis && search_satis) {
|
||||||
let i = render_data.findIndex(element => {
|
if (message.TAID) {
|
||||||
if (this.orderHandle.isDeptFlight(element)) {
|
let i = render_data.findIndex(element => {
|
||||||
if (message.TAID === element['reaFlight']['FLID']) {
|
if (this.orderHandle.isDeptFlight(element)) {
|
||||||
return true;
|
if (message.TAID === element['reaFlight']['FLID']) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
})
|
||||||
return false;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
if (i > -1) {
|
if (i > -1) {
|
||||||
let newFlight = {};
|
render_data[i]['preFlight'] = newFlight['preFlight'];
|
||||||
newFlight['preFlight'] = message;
|
render_data[i]['renderPreFlight'] = newFlight['renderPreFlight'];
|
||||||
newFlight['reaFlight'] = Object.assign({}, render_data[i]['reaFlight']);
|
} else {
|
||||||
render_data.splice(i, 1);
|
render_data.push(newFlight);
|
||||||
newFlight = this.flightsRenderTransfer(newFlight, col_lists);
|
}
|
||||||
newFlight = this.basicDataTransHandle(newFlight, airports, citys, airlines, flightStatus, flightTypes);
|
|
||||||
render_data.push(newFlight);
|
|
||||||
} else {
|
} else {
|
||||||
render_data.push(newFlight);
|
render_data.push(newFlight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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的处理
|
//针对render_data的处理
|
||||||
let index1 = render_data.findIndex(element => {
|
let index1 = render_data.findIndex(element => {
|
||||||
if (this.orderHandle.isDeptFlight(element) || this.orderHandle.isLinked(element)) {
|
if (this.orderHandle.isDeptFlight(element) || this.orderHandle.isLinked(element)) {
|
||||||
@@ -703,15 +612,9 @@ export class FlightsDataHandle {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
if (i > -1) {
|
if (i > -1) {
|
||||||
let newFlight = {};
|
render_data[i]['reaFlight'] = newFlight['reaFlight'];
|
||||||
newFlight['reaFlight'] = message;
|
render_data[i]['renderReaFlight'] = newFlight['renderReaFlight'];
|
||||||
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);
|
|
||||||
} else {
|
} else {
|
||||||
render_data.push(newFlight);
|
render_data.push(newFlight);
|
||||||
}
|
}
|
||||||
@@ -720,7 +623,6 @@ export class FlightsDataHandle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'combined_data': combined_data,
|
|
||||||
'render_data': render_data
|
'render_data': render_data
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user