JSFiddle - React, Tailwind, and code Playground
by Nick Iaconis
HTML
<input id="position" placeholder="Satellite Position ID" />
<br />
<input id="satellite_offset" placeholder="Satellite ID Start #" />
<br />
<textarea id="input" placeholder="Satellites XML"></textarea>
<button id="go">Go</button><br />
Satellites<br />
<textarea id="satellites" disabled="disabled"></textarea><br />
Beams<br />
<textarea id="beams" disabled="disabled"></textarea><br />
Carriers<br />
<textarea id="carriers" disabled="disabled"></textarea>
JavaScript
// MUOS Contour Results Fixtures XML Parser
function parseContour(string) {
var input = string.replace("\n", " "),
output = "["
input = input.split(" ")
input.forEach(function(pair) {
var lnglat = pair.split(",")
if ( pair.indexOf(",") > -1 )
output = output + "[" + lnglat[1] + ", " + lnglat[0] + "], "
})
output = output.substring(0, output.length - 2)
output = output + "]"
return output
}
function parseSatelliteXML(xml, satelliteNo, positionId) {
var $satelliteXML = $(xml)
return '{\n id: "satellite_' + satelliteNo + '",\n position: "' + positionId + '",\n location: [' + $satelliteXML.attr('Latitude') + ', ' + $satelliteXML.attr('Longitude') + '],\n beams: []\n}, '
}
function parseBeamXML(xml, beamName, satelliteNo) {
var $beamXML = $(xml)
return '{\n id: "' + beamName + '",\n satellite: "satellite_' + satelliteNo + '",\n contour: ' + parseContour($beamXML.find('Contour').text()) + ',\n carriers: []\n}, '
}
function parseCarrierXML(xml, beamName) {
var $carrierXML = $(xml)
return '{\n id: generateCarrierId(),\n beam: "' + beamName + '",\n txPower: ' + $carrierXML.find('TxPower').text() + ',\n loadFactor: ' + $carrierXML.find('LoadFactor').text() + ',\n ovsf: ' + $carrierXML.find('OVSF').text() + '\n}, '
}
$('#go').on('click', function() {
var positionId = $('#position').val() || "satellite_position_0",
inputString = $('#input').val(),
$xml = $($.parseXML(inputString)),
satelliteOutput = "",
beamOutput = "",
carrierOutput = "",
satelliteNo = Number($('#satellite_offset').val()) || 0
// Parse all SATELLITES
$xml.find('Satellite').each(function() {
satelliteOutput = satelliteOutput + parseSatelliteXML(this, satelliteNo, positionId)
// Parse BEAMS of this satellite
$(this).find('Beam').each(function() {
var $beam = $(this),
beamName =...