mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-24 16:55:22 +03:00
Merge pull request #1783 from YI-BOYANG/master
Add the text from the HTML and the string from the GUI console to i18n
This commit is contained in:
commit
0064edfb9c
16 changed files with 522 additions and 187 deletions
|
@ -2076,10 +2076,19 @@
|
|||
"blackboxButtonSave": {
|
||||
"message": "Save and reboot"
|
||||
},
|
||||
|
||||
"serialLogging": {
|
||||
"message": "Outboard serial logging device"
|
||||
},
|
||||
"serialLoggingSupportedNote": {
|
||||
"message": "You can log to an external logging device (such as an OpenLog or compatible clone) by using a serial port. Configure the port on the Ports tab."
|
||||
},
|
||||
|
||||
"onboardLoggingFlashLogger": {
|
||||
"message": "Onboard dataflash chip"
|
||||
},
|
||||
"OnboardSDCard": {
|
||||
"message": "Onboard SD card"
|
||||
},
|
||||
"sdcardNote": {
|
||||
"message": "Flight logs can be recorded to your flight controller's onboard SD card slot."
|
||||
},
|
||||
|
@ -2105,6 +2114,9 @@
|
|||
"dataflashConfirmEraseNote": {
|
||||
"message": "This will erase any Blackbox logs or other data contained in the dataflash which will take about 20 seconds, are you sure?"
|
||||
},
|
||||
"dataflashEraseing": {
|
||||
"message": "Erase in progress, please wait..."
|
||||
},
|
||||
"dataflashSavingTitle": {
|
||||
"message": "Saving dataflash to file"
|
||||
},
|
||||
|
@ -2315,6 +2327,9 @@
|
|||
"controlAxisThrottle": {
|
||||
"message": "Throttle [T]"
|
||||
},
|
||||
"controlAxisMotor": {
|
||||
"message": "Motor"
|
||||
},
|
||||
"radioChannelShort": {
|
||||
"message": "CH "
|
||||
},
|
||||
|
@ -3967,9 +3982,24 @@
|
|||
"uploadedCharacters": {
|
||||
"message": "Uploaded $1 characters"
|
||||
},
|
||||
"portsIdentifier": {
|
||||
"message": "Identifier"
|
||||
},
|
||||
"portsConfiguration": {
|
||||
"message": "Data"
|
||||
},
|
||||
"portsTelemetryOut": {
|
||||
"message": "Telemetry"
|
||||
},
|
||||
"portsSerialRx": {
|
||||
"message": "RX"
|
||||
},
|
||||
"portColumnSensors": {
|
||||
"message": "Sensors"
|
||||
},
|
||||
"portsPeripherals": {
|
||||
"message": "Peripherals"
|
||||
},
|
||||
"appUpdateNotificationHeader": {
|
||||
"message": "New Configurator version available."
|
||||
},
|
||||
|
@ -4024,6 +4054,108 @@
|
|||
"missionTotalInformationHead": {
|
||||
"message": "Total information"
|
||||
},
|
||||
"missionTotalInfoFilenameLoaded": {
|
||||
"message": "Filename loaded:"
|
||||
},
|
||||
"missionTotalInfoDistance": {
|
||||
"message": "Distance (m):"
|
||||
},
|
||||
"missionTotalInfoAvailablePoints": {
|
||||
"message": "Available Points"
|
||||
},
|
||||
"missionTotalInfoMissionValid": {
|
||||
"message": "Mission valid"
|
||||
},
|
||||
"missionDefaultPointAlt": {
|
||||
"message": "Alt (cm): "
|
||||
},
|
||||
"missionDefaultPointSpeed": {
|
||||
"message": "Speed (cm/s): "
|
||||
},
|
||||
"missionDefaultSafeRangeSH": {
|
||||
"message": "Radius (m): "
|
||||
},
|
||||
"missionMultiMissionsInfo": {
|
||||
"message": "Missions Info:"
|
||||
},
|
||||
"missionMultiActiveMission": {
|
||||
"message": "Active Mission:"
|
||||
},
|
||||
"missionMultiMissionNo": {
|
||||
"message": "Mission No."
|
||||
},
|
||||
"missionMultiUpdateAll": {
|
||||
"message": "Update All"
|
||||
},
|
||||
"missionMultiAddNewMission": {
|
||||
"message": "Add New Mission"
|
||||
},
|
||||
"missionLevelEarthDEMModel": {
|
||||
"message": "Use Sea Level Earth DEM Model: "
|
||||
},
|
||||
"SafehomeLegend": {
|
||||
"message": "Legend : "
|
||||
},
|
||||
"SafehomeMaxDistance": {
|
||||
"message": "Max distance (m):"
|
||||
},
|
||||
"SafehomeSafeRadius": {
|
||||
"message": "Safe Radius (m):"
|
||||
},
|
||||
"missionTitleHide": {
|
||||
"message": "Hide"
|
||||
},
|
||||
"missionTitleCancel": {
|
||||
"message": "Cancel"
|
||||
},
|
||||
"missionTitleSave": {
|
||||
"message": "Save"
|
||||
},
|
||||
"missionTitlRemove": {
|
||||
"message": "Remove"
|
||||
},
|
||||
"missionTitleLoadMissionFile": {
|
||||
"message": "Load Mission File"
|
||||
},
|
||||
"missionTitleSaveMissionFile": {
|
||||
"message": "Save Mission File"
|
||||
},
|
||||
"missionTitleLoadMissionFromFC": {
|
||||
"message": "Load mission from FC"
|
||||
},
|
||||
"missionTitleSaveMissionToFC": {
|
||||
"message": "Save mission to FC"
|
||||
},
|
||||
"missionTitleLoadEepromMission": {
|
||||
"message": "Load Eeprom mission"
|
||||
},
|
||||
"missionTitleSaveEepromMission": {
|
||||
"message": "Save Eeprom mission"
|
||||
},
|
||||
"missionTitleRemoveAll": {
|
||||
"message": "Remove all"
|
||||
},
|
||||
"missionTitleSetActive": {
|
||||
"message": "Set Active"
|
||||
},
|
||||
"missionTitleUpdateAll": {
|
||||
"message": "Update All"
|
||||
},
|
||||
"missionTitleAdd": {
|
||||
"message": "Add"
|
||||
},
|
||||
"missionTitleMoveToCenterView": {
|
||||
"message": "move to center view"
|
||||
},
|
||||
"missionTitleSaveEepromSafehome": {
|
||||
"message": "Save Eeprom Safehome"
|
||||
},
|
||||
"missionTitleLoadEepromSafehome": {
|
||||
"message": "Load Eeprom Safehome"
|
||||
},
|
||||
"missionTitlEditMission": {
|
||||
"message": "Edit Mission"
|
||||
},
|
||||
"missionRTHsettingsTitle": {
|
||||
"message": "RTH settings"
|
||||
},
|
||||
|
@ -4954,7 +5086,212 @@
|
|||
"mainShowLog": {
|
||||
"message": "Show Log"
|
||||
},
|
||||
"mainHideLog": {
|
||||
"message": "Hide Log"
|
||||
},
|
||||
"waitingForData": {
|
||||
"message": "Waiting for data ..."
|
||||
},
|
||||
"outputStatsTableAcc": {
|
||||
"message": "Acc. noise RMS"
|
||||
},
|
||||
"outputStatsTableCurrent": {
|
||||
"message": "Current [A]"
|
||||
},
|
||||
"outputStatsTableVoltage": {
|
||||
"message": "Voltage [V]"
|
||||
},
|
||||
"LogicConditions": {
|
||||
"message": "Logic Conditions"
|
||||
},
|
||||
"PIDControllers": {
|
||||
"message": "PID Controllers"
|
||||
},
|
||||
"sensorsGyroSelect": {
|
||||
"message": "Gyroscope"
|
||||
},
|
||||
"sensorsAccelSelect": {
|
||||
"message": "Accelerometer"
|
||||
},
|
||||
"sensorsMagSelect": {
|
||||
"message": "Magnetometer"
|
||||
},
|
||||
"sensorsAltitudeSelect": {
|
||||
"message": "Barometer"
|
||||
},
|
||||
"sensorsSonarSelect": {
|
||||
"message": "Sonar"
|
||||
},
|
||||
"sensorsAirSpeedSelect": {
|
||||
"message": "Air speed"
|
||||
},
|
||||
"sensorsTemperaturesSelect": {
|
||||
"message": "Temperatures"
|
||||
},
|
||||
|
||||
"sensorsDebugSelect": {
|
||||
"message": "Debug"
|
||||
},
|
||||
"sensorsDebugTrace": {
|
||||
"message": "Open Debug Trace"
|
||||
},
|
||||
"sensorsGyroscope": {
|
||||
"message": "Gyroscope - deg/s"
|
||||
},
|
||||
"sensorsAccelerometer": {
|
||||
"message": "Accelerometer - g"
|
||||
},
|
||||
"sensorsMagnetometer": {
|
||||
"message": "Magnetometer - Ga"
|
||||
},
|
||||
"sensorsBarometer": {
|
||||
"message": "Barometer - meters"
|
||||
},
|
||||
"sensorsSonar": {
|
||||
"message": "Sonar - cm"
|
||||
},
|
||||
"sensorsAirspeed": {
|
||||
"message": "Air speed - cm/s"
|
||||
},
|
||||
"sensorsTemperature0": {
|
||||
"message": "Temperature 0 - °C"
|
||||
},
|
||||
"sensorsTemperature1": {
|
||||
"message": "Temperature 1 - °C"
|
||||
},
|
||||
"sensorsTemperature2": {
|
||||
"message": "Temperature 2 - °C"
|
||||
},
|
||||
"sensorsTemperature3": {
|
||||
"message": "Temperature 3 - °C"
|
||||
},
|
||||
"sensorsTemperature4": {
|
||||
"message": "Temperature 4 - °C"
|
||||
},
|
||||
"sensorsTemperature5": {
|
||||
"message": "Temperature 5 - °C"
|
||||
},
|
||||
"sensorsTemperature6": {
|
||||
"message": "Temperature 6 - °C"
|
||||
},
|
||||
"sensorsTemperature7": {
|
||||
"message": "Temperature 7 - °C"
|
||||
},
|
||||
"sensorsTemperatureValue": {
|
||||
"message": "value:"
|
||||
},
|
||||
"getRunningOS": {
|
||||
"message": "Running - OS: <strong>"
|
||||
},
|
||||
"getConfiguratorVersion": {
|
||||
"message": "Configurator: <strong>"
|
||||
},
|
||||
"loadedReleaseInfo": {
|
||||
"message": "Loaded release information from GitHub."
|
||||
},
|
||||
"newVersionAvailable": {
|
||||
"message": "New version available!"
|
||||
},
|
||||
"ReceiveTime": {
|
||||
"message": "Receive time: "
|
||||
},
|
||||
"SendTime": {
|
||||
"message": "Send time: "
|
||||
},
|
||||
"ErrorWritingFile": {
|
||||
"message": "<span style=\"color: red\">Error writing file</span>"
|
||||
},
|
||||
"FileSaved": {
|
||||
"message": "File saved"
|
||||
},
|
||||
"selectedTarget": {
|
||||
"message": "selected target = "
|
||||
},
|
||||
"toggledRCs": {
|
||||
"message": "toggled RCs"
|
||||
},
|
||||
"noFirmwareSelectedToLoad": {
|
||||
"message": "<b>No firmware selected to load</b>"
|
||||
},
|
||||
"selectValidSerialPort": {
|
||||
"message": "<span style=\"color: red\">Please select valid serial port</span>'"
|
||||
},
|
||||
"writePermissionsForFile": {
|
||||
"message": "You don\\'t have <span style=\"color: red\">write permissions</span> for this file"
|
||||
},
|
||||
"automaticTargetSelect": {
|
||||
"message": "Attempting automatic target selection"
|
||||
},
|
||||
"notAWAYPOINT": {
|
||||
"message": "Previous selection was not a WAYPOINT!"
|
||||
},
|
||||
"startGettingSafehomePoints": {
|
||||
"message": "Start of getting Safehome points"
|
||||
},
|
||||
"endGettingSafehomePoints": {
|
||||
"message": "End of getting Safehome points"
|
||||
},
|
||||
"startSendingSafehomePoints": {
|
||||
"message": "Start of sending Safehome points"
|
||||
},
|
||||
"endSendingSafehomePoints": {
|
||||
"message": "End of sending Safehome points"
|
||||
},
|
||||
"startGetPoint": {
|
||||
"message": "Start get point"
|
||||
},
|
||||
"startSendPoint": {
|
||||
"message": "Start send point"
|
||||
},
|
||||
"errorReadingFileXml2jsNotFound": {
|
||||
"message": "<span style=\"color: red\">Error reading file (xml2js not found)</span>'"
|
||||
},
|
||||
"errorReadingFile": {
|
||||
"message": "<span style=\"color: red\">Error reading file</span>"
|
||||
},
|
||||
"errorParsingFile": {
|
||||
"message": "<span style=\"color: red\">Error parsing file</span>"
|
||||
},
|
||||
"loadedSuccessfully": {
|
||||
"message": " has been loaded successfully !"
|
||||
},
|
||||
"errorWritingFileXml2jsNotFound": {
|
||||
"message": "<span style=\"color: red\">Error writing file (xml2js not found)</span>"
|
||||
},
|
||||
"savedSuccessfully": {
|
||||
"message": " has been saved successfully !"
|
||||
},
|
||||
"endGetPoint": {
|
||||
"message": "End get point"
|
||||
},
|
||||
"endSendPoint": {
|
||||
"message": "End send point"
|
||||
},
|
||||
"osdSettingsSaved": {
|
||||
"message": "OSD settings saved"
|
||||
},
|
||||
"failedToOpenSerialPort": {
|
||||
"message": "<span style=\"color: red\">Failed</span> to open serial port"
|
||||
},
|
||||
"failedToFlash": {
|
||||
"message": "<span style=\"color: red\">Failed</span> to flash"
|
||||
},
|
||||
"targetPrefetchsuccessful": {
|
||||
"message": "Target prefetch successful: "
|
||||
},
|
||||
"targetPrefetchFail": {
|
||||
"message": "Cannot prefetch target: "
|
||||
},
|
||||
"targetPrefetchFailDFU": {
|
||||
"message": "Cannot prefetch target: Flight Controller in DFU"
|
||||
},
|
||||
"targetPrefetchFailOld": {
|
||||
"message": "Cannot prefetch target: INAV Firmware too old"
|
||||
},
|
||||
"targetPrefetchFailNonINAV": {
|
||||
"message": "Cannot prefetch target: Non-INAV Firmware"
|
||||
},
|
||||
"targetPrefetchFailNoPort": {
|
||||
"message": "Cannot prefetch target: No port"
|
||||
}
|
||||
}
|
|
@ -5,7 +5,7 @@ var appUpdater = appUpdater || {};
|
|||
appUpdater.checkRelease = function (currVersion) {
|
||||
var modalStart;
|
||||
$.get('https://api.github.com/repos/iNavFlight/inav-configurator/releases', function (releaseData) {
|
||||
GUI.log('Loaded release information from GitHub.');
|
||||
GUI.log(chrome.i18n.getMessage('loadedReleaseInfo'));
|
||||
//Git return sorted list, 0 - last release
|
||||
|
||||
let newVersion = releaseData[0].tag_name;
|
||||
|
@ -15,7 +15,7 @@ appUpdater.checkRelease = function (currVersion) {
|
|||
GUI.log(newVersion, chrome.runtime.getManifest().version);
|
||||
GUI.log(currVersion);
|
||||
|
||||
GUI.log('New version available!');
|
||||
GUI.log(chrome.i18n.getMessage('newVersionAvailable'));
|
||||
modalStart = new jBox('Modal', {
|
||||
width: 400,
|
||||
height: 200,
|
||||
|
|
|
@ -3003,7 +3003,7 @@ var mspHelper = (function (gui) {
|
|||
if (waypointId < MISSION_PLANNER.getCountBusyPoints()) {
|
||||
MSP.send_message(MSPCodes.MSP_WP, [waypointId], false, loadWaypoint);
|
||||
} else {
|
||||
GUI.log('Receive time: ' + (new Date().getTime() - startTime) + 'ms');
|
||||
GUI.log(chrome.i18n.getMessage('ReceiveTime') + (new Date().getTime() - startTime) + 'ms');
|
||||
MSP.send_message(MSPCodes.MSP_WP, [waypointId], false, callback);
|
||||
}
|
||||
};
|
||||
|
@ -3025,7 +3025,7 @@ var mspHelper = (function (gui) {
|
|||
};
|
||||
|
||||
function endMission() {
|
||||
GUI.log('Send time: ' + (new Date().getTime() - startTime) + 'ms');
|
||||
GUI.log(chrome.i18n.getMessage('SendTime') + (new Date().getTime() - startTime) + 'ms');
|
||||
MSP.send_message(MSPCodes.MSP_WP_GETINFO, false, false, callback);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -81,7 +81,7 @@ STM32_protocol.prototype.connect = function (port, baud, hex, options, callback)
|
|||
|
||||
self.initialize();
|
||||
} else {
|
||||
GUI.log('<span style="color: red">Failed</span> to open serial port');
|
||||
GUI.log(chrome.i18n.getMessage('failedToOpenSerialPort'));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
|
@ -108,7 +108,7 @@ STM32_protocol.prototype.connect = function (port, baud, hex, options, callback)
|
|||
retries++;
|
||||
if (retries > maxRetries) {
|
||||
clearInterval(interval);
|
||||
GUI.log('<span style="color: red">Failed</span> to flash ' + port);
|
||||
GUI.log(chrome.i18n.getMessage('failedToFlash') + port);
|
||||
}
|
||||
}
|
||||
// Check for DFU devices
|
||||
|
@ -145,7 +145,7 @@ STM32_protocol.prototype.connect = function (port, baud, hex, options, callback)
|
|||
});
|
||||
});
|
||||
} else {
|
||||
GUI.log('<span style="color: red">Failed</span> to open serial port');
|
||||
GUI.log(chrome.i18n.getMessage('failedToOpenSerialPort'));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
6
main.js
6
main.js
|
@ -85,9 +85,9 @@ $(document).ready(function () {
|
|||
}
|
||||
|
||||
// alternative - window.navigator.appVersion.match(/Chrome\/([0-9.]*)/)[1];
|
||||
GUI.log('Running - OS: <strong>' + GUI.operating_system + '</strong>, ' +
|
||||
GUI.log(chrome.i18n.getMessage('getRunningOS') + GUI.operating_system + '</strong>, ' +
|
||||
'Chrome: <strong>' + window.navigator.appVersion.replace(/.*Chrome\/([0-9.]*).*/, "$1") + '</strong>, ' +
|
||||
'Configurator: <strong>' + chrome.runtime.getManifest().version + '</strong>');
|
||||
chrome.i18n.getMessage('getConfiguratorVersion') + chrome.runtime.getManifest().version + '</strong>');
|
||||
|
||||
$('#status-bar .version').text(chrome.runtime.getManifest().version);
|
||||
$('#logo .version').text(chrome.runtime.getManifest().version);
|
||||
|
@ -534,7 +534,7 @@ $(document).ready(function () {
|
|||
|
||||
state = true;
|
||||
}
|
||||
$(this).text(state ? 'Hide Log' : 'Show Log');
|
||||
$(this).html(state ? chrome.i18n.getMessage("mainHideLog") : chrome.i18n.getMessage("mainShowLog"));
|
||||
$(this).data('state', state);
|
||||
|
||||
});
|
||||
|
|
|
@ -172,10 +172,10 @@ TABS.cli.initialize = function (callback) {
|
|||
|
||||
fs.writeFile(result, self.outputHistory, (err) => {
|
||||
if (err) {
|
||||
GUI.log('<span style="color: red">Error writing file</span>');
|
||||
GUI.log(chrome.i18n.getMessage('ErrorWritingFile'));
|
||||
return console.error(err);
|
||||
}
|
||||
GUI.log('File saved');
|
||||
GUI.log(chrome.i18n.getMessage('FileSaved'));
|
||||
});
|
||||
|
||||
});
|
||||
|
@ -250,7 +250,7 @@ TABS.cli.initialize = function (callback) {
|
|||
|
||||
fs.readFile(result, (err, data) => {
|
||||
if (err) {
|
||||
GUI.log('<span style="color: red">Error reading file</span>');
|
||||
GUI.log(chrome.i18n.getMessage('ErrorReadingFile'));
|
||||
return console.error(err);
|
||||
}
|
||||
|
||||
|
|
|
@ -52,9 +52,9 @@ TABS.firmware_flasher.initialize = function (callback) {
|
|||
|
||||
$('input.show_development_releases').click(function() {
|
||||
let selectedTarget = String($('select[name="board"]').val());
|
||||
GUI.log("selected target = " + selectedTarget);
|
||||
GUI.log(chrome.i18n.getMessage('selectedTarget') + selectedTarget);
|
||||
buildBoardOptions();
|
||||
GUI.log("toggled RCs");
|
||||
GUI.log(chrome.i18n.getMessage('toggledRCs'));
|
||||
if (selectedTarget === "0") {
|
||||
TABS.firmware_flasher.getTarget();
|
||||
} else {
|
||||
|
@ -274,7 +274,7 @@ TABS.firmware_flasher.initialize = function (callback) {
|
|||
$('a.load_remote_file').click(function (evt) {
|
||||
|
||||
if ($('select[name="firmware_version"]').val() == "0") {
|
||||
GUI.log("<b>No firmware selected to load</b>");
|
||||
GUI.log(chrome.i18n.getMessage('noFirmwareSelectedToLoad'));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -402,7 +402,7 @@ TABS.firmware_flasher.initialize = function (callback) {
|
|||
STM32.connect(port, baud, parsed_hex, options);
|
||||
} else {
|
||||
console.log('Please select valid serial port');
|
||||
GUI.log('<span style="color: red">Please select valid serial port</span>');
|
||||
GUI.log(chrome.i18n.getMessage('selectValidSerialPort'));
|
||||
}
|
||||
} else {
|
||||
STM32DFU.connect(usbDevices.STM32DFU, parsed_hex, options);
|
||||
|
@ -452,7 +452,7 @@ TABS.firmware_flasher.initialize = function (callback) {
|
|||
});
|
||||
} else {
|
||||
console.log('You don\'t have write permissions for this file, sorry.');
|
||||
GUI.log('You don\'t have <span style="color: red">write permissions</span> for this file');
|
||||
GUI.log(chrome.i18n.getMessage('writePermissionsForFile'));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -635,14 +635,14 @@ TABS.firmware_flasher.cleanup = function (callback) {
|
|||
};
|
||||
|
||||
TABS.firmware_flasher.getTarget = function() {
|
||||
GUI.log("Attempting automatic target selection");
|
||||
GUI.log(chrome.i18n.getMessage('automaticTargetSelect'));
|
||||
|
||||
var selected_baud = parseInt($('#baud').val());
|
||||
var selected_port = $('#port').find('option:selected').data().isManual ? $('#port-override').val() : String($('#port').val());
|
||||
|
||||
if (selected_port !== 'DFU') {
|
||||
if (selected_port == '0') {
|
||||
GUI.log("Cannot prefetch target: No port");
|
||||
GUI.log(chrome.i18n.getMessage('targetPrefetchFailNoPort'));
|
||||
} else {
|
||||
console.log('Connecting to: ' + selected_port);
|
||||
GUI.connecting_to = selected_port;
|
||||
|
@ -654,7 +654,7 @@ TABS.firmware_flasher.getTarget = function() {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
GUI.log("Cannot prefetch target: Flight Controller in DFU");
|
||||
GUI.log(chrome.i18n.getMessage('targetPrefetchFailDFU'));
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -686,7 +686,7 @@ TABS.firmware_flasher.onOpen = function(openInfo) {
|
|||
// disconnect after 10 seconds with error if we don't get IDENT data
|
||||
helper.timeout.add('connecting', function () {
|
||||
if (!CONFIGURATOR.connectionValid) {
|
||||
GUI.log("Cannot prefetch target: " + chrome.i18n.getMessage('noConfigurationReceived'));
|
||||
GUI.log(chrome.i18n.getMessage('targetPrefetchFail') + chrome.i18n.getMessage('noConfigurationReceived'));
|
||||
|
||||
TABS.firmware_flasher.closeTempConnection();
|
||||
}
|
||||
|
@ -709,7 +709,7 @@ TABS.firmware_flasher.onOpen = function(openInfo) {
|
|||
if (CONFIG.flightControllerIdentifier == 'INAV') {
|
||||
MSP.send_message(MSPCodes.MSP_FC_VERSION, false, false, function () {
|
||||
if (semver.lt(CONFIG.flightControllerVersion, "5.0.0")) {
|
||||
GUI.log("Cannot prefetch target: INAV Firmware too old");
|
||||
GUI.log(chrome.i18n.getMessage('targetPrefetchFailOld'));
|
||||
TABS.firmware_flasher.closeTempConnection();
|
||||
} else {
|
||||
mspHelper.getCraftName(function(name) {
|
||||
|
@ -721,13 +721,13 @@ TABS.firmware_flasher.onOpen = function(openInfo) {
|
|||
}
|
||||
});
|
||||
} else {
|
||||
GUI.log("Cannot prefetch target: Non-INAV Firmware");
|
||||
GUI.log(chrome.i18n.getMessage('targetPrefetchFailNonINAV'));
|
||||
TABS.firmware_flasher.closeTempConnection();
|
||||
}
|
||||
});
|
||||
});
|
||||
} else {
|
||||
GUI.log("Cannot prefetch target: " + chrome.i18n.getMessage('serialPortOpenFail'));
|
||||
GUI.log(chrome.i18n.getMessage('targetPrefetchFail') + chrome.i18n.getMessage('serialPortOpenFail'));
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
@ -736,7 +736,7 @@ TABS.firmware_flasher.onValidFirmware = function() {
|
|||
MSP.send_message(MSPCodes.MSP_BUILD_INFO, false, false, function () {
|
||||
MSP.send_message(MSPCodes.MSP_BOARD_INFO, false, false, function () {
|
||||
$('select[name="board"] option[value=' + CONFIG.target + ']').attr("selected", "selected");
|
||||
GUI.log("Target prefetch successful: " + CONFIG.target);
|
||||
GUI.log(chrome.i18n.getMessage('targetPrefetchsuccessful') + CONFIG.target);
|
||||
|
||||
TABS.firmware_flasher.closeTempConnection();
|
||||
$('select[name="board"]').change();
|
||||
|
|
|
@ -1,28 +1,28 @@
|
|||
<div class="tab-mission-control">
|
||||
<div style="padding-top: 20px;padding-left: 20px; padding-right: 20px;position: relative;">
|
||||
<div class="tab_title" data-i18n="tabMissionControl">Mission planner</div>
|
||||
<div class="tab_title" data-i18n="tabMissionControl"></div>
|
||||
</div>
|
||||
<div class="content_wrapper">
|
||||
<div class="cf_column fourth" id="missionControls">
|
||||
<div class="spacer_right">
|
||||
<div id="missionPlannerAction" class="gui_box grey">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title i18n-replaced" data-i18n="missionActionMenuHead">Action Menu</div>
|
||||
<div class="spacer_box_title" data-i18n="missionActionMenuHead"></div>
|
||||
<div class="btnMenu btnMenuIcon show_btn" id="showHideActionButton">
|
||||
<a class="ic_hide" href="#" title="Hide"></a>
|
||||
<a class="ic_hide" href="#" i18n_title="missionTitleHide"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="spacer" id="ActionContent">
|
||||
|
||||
<div class="btn save_btn">
|
||||
<a id="loadFileMissionButton" class="btnicon ic_loadFromFile" href="#" title="Load Mission File"></a>
|
||||
<a id="saveFileMissionButton" class="btnicon ic_save2File" href="#" title="Save Mission File"></a>
|
||||
<a id="loadFileMissionButton" class="btnicon ic_loadFromFile" href="#" i18n_title="missionTitleLoadMissionFile"></a>
|
||||
<a id="saveFileMissionButton" class="btnicon ic_save2File" href="#" i18n_title="missionTitleSaveMissionFile"></a>
|
||||
</div>
|
||||
<div class="btn save_btn">
|
||||
<a id="loadMissionButton" class="btnicon ic_loadFromFC" href="#" title="Load mission from FC"</a>
|
||||
<a id="saveMissionButton" class="btnicon ic_save2FC" href="#" title="Save mission to FC"</a>
|
||||
<a id="loadEepromMissionButton" class="btnicon ic_loadFromEprom" href="#" title="Load Eeprom mission"></a>
|
||||
<a id="saveEepromMissionButton" class="btnicon ic_save2Eprom" href="#" title="Save Eeprom mission"></a>
|
||||
<a id="loadMissionButton" class="btnicon ic_loadFromFC" href="#" i18n_title="missionTitleLoadMissionFromFC" </a>
|
||||
<a id="saveMissionButton" class="btnicon ic_save2FC" href="#" i18n_title="missionTitleSaveMissionToFC" </a>
|
||||
<a id="loadEepromMissionButton" class="btnicon ic_loadFromEprom" href="#" i18n_title="missionTitleLoadEepromMission"></a>
|
||||
<a id="saveEepromMissionButton" class="btnicon ic_save2Eprom" href="#" i18n_title="missionTitleSaveEepromMission"></a>
|
||||
</div>
|
||||
<hr>
|
||||
<!-- <div class="btn">
|
||||
|
@ -33,33 +33,33 @@
|
|||
</div>
|
||||
<hr> -->
|
||||
<div id="removeAllPoints" class="btn btn-danger" style="padding-top: 1px; display: inline-block">
|
||||
<a class="btnicon ic_removeAll" href="#" title="Remove all"></a>
|
||||
<a class="btnicon ic_removeAll" href="#" i18n_title="missionTitleRemoveAll"></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="missionPlannerTotalInfo" class="gui_box grey">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title i18n-replaced" data-i18n="missionTotalInformationHead">Total information</div>
|
||||
<div class="spacer_box_title" data-i18n="missionTotalInformationHead"></div>
|
||||
<div class="btnMenu btnMenuIcon show_btn" id="showHideInfoButton">
|
||||
<a class="ic_hide" href="#" title="Hide"></a>
|
||||
<a class="ic_hide" href="#" i18n_title="missionTitleHide"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="spacer" id="InfoContent">
|
||||
<div id="infoMissionFilename" style="padding-bottom: 2px;">
|
||||
<span>Filename loaded:</span>
|
||||
<span data-i18n="missionTotalInfoFilenameLoaded"></span>
|
||||
<span id="missionFilename" style="color: #3394b5"></span>
|
||||
</div>
|
||||
<div id="infoMissionDistance" style="padding-bottom: 2px;">
|
||||
<span>Distance (m):</span>
|
||||
<span data-i18n="missionTotalInfoDistance"></span>
|
||||
<span id="missionDistance"></span>
|
||||
</div>
|
||||
<div id="infoAvailablePoints" style="padding-bottom: 2px;">
|
||||
<span>Available Points</span>
|
||||
<span data-i18n="missionTotalInfoAvailablePoints"></span>
|
||||
<span id="availablePoints">0/0</span>
|
||||
</div>
|
||||
<div id="infoMissionValid" style="padding-bottom: 2px;">
|
||||
<span>Mission valid</span>
|
||||
<span data-i18n="missionTotalInfoMissionValid"></span>
|
||||
<div id="missionValid" style="display: inline-block"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -67,23 +67,23 @@
|
|||
|
||||
<div id="missionPlannerSettings" class="gui_box grey" style="display: none">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title i18n-replaced" data-i18n="missionDefaultSettingsHead">Default settings</div>
|
||||
<div class="spacer_box_title" data-i18n="missionDefaultSettingsHead"></div>
|
||||
<div class="btnMenu btnMenuIcon save_btn">
|
||||
<a id="cancelSettings" class="ic_cancel" href="#" title="Cancel"></a>
|
||||
<a id="saveSettings" class="ic_save" href="#" title="Save"></a>
|
||||
<a id="cancelSettings" class="ic_cancel" href="#" i18n_title="missionTitleCancel"></a>
|
||||
<a id="saveSettings" class="ic_save" href="#" i18n_title="missionTitleSave"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="spacer">
|
||||
<div class="point">
|
||||
<label class="point-label" for="MPdefaultPointAlt">Alt (cm): </label>
|
||||
<label class="point-label" for="MPdefaultPointAlt" data-i18n="missionDefaultPointAlt"></label>
|
||||
<input id="MPdefaultPointAlt" type="text" value="0" required>
|
||||
</div>
|
||||
<div class="point">
|
||||
<label class="point-label" for="MPdefaultPointSpeed">Speed (cm/s): </label>
|
||||
<label class="point-label" for="MPdefaultPointSpeed" data-i18n="missionDefaultPointSpeed"></label>
|
||||
<input id="MPdefaultPointSpeed" type="text" value="0" required>
|
||||
</div>
|
||||
<div class="point">
|
||||
<label class="point-label" for="MPdefaultSafeRangeSH">Radius (m): </label>
|
||||
<label class="point-label" for="MPdefaultSafeRangeSH" data-i18n="missionDefaultSafeRangeSH"></label>
|
||||
<input id="MPdefaultSafeRangeSH" type="text" value="0" required>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -91,38 +91,38 @@
|
|||
|
||||
<div id="missionPlannerMultiMission" class="gui_box grey" style="display: none">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title i18n-replaced" data-i18n="missionMultiMissionHead">Multi Missions</div>
|
||||
<div class="spacer_box_title" data-i18n="missionMultiMissionHead"></div>
|
||||
<div class="btnMenu btnMenuIcon save_btn">
|
||||
<div id="showHideMultimissionButton">
|
||||
<a class="ic_hide" href="#" title="Hide"></a>
|
||||
<a class="ic_hide" href="#" i18n_title="missionTitleHide"></a>
|
||||
</div>
|
||||
<a id="cancelMultimission" class="ic_cancel" href="#" title="Cancel"></a>
|
||||
<a id="cancelMultimission" class="ic_cancel" href="#" i18n_title="missionTitleCancel"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="spacer" id="multimissionContent">
|
||||
<div class="btn btnTable btnTableIcon save_btn">
|
||||
<div>
|
||||
<span>Missions Info:</span>
|
||||
<span data-i18n="missionMultiMissionsInfo"></span>
|
||||
<span id="multimissionInfo">None</span>
|
||||
</div>
|
||||
<div style="margin-top: 5px">
|
||||
<span>Active Mission:</span>
|
||||
<span data-i18n="missionMultiActiveMission"></span>
|
||||
<span id="activeNissionIndex">1</span>
|
||||
<a class="ic_save disabled" id="setActiveMissionButton" href="#" title="Set Active"></a>
|
||||
<a class="ic_save disabled" id="setActiveMissionButton" href="#" i18n_title="missionTitleSetActive"></a>
|
||||
</div>
|
||||
<hr>
|
||||
<div style="display: inline-block">
|
||||
<label for="multimissionOptionList">Mission No.</label>
|
||||
<label for="multimissionOptionList" data-i18n="missionMultiMissionNo."></label>
|
||||
<select name="Number" id="multimissionOptionList" style="width: 50px">
|
||||
<option value="0">ALL</option>
|
||||
</select>
|
||||
<div style="float: right">
|
||||
<span>Update All</span>
|
||||
<a class="ic_save disabled" id="updateMultimissionButton" href="#" title="Update All"></a>
|
||||
<span data-i18n="missionMultiUpdateAll"></span>
|
||||
<a class="ic_save disabled" id="updateMultimissionButton" href="#" i18n_title="missionTitleUpdateAll"></a>
|
||||
</div>
|
||||
<div style="margin-bottom: 5px; margin-top: 5px">
|
||||
<label for="addMultimissionButton">Add New Mission</label>
|
||||
<a class="ic_add disabled" id="addMultimissionButton" href="#" title="Add"></a>
|
||||
<label for="addMultimissionButton" data-i18n="missionMultiAddNewMission"></label>
|
||||
<a class="ic_add disabled" id="addMultimissionButton" href="#" i18n_title="missionTitleAdd"></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -131,12 +131,12 @@
|
|||
|
||||
<div id="missionPlannerHome" class="gui_box grey" style="display: none">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title i18n-replaced" data-i18n="missionHomeHead">Take Off home</div>
|
||||
<div class="spacer_box_title" data-i18n="missionHomeHead"></div>
|
||||
<div class="btnMenu btnMenuIcon save_btn">
|
||||
<div id="showHideHomeButton">
|
||||
<a class="ic_hide" href="#" title="Hide"></a>
|
||||
<a class="ic_hide" href="#" i18n_title="missionTitleHide"></a>
|
||||
</div>
|
||||
<a id="cancelHome" class="ic_cancel" href="#" title="Cancel"></a>
|
||||
<a id="cancelHome" class="ic_cancel" href="#" i18n_title="missionTitleCancel"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="spacer" id="HomeContent">
|
||||
|
@ -152,8 +152,9 @@
|
|||
</thead>
|
||||
<tbody id="homeTableBody">
|
||||
<tr>
|
||||
<td><div id="viewHomePoint" class="btnTable btnTableIcon">
|
||||
<a class="ic_center" data-role="home-center" href="#" title="move to center view"></a>
|
||||
<td>
|
||||
<div id="viewHomePoint" class="btnTable btnTableIcon">
|
||||
<a class="ic_center" data-role="home-center" href="#" i18n_title="missionTitleMoveToCenterView"></a>
|
||||
</div>
|
||||
</td>
|
||||
<td><input type="number" class="home-lat" /></td>
|
||||
|
@ -165,21 +166,21 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="point" id="elevationEarthModelclass" style="display: none">
|
||||
<label class="spacer_box_title i18n-replaced" for="elevationEarthModel">Use Sea Level Earth DEM Model: </label>
|
||||
<label class="spacer_box_title" for="elevationEarthModel" data-i18n="missionLevelEarthDEMModel"></label>
|
||||
<input id="elevationEarthModel" type="checkbox" value="0" class="togglemedium" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="missionPlannerSafehome" class="gui_box grey" style="display: none">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title i18n-replaced" data-i18n="missionSafehomeHead">Safe Home manager</div>
|
||||
<div class="spacer_box_title" data-i18n="missionSafehomeHead"></div>
|
||||
<div class="btnMenu btnMenuIcon save_btn">
|
||||
<div id="showHideSafehomeButton">
|
||||
<a class="ic_hide" href="#" title="Hide"></a>
|
||||
<a class="ic_hide" href="#" i18n_title="missionTitleHide"></a>
|
||||
</div>
|
||||
<a id="cancelSafehome" class="ic_cancel" href="#" title="Cancel"></a>
|
||||
<a id="saveEepromSafehomeButton" class="ic_save2Eprom" href="#" title="Save Eeprom Safehome"></a>
|
||||
<a id="loadEepromSafehomeButton" class="ic_loadFromEprom" href="#" title="Load Eeprom Safehome"></a>
|
||||
<a id="cancelSafehome" class="ic_cancel" href="#" i18n_title="missionTitleCancel"></a>
|
||||
<a id="saveEepromSafehomeButton" class="ic_save2Eprom" href="#" i18n_title="missionTitleSaveEepromSafehome"></a>
|
||||
<a id="loadEepromSafehomeButton" class="ic_loadFromEprom" href="#" i18n_title="missionTitleLoadEepromSafehome"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="spacer" id="SafehomeContent">
|
||||
|
@ -199,15 +200,15 @@
|
|||
</table>
|
||||
<hr>
|
||||
<div class="spacer" id="safehomeLegend">
|
||||
<span><b>Legend : </b></span>
|
||||
<span><b data-i18n="SafehomeLegend"></b></span>
|
||||
<div class="legendItem">
|
||||
<span class="fill" style="border-bottom-color:#900C3F"></span>
|
||||
<span class="textLegend">Max distance (m):</span>
|
||||
<span class="textLegend" data-i18n="SafehomeMaxDistance"></span>
|
||||
<span id="safeHomeMaxDistance" class="valueLegend"></span>
|
||||
</div>
|
||||
<div class="legendItem">
|
||||
<span class="fill"></span>
|
||||
<span class="textLegend">Safe Radius (m):</span>
|
||||
<span class="textLegend" data-i18n="SafehomeSafeRadius"></span>
|
||||
<span id="SafeHomeSafeDistance" class="valueLegend"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -217,16 +218,16 @@
|
|||
|
||||
<div class="gui_box grey" id="MPeditPoint" style="display: none">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title i18n-replaced" data-i18n="editPointHead" id="EditPointNumber">Edit point</div>
|
||||
<div class="spacer_box_title" data-i18n="editPointHead" id="EditPointNumber"></div>
|
||||
<div class="btnMenu btnMenuIcon">
|
||||
<div id="showHideWPeditButton" class="save_btn">
|
||||
<a class="ic_hide" href="#" title="Hide"></a>
|
||||
<a class="ic_hide" href="#" i18n_title="missionTitleHide"></a>
|
||||
</div>
|
||||
<div id="removePoint" class="btn btnMenu-danger">
|
||||
<a id="removePointButton" class="ic_removeAll" href="#" title="Remove"></a>
|
||||
<a id="removePointButton" class="ic_removeAll" href="#" i18n_title="missionTitlRemove"></a>
|
||||
</div>
|
||||
<div id="editMission" class="save_btn" style="display: none">
|
||||
<a id="editMissionButton" class="ic_setup" href="#" title="Edit Mission"></a>
|
||||
<a id="editMissionButton" class="ic_setup" href="#" i18n_title="missionTitlEditMission"></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -274,7 +275,7 @@
|
|||
<label class="point-label" for="pointP1">Parameter 1: </label>
|
||||
<input id="pointP1" type="text" value="0" required>
|
||||
</div>
|
||||
<div class="point" id="pointP2class" style="display: none">
|
||||
<div class="point" id="pointP2class" style="display: none">
|
||||
<label class="point-label" for="pointP2">Parameter 2: </label>
|
||||
<input id="pointP2" type="text" value="0" required>
|
||||
</div>
|
||||
|
@ -286,26 +287,26 @@
|
|||
<div class="userActionContainer">4 <input id="pointP3UserAction4" type="checkbox" value="0" class="togglemedium" checked required></div>
|
||||
</div>
|
||||
<div>
|
||||
<table class="waypointOptionsTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 30px">
|
||||
<div id="addOptionsPoint" class="btn btnTable btnTableIcon btnTable-success">
|
||||
<a id="addOptionsPointButton" class="ic_add" data-role="waypointOptions-add" href="#" style="float: center" title="Add"></a>
|
||||
</div>
|
||||
</th>
|
||||
<th style="width: 50px" data-i18n="WaypointOptionId"></th>
|
||||
<th style="width: 80px" data-i18n="WaypointOptionAction"></th>
|
||||
<th style="width: 120px" data-i18n="WaypointOptionP1"></th>
|
||||
<th style="width: 120px" data-i18n="WaypointOptionP2"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="waypointOptionsTableBody">
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="waypointOptionsTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 30px">
|
||||
<div id="addOptionsPoint" class="btn btnTable btnTableIcon btnTable-success">
|
||||
<a id="addOptionsPointButton" class="ic_add" data-role="waypointOptions-add" href="#" style="float: center" title="Add"></a>
|
||||
</div>
|
||||
</th>
|
||||
<th style="width: 50px" data-i18n="WaypointOptionId"></th>
|
||||
<th style="width: 80px" data-i18n="WaypointOptionAction"></th>
|
||||
<th style="width: 120px" data-i18n="WaypointOptionP1"></th>
|
||||
<th style="width: 120px" data-i18n="WaypointOptionP2"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="waypointOptionsTableBody">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- <div class="point-radio" id="pointOptionclass" style="display: none">
|
||||
<!-- <div class="point-radio" id="pointOptionclass" style="display: none">
|
||||
<div class="radio-line">
|
||||
<input type="radio" id="Options_None" name="Options" value="None" checked>
|
||||
<label class="radio-options" for="Options_None">None</label><br>
|
||||
|
@ -339,17 +340,17 @@
|
|||
<div class="cf_column threefourth_left" style="height: 100%;">
|
||||
<div id="missionMap"></div>
|
||||
<div id="missionPlannerElevation" class="gui_box grey" style="display: none">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title i18n-replaced" data-i18n="missionDefaultElevationHead">Elevation Profile</div>
|
||||
<div class="btnMenu btnMenuIcon save_btn">
|
||||
<a id="cancelPlot" class="ic_cancel" href="#" title="Cancel"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="spacer">
|
||||
<div id="elevationDiv">
|
||||
</div>
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title" data-i18n="missionDefaultElevationHead"></div>
|
||||
<div class="btnMenu btnMenuIcon save_btn">
|
||||
<a id="cancelPlot" class="ic_cancel" href="#" i18n_title="missionTitleCancel"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="spacer">
|
||||
<div id="elevationDiv">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="notLoadMap" data-i18n="useOnlyStandalone" style="display: none;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1797,7 +1797,7 @@ TABS.mission_control.initialize = function (callback) {
|
|||
clearEditForm();
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
GUI.log("Previous selection was not a WAYPOINT!");
|
||||
GUI.log(chrome.i18n.getMessage('notAWAYPOINT'));
|
||||
}
|
||||
}
|
||||
selectedFeature = map.forEachFeatureAtPixel(evt.pixel,
|
||||
|
@ -2259,25 +2259,25 @@ TABS.mission_control.initialize = function (callback) {
|
|||
|
||||
$('#loadEepromSafehomeButton').on('click', function () {
|
||||
$(this).addClass('disabled');
|
||||
GUI.log('Start of getting Safehome points');
|
||||
GUI.log(chrome.i18n.getMessage('startGettingSafehomePoints'));
|
||||
mspHelper.loadSafehomes();
|
||||
setTimeout(function(){
|
||||
renderSafehomesTable();
|
||||
cleanSafehomeLayers();
|
||||
renderSafehomesOnMap();
|
||||
GUI.log('End of getting Safehome points');
|
||||
GUI.log(chrome.i18n.getMessage('endGettingSafehomePoints'));
|
||||
$('#loadEepromSafehomeButton').removeClass('disabled');
|
||||
}, 500);
|
||||
|
||||
});
|
||||
|
||||
$('#saveEepromSafehomeButton').on('click', function () {
|
||||
$('#saveEepromSafehomeButton').on('click', function() {
|
||||
$(this).addClass('disabled');
|
||||
GUI.log('Start of sending Safehome points');
|
||||
GUI.log(chrome.i18n.getMessage('startSendingSafehomePoints'));
|
||||
mspHelper.saveSafehomes();
|
||||
setTimeout(function(){
|
||||
mspHelper.saveToEeprom();
|
||||
GUI.log('End of sending Safehome points');
|
||||
GUI.log(chrome.i18n.getMessage('endSendingSafehomePoints'));
|
||||
$('#saveEepromSafehomeButton').removeClass('disabled');
|
||||
}, 500);
|
||||
});
|
||||
|
@ -2431,7 +2431,7 @@ TABS.mission_control.initialize = function (callback) {
|
|||
if ((markers.length || multimissionCount) && !confirm(chrome.i18n.getMessage(message))) return;
|
||||
removeAllWaypoints();
|
||||
$(this).addClass('disabled');
|
||||
GUI.log('Start get point');
|
||||
GUI.log(chrome.i18n.getMessage('startGetPoint'));
|
||||
getWaypointsFromFC(false);
|
||||
});
|
||||
|
||||
|
@ -2441,7 +2441,7 @@ TABS.mission_control.initialize = function (callback) {
|
|||
return;
|
||||
}
|
||||
$(this).addClass('disabled');
|
||||
GUI.log('Start send point');
|
||||
GUI.log(chrome.i18n.getMessage('startSendPoint'));
|
||||
sendWaypointsToFC(false);
|
||||
});
|
||||
|
||||
|
@ -2450,7 +2450,7 @@ TABS.mission_control.initialize = function (callback) {
|
|||
if ((markers.length || multimissionCount) && !confirm(chrome.i18n.getMessage(message))) return;
|
||||
removeAllWaypoints();
|
||||
$(this).addClass('disabled');
|
||||
GUI.log('Start get point');
|
||||
GUI.log(chrome.i18n.getMessage('startGetPoint'));
|
||||
getWaypointsFromFC(true);
|
||||
});
|
||||
|
||||
|
@ -2460,7 +2460,7 @@ TABS.mission_control.initialize = function (callback) {
|
|||
return;
|
||||
}
|
||||
$(this).addClass('disabled');
|
||||
GUI.log('Start send point');
|
||||
GUI.log(chrome.i18n.getMessage('startSendPoint'));
|
||||
sendWaypointsToFC(true);
|
||||
});
|
||||
|
||||
|
@ -2494,17 +2494,17 @@ TABS.mission_control.initialize = function (callback) {
|
|||
/////////////////////////////////////////////
|
||||
function loadMissionFile(filename) {
|
||||
const fs = require('fs');
|
||||
if (!window.xml2js) return GUI.log('<span style="color: red">Error reading file (xml2js not found)</span>');
|
||||
if (!window.xml2js) return GUI.log(chrome.i18n.getMessage('errorReadingFileXml2jsNotFound'));
|
||||
|
||||
fs.readFile(filename, (err, data) => {
|
||||
if (err) {
|
||||
GUI.log('<span style="color: red">Error reading file</span>');
|
||||
GUI.log(chrome.i18n.getMessage('errorReadingFile'));
|
||||
return console.error(err);
|
||||
}
|
||||
|
||||
window.xml2js.Parser({ 'explicitChildren': true, 'preserveChildrenOrder': true }).parseString(data, (err, result) => {
|
||||
if (err) {
|
||||
GUI.log('<span style="color: red">Error parsing file</span>');
|
||||
GUI.log(chrome.i18n.getMessage('errorParsingFile'));
|
||||
return console.error(err);
|
||||
}
|
||||
|
||||
|
@ -2636,7 +2636,7 @@ TABS.mission_control.initialize = function (callback) {
|
|||
}
|
||||
updateTotalInfo();
|
||||
let sFilename = String(filename.split('\\').pop().split('/').pop());
|
||||
GUI.log(sFilename+' has been loaded successfully !');
|
||||
GUI.log(sFilename + chrome.i18n.getMessage('loadedSuccessfully'));
|
||||
updateFilename(sFilename);
|
||||
});
|
||||
});
|
||||
|
@ -2644,7 +2644,7 @@ TABS.mission_control.initialize = function (callback) {
|
|||
|
||||
function saveMissionFile(filename) {
|
||||
const fs = require('fs');
|
||||
if (!window.xml2js) return GUI.log('<span style="color: red">Error writing file (xml2js not found)</span>');
|
||||
if (!window.xml2js) return GUI.log(chrome.i18n.getMessage('errorWritingFileXml2jsNotFound'));
|
||||
|
||||
var center = ol.proj.toLonLat(map.getView().getCenter());
|
||||
var zoom = map.getView().getZoom();
|
||||
|
@ -2693,11 +2693,11 @@ TABS.mission_control.initialize = function (callback) {
|
|||
xml = xml.replace(/missionitem mission/g, 'meta mission');
|
||||
fs.writeFile(filename, xml, (err) => {
|
||||
if (err) {
|
||||
GUI.log('<span style="color: red">Error writing file</span>');
|
||||
GUI.log(chrome.i18n.getMessage('ErrorWritingFile'));
|
||||
return console.error(err);
|
||||
}
|
||||
let sFilename = String(filename.split('\\').pop().split('/').pop());
|
||||
GUI.log(sFilename+' has been saved successfully !');
|
||||
GUI.log(sFilename + chrome.i18n.getMessage('savedSuccessfully'));
|
||||
updateFilename(sFilename);
|
||||
});
|
||||
}
|
||||
|
@ -2715,7 +2715,7 @@ TABS.mission_control.initialize = function (callback) {
|
|||
|
||||
function getWaypointData() {
|
||||
mspHelper.loadWaypoints(function() {
|
||||
GUI.log('End get point');
|
||||
GUI.log(chrome.i18n.getMessage('endGetPoint'));
|
||||
if (loadEeprom) {
|
||||
GUI.log(chrome.i18n.getMessage('eeprom_load_ok'));
|
||||
$('#loadEepromMissionButton').removeClass('disabled');
|
||||
|
@ -2757,7 +2757,7 @@ TABS.mission_control.initialize = function (callback) {
|
|||
MISSION_PLANNER.copy(mission);
|
||||
MISSION_PLANNER.update(false, true, true);
|
||||
mspHelper.saveWaypoints(function() {
|
||||
GUI.log('End send point');
|
||||
GUI.log(chrome.i18n.getMessage('endSendPoint'));
|
||||
if (saveEeprom) {
|
||||
$('#saveEepromMissionButton').removeClass('disabled');
|
||||
GUI.log(chrome.i18n.getMessage('eeprom_saved_ok'));
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
<div class="half" style="width: calc(50% - 10px); margin-left: 10px;">
|
||||
<select id="mixer-preset"></select>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mixer-load-button">
|
||||
<div id="needToUpdateMixerMessage" class="is-hidden" data-i18n="mixerNotLoaded"></div>
|
||||
<div class="btn default_btn narrow green is-hidden">
|
||||
|
@ -90,7 +90,7 @@
|
|||
<table id="motor-mix-table" class="mixer-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 75px">Motor</th>
|
||||
<th style="width: 75px" data-i18n="controlAxisMotor"></th>
|
||||
<th data-i18n="controlAxisThrottle"></th>
|
||||
<th data-i18n="controlAxisRoll"></th>
|
||||
<th data-i18n="controlAxisPitch"></th>
|
||||
|
|
|
@ -62,8 +62,7 @@
|
|||
|
||||
<div class="gui_box grey">
|
||||
<div class="gui_box_titlebar" align="left">
|
||||
<div class="spacer_box_title">
|
||||
Outboard serial logging device
|
||||
<div class="spacer_box_title" data-i18n="serialLogging">
|
||||
</div>
|
||||
</div>
|
||||
<div class="spacer_box">
|
||||
|
@ -73,8 +72,7 @@
|
|||
|
||||
<div class="gui_box grey require-dataflash-supported">
|
||||
<div class="gui_box_titlebar" align="left">
|
||||
<div class="spacer_box_title">
|
||||
Onboard dataflash chip
|
||||
<div class="spacer_box_title" data-i18n="onboardLoggingFlashLogger">
|
||||
</div>
|
||||
</div>
|
||||
<div class="spacer_box">
|
||||
|
@ -86,7 +84,7 @@
|
|||
<div class="dataflash-confirm-erase-note" data-i18n="dataflashConfirmEraseNote"></div>
|
||||
<div class="dataflash-erase-progress">
|
||||
<div class="data-loading">
|
||||
<p>Erase in progress, please wait...</p>
|
||||
<p data-i18n="dataflashEraseing"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
|
@ -134,8 +132,7 @@
|
|||
<div class="require-sdcard-supported">
|
||||
<div class="gui_box grey">
|
||||
<div class="gui_box_titlebar" align="left">
|
||||
<div class="spacer_box_title">
|
||||
Onboard SD card
|
||||
<div class="spacer_box_title" data-i18n="OnboardSDCard">
|
||||
</div>
|
||||
</div>
|
||||
<div class="spacer_box">
|
||||
|
|
|
@ -3076,7 +3076,7 @@ TABS.osd.initialize = function (callback) {
|
|||
Settings.saveInputs().then(function () {
|
||||
var self = this;
|
||||
MSP.promise(MSPCodes.MSP_EEPROM_WRITE);
|
||||
GUI.log('OSD settings saved');
|
||||
GUI.log(chrome.i18n.getMessage('osdSettingsSaved'));
|
||||
var oldText = $(this).text();
|
||||
$(this).html("Saved");
|
||||
setTimeout(function () {
|
||||
|
@ -3264,7 +3264,7 @@ TABS.osd.initialize = function (callback) {
|
|||
});
|
||||
} else {
|
||||
console.log('You don\'t have write permissions for this file, sorry.');
|
||||
GUI.log('You don\'t have <span style="color: red">write permissions</span> for this file');
|
||||
GUI.log(chrome.i18n.getMessage('writePermissionsForFile'));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
<span data-i18n="throttleIdle"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="number">
|
||||
<input id="throttle_scale" data-setting="throttle_scale" type="number" data-step="0.01" />
|
||||
<label for="throttle_scale">
|
||||
|
@ -94,7 +94,7 @@
|
|||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="gui_box grey">
|
||||
|
@ -108,10 +108,10 @@
|
|||
<div class="bar-wrapper"></div>
|
||||
<div class="clear-both"></div>
|
||||
<div class="motor_testing">
|
||||
<div class="sliders motor-sliders"></div>
|
||||
<div class="values">
|
||||
<ul class="motor-values"></ul>
|
||||
</div>
|
||||
<div class="sliders motor-sliders"></div>
|
||||
<div class="values">
|
||||
<ul class="motor-values"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="motors right">
|
||||
|
@ -123,15 +123,15 @@
|
|||
<div class="half">
|
||||
<table class="output-stats-table">
|
||||
<tr>
|
||||
<th>Acc. noise RMS</th>
|
||||
<th i18n="outputStatsTableAcc"></th>
|
||||
<td class="acc-rms"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Current [A]</th>
|
||||
<th i18n="outputStatsTableCurrent"></th>
|
||||
<td class="current-current"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Voltage [V]</th>
|
||||
<th i18n="outputStatsTableVoltage"></th>
|
||||
<td class="current-voltage"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -193,9 +193,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="content_toolbar">
|
||||
<div class="btn save_btn">
|
||||
<a class="update" href="#" data-i18n="servosButtonSave"></a>
|
||||
<a class="save" href="#" data-i18n="configurationButtonSave"></a>
|
||||
</div>
|
||||
<div class="btn save_btn">
|
||||
<a class="update" href="#" data-i18n="servosButtonSave"></a>
|
||||
<a class="save" href="#" data-i18n="configurationButtonSave"></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -12,12 +12,12 @@
|
|||
<table class="ports spacebottom">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Identifier</td>
|
||||
<td>Data</td>
|
||||
<td>Telemetry</td>
|
||||
<td>RX</td>
|
||||
<td i18n="portsIdentifier"></td>
|
||||
<td i18n="portsConfiguration"></td>
|
||||
<td i18n="portsTelemetryOut"></td>
|
||||
<td i18n="portsSerialRx"></td>
|
||||
<td data-i18n="portColumnSensors"></td>
|
||||
<td class='peripherls-column'>Peripherals</td>
|
||||
<td class='peripherls-column' i18n="portsPeripherals"></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<div class="tab-configuration tab-programming toolbar_fixed_bottom">
|
||||
<div class="content_wrapper" id="programming-main-content">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="tab_title subtab__header">
|
||||
<span class="subtab__header_label subtab__header_label--current" for="subtab-lc">Logic Conditions</span>
|
||||
<span class="subtab__header_label" for="subtab-pid">PID Controllers</span>
|
||||
<span class="subtab__header_label subtab__header_label--current" for="subtab-lc" data-i18n="LogicConditions"></span>
|
||||
<span class="subtab__header_label" for="subtab-pid" data-i18n="PIDControllers"></span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="gvar__container">
|
||||
<div class="gvar__wrapper">
|
||||
<div class="gvar__cell">
|
||||
|
|
|
@ -11,20 +11,20 @@
|
|||
<div class="gui_box">
|
||||
<div class="info">
|
||||
<div class="checkboxes">
|
||||
<label><input type="checkbox" name="gyro_on" class="first" />Gyroscope</label> <label><input
|
||||
type="checkbox" name="accel_on" />Accelerometer</label> <label><input type="checkbox"
|
||||
name="mag_on" />Magnetometer</label> <label><input type="checkbox" name="baro_on" />Barometer</label> <label><input
|
||||
type="checkbox" name="sonar_on" />Sonar</label> <label><input type="checkbox" name="airspeed_on" />Air speed</label> <label><input
|
||||
type="checkbox" name="temperature_on" />Temperatures</label><label><input type="checkbox" name="debug_on" />Debug</label>
|
||||
<label><input type="checkbox" name="gyro_on" class="first" /><span i18n="sensorsGyroSelect"></label> <label><input
|
||||
type="checkbox" name="accel_on" /><span i18n="sensorsAccelSelect"></span></label> <label><input type="checkbox"
|
||||
name="mag_on" /><span i18n="sensorsMagSelect"></span></label> <label><input type="checkbox" name="baro_on" /><span i18n="sensorsAltitudeSelect"></span></label> <label><input
|
||||
type="checkbox" name="sonar_on" /><span i18n="sensorsSonarSelect"></span></label> <label><input type="checkbox" name="airspeed_on" /><span i18n="sensorsAirSpeedSelect"></span></label> <label><input
|
||||
type="checkbox" name="temperature_on" /><span i18n="sensorsTemperaturesSelect"></span></label><label><input type="checkbox" name="debug_on" /><span i18n="sensorsDebugSelect"></span></label>
|
||||
|
||||
<a class="debug-trace" href="javascript:void(0);">Open Debug Trace</a>
|
||||
<a class="debug-trace" href="javascript:void(0);"><span i18n="sensorsDebugTrace"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wrapper gyro">
|
||||
<div class="gui_box grey">
|
||||
<div class="plot_control">
|
||||
<div class="title">Gyroscope - deg/s</div>
|
||||
<div class="title" i18n="sensorsGyroscope"></div>
|
||||
<dl>
|
||||
<dt i18n="sensorsRefresh"></dt>
|
||||
<dd class="rate">
|
||||
|
@ -70,7 +70,7 @@
|
|||
<div class="wrapper accel">
|
||||
<div class="gui_box grey">
|
||||
<div class="plot_control">
|
||||
<div class="title">Accelerometer - g</div>
|
||||
<div class="title" i18n="sensorsAccelerometer"></div>
|
||||
<dl>
|
||||
<dt i18n="sensorsRefresh"></dt>
|
||||
<dd class="rate">
|
||||
|
@ -116,7 +116,7 @@
|
|||
<div class="wrapper mag">
|
||||
<div class="gui_box grey">
|
||||
<div class="plot_control">
|
||||
<div class="title">Magnetometer - Ga</div>
|
||||
<div class="title" i18n="sensorsMagnetometer"></div>
|
||||
<dl>
|
||||
<dt i18n="sensorsRefresh"></dt>
|
||||
<dd class="rate">
|
||||
|
@ -160,7 +160,7 @@
|
|||
<div class="wrapper altitude">
|
||||
<div class="gui_box grey">
|
||||
<div class="plot_control">
|
||||
<div class="title">Barometer - meters</div>
|
||||
<div class="title" i18n="sensorsBarometer"></div>
|
||||
<dl>
|
||||
<dt i18n="sensorsRefresh"></dt>
|
||||
<dd class="rate">
|
||||
|
@ -196,7 +196,7 @@
|
|||
<div class="wrapper sonar">
|
||||
<div class="gui_box grey">
|
||||
<div class="plot_control">
|
||||
<div class="title">Sonar - cm</div>
|
||||
<div class="title" i18n="sensorsSonar"></div>
|
||||
<dl>
|
||||
<dt i18n="sensorsRefresh"></dt>
|
||||
<dd class="rate">
|
||||
|
@ -229,7 +229,7 @@
|
|||
<div class="wrapper airspeed">
|
||||
<div class="gui_box grey">
|
||||
<div class="plot_control">
|
||||
<div class="title">Air speed - cm/s</div>
|
||||
<div class="title" i18n="sensorsAirspeed"></div>
|
||||
<dl>
|
||||
<dt i18n="sensorsRefresh"></dt>
|
||||
<dd class="rate">
|
||||
|
@ -263,9 +263,9 @@
|
|||
<div class="wrapper temperature">
|
||||
<div class="gui_box grey">
|
||||
<div class="plot_control">
|
||||
<div class="title">Temperature 0 - °C</div>
|
||||
<div class="title" i18n="sensorsTemperature0"></div>
|
||||
<dl>
|
||||
<dt>value:</dt>
|
||||
<dt i18n="sensorsTemperatureValue"></dt>
|
||||
<dd class="x">0</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
@ -278,9 +278,9 @@
|
|||
</svg>
|
||||
<div class="clear-both"></div>
|
||||
<div class="plot_control">
|
||||
<div class="title">Temperature 1 - °C</div>
|
||||
<div class="title" i18n="sensorsTemperature1"></div>
|
||||
<dl>
|
||||
<dt>value:</dt>
|
||||
<dt i18n="sensorsTemperatureValue"></dt>
|
||||
<dd class="x">0</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
@ -293,9 +293,9 @@
|
|||
</svg>
|
||||
<div class="clear-both"></div>
|
||||
<div class="plot_control">
|
||||
<div class="title">Temperature 2 - °C</div>
|
||||
<div class="title" i18n="sensorsTemperature2"></div>
|
||||
<dl>
|
||||
<dt>value:</dt>
|
||||
<dt i18n="sensorsTemperatureValue"></dt>
|
||||
<dd class="x">0</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
@ -308,9 +308,9 @@
|
|||
</svg>
|
||||
<div class="clear-both"></div>
|
||||
<div class="plot_control">
|
||||
<div class="title">Temperature 3 - °C</div>
|
||||
<div class="title" i18n="sensorsTemperature3"></div>
|
||||
<dl>
|
||||
<dt>value:</dt>
|
||||
<dt i18n="sensorsTemperatureValue"></dt>
|
||||
<dd class="x">0</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
@ -323,9 +323,9 @@
|
|||
</svg>
|
||||
<div class="clear-both"></div>
|
||||
<div class="plot_control">
|
||||
<div class="title">Temperature 4 - °C</div>
|
||||
<div class="title" i18n="sensorsTemperature4"></div>
|
||||
<dl>
|
||||
<dt>value:</dt>
|
||||
<dt i18n="sensorsTemperatureValue"></dt>
|
||||
<dd class="x">0</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
@ -338,9 +338,9 @@
|
|||
</svg>
|
||||
<div class="clear-both"></div>
|
||||
<div class="plot_control">
|
||||
<div class="title">Temperature 5 - °C</div>
|
||||
<div class="title" i18n="sensorsTemperature5"></div>
|
||||
<dl>
|
||||
<dt>value:</dt>
|
||||
<dt i18n="sensorsTemperatureValue"></dt>
|
||||
<dd class="x">0</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
@ -353,9 +353,9 @@
|
|||
</svg>
|
||||
<div class="clear-both"></div>
|
||||
<div class="plot_control">
|
||||
<div class="title">Temperature 6 - °C</div>
|
||||
<div class="title" i18n="sensorsTemperature6"></div>
|
||||
<dl>
|
||||
<dt>value:</dt>
|
||||
<dt i18n="sensorsTemperatureValue"></dt>
|
||||
<dd class="x">0</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
@ -368,9 +368,9 @@
|
|||
</svg>
|
||||
<div class="clear-both"></div>
|
||||
<div class="plot_control">
|
||||
<div class="title">Temperature 7 - °C</div>
|
||||
<div class="title" i18n="sensorsTemperature7"></div>
|
||||
<dl>
|
||||
<dt>value:</dt>
|
||||
<dt i18n="sensorsTemperatureValue"></dt>
|
||||
<dd class="x">0</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue