Skip to content

Commit 595216f

Browse files
committed
support unique data fields
1 parent ba74132 commit 595216f

File tree

2 files changed

+73
-68
lines changed

2 files changed

+73
-68
lines changed

js/format.js

Lines changed: 43 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,40 @@
1-
/* SondeHub Tracker Format Incoming Data
1+
/* SondeHub Amateur Tracker Format Incoming Data
22
*
33
* Author: Luke Prior
44
*/
55

6+
var excludedFields = [
7+
"payload_callsign",
8+
"uploader_callsign",
9+
"software_version",
10+
"position",
11+
"user-agent",
12+
"uploaders",
13+
"snr",
14+
"rssi",
15+
"software_name",
16+
"alt",
17+
"lat",
18+
"lon",
19+
"heading",
20+
"datetime",
21+
"payload_callsign",
22+
"path",
23+
"time_received",
24+
"frame",
25+
"uploader_alt",
26+
"uploader_position",
27+
"uploader_radio",
28+
"uploader_antenna",
29+
"raw"
30+
];
31+
32+
var uniqueKeys = {
33+
"batt": {"precision": 2},
34+
"frequency": {"precision": 4},
35+
"tx_frequency": {"precision": 4}
36+
}
37+
638
function formatData(data) {
739
var hideAprs = offline.get('opt_hide_aprs');
840
var response = {};
@@ -77,66 +109,17 @@ function formatData(data) {
77109
dataTempEntry.data = {};
78110
}
79111

80-
// Cleanup of some fields, limiting precision, formatting. etc.
81-
// Currently this section copies over specific fields. It should be changed
82-
// to initially copy over all fields that have not already been included,
83-
// Then apply formatting to some 'known' fields.
84-
85-
// Fairly common fields
86-
if (data[key][i].hasOwnProperty("batt")) {
87-
dataTempEntry.data.batt = +data[key][i].batt.toFixed(2);
88-
}
89-
if (data[key][i].hasOwnProperty("frequency")) {
90-
dataTempEntry.data.frequency = +data[key][i].frequency.toFixed(4);
91-
}
92-
if (data[key][i].hasOwnProperty("tx_frequency")) {
93-
dataTempEntry.data.frequency_tx = +data[key][i].tx_frequency.toFixed(3);
94-
}
95-
if (data[key][i].hasOwnProperty("humidity")) {
96-
dataTempEntry.data.humidity = data[key][i].humidity;
97-
}
98-
if (data[key][i].hasOwnProperty("pressure")) {
99-
dataTempEntry.data.pressure = data[key][i].pressure;
100-
}
101-
if (data[key][i].hasOwnProperty("sats")) {
102-
dataTempEntry.data.sats = data[key][i].sats;
103-
}
104-
if (data[key][i].hasOwnProperty("temp")) {
105-
dataTempEntry.data.temp = data[key][i].temp;
106-
}
107-
if (data[key][i].hasOwnProperty("comment")) {
108-
dataTempEntry.data.comment = data[key][i].comment;
109-
}
112+
// Automatically add all remaining fields as data excluding excluded fields
110113

111-
// Horus Binary V2 Fields
112-
if (data[key][i].hasOwnProperty("ascent_rate")) {
113-
// Limit to 1 decimal place.
114-
dataTempEntry.data.ascent_rate = +data[key][i].ascent_rate.toFixed(1);
115-
}
116-
if (data[key][i].hasOwnProperty("ext_pressure")) {
117-
dataTempEntry.data.ext_pressure = data[key][i].ext_pressure;
118-
}
119-
if (data[key][i].hasOwnProperty("ext_humidity")) {
120-
dataTempEntry.data.ext_humidity = data[key][i].ext_humidity;
121-
}
122-
if (data[key][i].hasOwnProperty("ext_temperature")) {
123-
dataTempEntry.data.ext_temperature = data[key][i].ext_temperature;
124-
}
125-
126-
// Horus LoRa Fields
127-
if (data[key][i].hasOwnProperty("pyro_voltage")) {
128-
dataTempEntry.data.pyro_voltage = +data[key][i].pyro_voltage.toFixed(2);
129-
}
130-
if (data[key][i].hasOwnProperty("noise_floor_dbm")) {
131-
dataTempEntry.data.noise_floor_dbm = data[key][i].noise_floor_dbm;
132-
}
133-
if (data[key][i].hasOwnProperty("rx_pkt_count")) {
134-
dataTempEntry.data.rx_pkt_count = data[key][i].rx_pkt_count;
135-
}
136-
137-
// Metadata added on by receiver applications.
138-
if (data[key][i].hasOwnProperty("modulation")) {
139-
dataTempEntry.data.modulation = data[key][i].modulation;
114+
for (let field in data[key][i]) {
115+
if (excludedFields.includes(field)) {
116+
continue;
117+
}
118+
if (uniqueKeys.hasOwnProperty(field)) {
119+
dataTempEntry.data[field] = data[key][i][field].toFixed(uniqueKeys[field].precision);
120+
} else {
121+
dataTempEntry.data[field] = data[key][i][field];
122+
}
140123
}
141124

142125
dataTemp.push(dataTempEntry);

js/tracker.js

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ var globalKeys = {
122122
"ext_pressure": "Pressure, External",
123123
"subtype": "Sonde Sub-type",
124124
"frequency": "Frequency",
125-
"frequency_tx": "TX Frequency",
125+
"tx_frequency": "TX Frequency",
126126
"manufacturer": "Manufacturer",
127127
"type": "Sonde Type",
128128
"burst_timer": "Burst Timer",
@@ -158,11 +158,24 @@ var globalSuffixes = {
158158
"humidity": " %",
159159
"ext_humidity": " %",
160160
"frequency": " MHz",
161-
"frequency_tx": " MHz",
161+
"tx_frequency": " MHz",
162162
"noise_floor_dbm": " dBm",
163163
"spam": ""
164164
};
165165

166+
var keyOrder = [
167+
"ascent_rate",
168+
"batt",
169+
"frequency",
170+
"tx_frequency",
171+
"humidity",
172+
"pressure",
173+
"sats",
174+
"temp",
175+
"comment",
176+
"modulation"
177+
]
178+
166179
// localStorage vars
167180
var ls_receivers = false;
168181
var ls_pred = false;
@@ -866,24 +879,33 @@ function habitat_data(jsondata, alternative) {
866879

867880
var data = (typeof jsondata === "string") ? $.parseJSON(jsondata) : jsondata;
868881
var array = [];
882+
var tempArray = [];
869883
var output = "";
870884
var txFreq = false
871885

872886
if(Object.keys(data).length === 0) return "";
873887

874-
if ("frequency_tx" in data) {
888+
if ("tx_frequency" in data) {
875889
txFreq = true
876890
}
877891

878-
for(var key in data) {
879-
if (key === "frequency" && txFreq) {} else {
892+
for (var field in keyOrder) {
893+
if (keyOrder[field] in data) {
894+
if (keyOrder[field] === "frequency" && txFreq) {} else {
895+
array.push([keyOrder[field], data[keyOrder[field]]]);
896+
tempArray.push(keyOrder[field]);
897+
}
898+
}
899+
}
900+
901+
for (var key in data) {
902+
if (!tempArray.includes(key)) {
880903
array.push([key, data[key]]);
904+
tempArray.push(key);
881905
}
882906
}
883907

884-
//array.sort(function(a, b) {
885-
// return a[0].localeCompare(b[0]);
886-
//});
908+
console.log(array);
887909

888910
for(var i = 0, ii = array.length; i < ii; i++) {
889911
var k = array[i][0]; // key

0 commit comments

Comments
 (0)