动态消息更新优化及请求错误处理

This commit is contained in:
zhouyuejun
2018-12-26 15:00:23 +08:00
parent f49f92ea9f
commit a94a456338
5 changed files with 114 additions and 166 deletions
+3
View File
@@ -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]
+19 -10
View File
@@ -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);
})
+2 -2
View File
@@ -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 { }
+34
View File
@@ -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();
}
}
+56 -154
View File
@@ -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
}
}