-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.jsx
126 lines (106 loc) · 3.16 KB
/
index.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
'use strict'
let webSocket = new WebSocket(SBS1_WEBSOCKET_URL, ['binary', 'base64']);
let translateMessage = message => {
return {
icao: message.hex_ident,
flight: message.callsign,
squawk: message.squawk,
altitude: message.altitude,
speed: message.ground_speed,
lat: message.lat,
lon: message.lon,
verticalRate: message.vertical_rate,
distance: '',
track: message.track,
dateGenerated: new Date(Date.parse(message.generated_date + " " + message.generated_time + " UTC")),
isOnGround: message.is_on_ground
}
};
let state = {
planesTable: {},
planes: {}
};
//if (localStorage.getItem('state') !== null) {
// state = JSON.parse(localStorage.getItem('state'));
// let planes = state.planes;
//
// Object.keys(planes).forEach(plane => {
// planes[plane].dateGenerated = new Date(planes[plane].dateGenerated);
// })
//}
let updatePlane = (plane, message) => {
if (message.flight !== null) {
plane.flight = message.flight;
}
if (message.squawk !== null) {
plane.squawk = message.squawk;
}
if (message.altitude !== null) {
plane.altitude = message.altitude;
}
if (message.speed !== null) {
plane.speed = message.speed;
}
if (message.verticalRate !== null) {
plane.verticalRate = message.verticalRate;
}
if (message.track !== null) {
plane.track = message.track;
}
if (message.lat !== null) {
plane.lat = message.lat;
}
if (message.lon !== null) {
plane.lon = message.lon;
}
if (message.isOnGround !== null) {
plane.isOnGround = message.isOnGround;
}
plane.dateGenerated = message.dateGenerated;
plane.msgs++;
};
let updatePlanes = message => {
let planes = state.planes;
if (planes[message.icao] === undefined) {
planes[message.icao] = {
icao: message.icao,
msgs: 0
};
}
updatePlane(planes[message.icao], message);
//localStorage.setItem('state',JSON.stringify(state));
};
webSocket.onmessage = evt => {
let reader = new FileReader();
let planes = state.planes;
reader.onloadend = () => {
let messages = reader.result.split('\n');
messages.slice(0,-1).forEach(
(message) => {
let sbsMessage = parseSbs1Message(message);
let translatedMessage = translateMessage(sbsMessage);
updatePlanes(translatedMessage);
}
);
mainComponent.setState(state);
};
reader.readAsText(evt.data);
}
let ReactDOM = require('react-dom');
let React = require('react');
let Main = require('./main');
let onTableHeaderClick = function (event) {
if (event.target.className !== state.planesTable.sortColumn) {
state.planesTable.sortOrder = 1;
} else {
state.planesTable.sortOrder = -state.planesTable.sortOrder;
}
state.planesTable.sortColumn = event.target.className;
mainComponent.setState(state);
};
let mainComponent = ReactDOM.render(
<Main
onTableHeaderClick={onTableHeaderClick}
/>,
document.getElementById('content')
);