1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-14 20:10:11 +03:00

Merge branch 'master' into release_6.1.0

This commit is contained in:
Marcelo Bezerra 2023-06-09 15:41:27 +02:00 committed by GitHub
commit 7fa0f7e695
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
31 changed files with 1400 additions and 584 deletions

File diff suppressed because it is too large Load diff

View file

@ -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,

View file

@ -2,8 +2,8 @@
var CONFIGURATOR = {
// all versions are specified and compared using semantic versioning http://semver.org/
'minfirmwareVersionAccepted': '6.0.0',
'maxFirmwareVersionAccepted': '7.0.0', // Condition is < (lt) so we accept all in 6.x branch
'minfirmwareVersionAccepted': '7.0.0',
'maxFirmwareVersionAccepted': '8.0.0', // Condition is < (lt) so we accept all in 7.x branch
'connectionValid': false,
'connectionValidCliOnly': false,
'cliActive': false,

View file

@ -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);
}
};

View file

@ -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'));
}
});
}

View file

@ -60,6 +60,10 @@ a.disabled {
transition: none;
}
.inputRequiredWarning {
border: 3px solid #d40000 !important;
}
.cf_doc_version_bt a {
padding: 1px 9px 1px 9px;
margin-top: -45px;

View file

@ -23,11 +23,11 @@
<div class="headerbar">
<div id="logo">
<div class="logo_text">
CONFIGURATOR
<span i18n="mainLogoText"></span>
<div class="version"></div>
</div>
<div class="logo_text_firmware">
FC FIRMWARE
<span i18n="mainLogoTextFirmware"></span>
<div class="firmware_version"></div>
</div>
</div>
@ -43,13 +43,13 @@
<div id="portsinput">
<div class="portsinput__row">
<div id="port-override-option" class="portsinput__top-element portsinput__top-element--port-override">
<label id="port-override-label" for="port-override">Port: </label>
<label id="port-override-label" for="port-override" i18n="mainPortOverrideLabel"></label>
<input id="port-override" type="text" value="/dev/rfcomm0" />
</div>
<div class="dropdown dropdown-dark portsinput__top-element">
<!--suppress HtmlFormInputWithoutLabel -->
<select class="dropdown-select" id="port" title="Port">
<option value="manual">Manual</option>
<option value="manual" i18n="mainManual"></option>
<!-- port list gets generated here -->
</select>
</div>
@ -81,10 +81,10 @@
</div>
<div class="header-wrapper">
<div id="dataflash_wrapper_global">
<div class="noflash_global" align="center">No dataflash <br>chip found</div>
<div class="noflash_global" align="center" i18n="sensorDataFlashNotFound"></div>
<ul class="dataflash-contents_global">
<li class="dataflash-free_global">
<div class="legend">Dataflash: free space</div>
<div class="legend" i18n="sensorDataFlashFreeSpace"></div>
</li>
</ul>
<div id="profile_change">
@ -92,9 +92,9 @@
<form name="profile-change" id="profile-change">
<!--suppress HtmlFormInputWithoutLabel -->
<select class="dropdown-select" id="profilechange">
<option value="0">Profile 1</option>
<option value="1">Profile 2</option>
<option value="2">Profile 3</option>
<option value="0" i18n="sensorProfile1"></option>
<option value="1" i18n="sensorProfile2"></option>
<option value="2" i18n="sensorProfile3"></option>
</select>
</form>
</div>
@ -104,9 +104,9 @@
<form name="battery-profile-change" id="battery-profile-change">
<!--suppress HtmlFormInputWithoutLabel -->
<select class="dropdown-select" id="batteryprofilechange">
<option value="0">Battery profile 1</option>
<option value="1">Battery profile 2</option>
<option value="2">Battery profile 3</option>
<option value="0" i18n="sensorBatteryProfile1"></option>
<option value="1" i18n="sensorBatteryProfile2"></option>
<option value="2" i18n="sensorBatteryProfile3"></option>
</select>
</form>
</div>
@ -114,29 +114,30 @@
</div>
<div id="sensor-status" class="sensor_state mode-connected">
<ul>
<li class="gyro" title="Gyroscope">
<div class="gyroicon">Gyro</div>
<li class="gyro" i18n_title="sensorStatusGyro">
<div class="gyroicon" i18n="sensorStatusGyroShort"></div>
</li>
<li class="accel" title="Accelerometer">
<div class="accicon">Accel</div>
<li class="accel" i18n_title="sensorStatusAccel">
<div class="accicon" i18n="sensorStatusAccelShort"></div>
</li>
<li class="mag" title="Magnetometer">
<div class="magicon">Mag</div>
<li class="mag" i18n_title="sensorStatusMag">
<div class="magicon" i18n="sensorStatusMagShort"></div>
</li>
<li class="baro" title="Barometer">
<div class="baroicon">Baro</div>
<li class="baro" i18n_title="sensorStatusBaro">
<div class="baroicon" i18n="sensorStatusBaroShort"></div>
</li>
<li class="gps" title="GPS">
<div class="gpsicon">GPS</div>
<li class="gps" i18n_title="sensorStatusGPS">
<div class="gpsicon" i18n="sensorStatusGPSShort"></div>
</li>
<li class="opflow" title="Optical flow">
<div class="opflowicon">Flow</div>
<li class="opflow" i18n_title="sensorOpticalFlow">
<div class="opflowicon" i18n="sensorOpticalFlowShort"></div>
</li>
<li class="sonar" title="Sonar / Range finder">
<div class="sonaricon">Sonar</div>
<li class="sonar" i18n_title="sensorStatusSonar">
<div class="sonaricon" i18n="sensorStatusSonarShort"></div>
</li>
<li class="airspeed" title="Airspeed">
<div class="airspeedicon">Speed</div>
<li class="airspeed" i18n_title="sensorAirspeed">
<div class="airspeedicon" i18n="sensorAirspeedShort"></div>
</li>
</ul>
</div>
@ -146,7 +147,7 @@
<div class="battery-status"></div>
</div>
</div>
<div class="battery-legend">Battery voltage</div>
<div class="battery-legend" i18n="sensorBatteryVoltage"></div>
<div class="bottomStatusIcons">
<div class="armedicon cf_tip" data-i18n_title="mainHelpArmed"></div>
<div class="failsafeicon cf_tip" data-i18n_title="mainHelpFailsafe"></div>
@ -158,7 +159,7 @@
<div class="clear-both"></div>
<div id="log">
<div class="logswitch">
<a href="#" id="showlog">Show Log</a>
<a href="#" id="showlog" i18n="mainShowLog"></a>
</div>
<div id="scrollicon"></div>
<div class="wrapper"></div>
@ -294,7 +295,7 @@
</div>
<div id="cache">
<div class="data-loading">
<p>Waiting for data ...</p>
<p i18n="waitingForData"></p>
</div>
</div>
</div>
@ -317,4 +318,4 @@
</div>
</body>
</html>
</html>

View file

@ -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);
@ -540,7 +540,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);
});

View file

@ -1,7 +1,7 @@
{
"manifest_version": 2,
"minimum_chrome_version": "38",
"version": "6.1.0",
"version": "7.0.0",
"author": "Several",
"name": "INAV - Configurator",
"short_name": "INAV",

View file

@ -1,7 +1,7 @@
{
"name": "inav-configurator",
"description": "INAV Configurator",
"version": "6.1.0",
"version": "7.0.0",
"main": "main.html",
"default_locale": "en",
"scripts": {

View file

@ -1,6 +1,6 @@
<div class="tab-configuration tab-advanced-tuning toolbar_fixed_bottom">
<div class="content_wrapper">
<div class="tab_title"><span data-i18n="tabAdvancedTuningTitle">Advanced Tuning</span><span class="airplaneTuningTitle">: Fixed Wing</span><span class="multirotorTuningTitle">: Multirotors</span></div>
<div class="tab_title"><span data-i18n="tabAdvancedTuningTitle"></span><span class="airplaneTuningTitle" data-i18n="tabAdvancedTuningAirplaneTuningTitle"></span><span class="multirotorTuningTitle" data-i18n="tabAdvancedTuningMultirotorTuningTitle"></span></div>
<!-- Airplane Advanced Tuning-->
<div class="airplaneTuning">
@ -96,7 +96,8 @@
</div>
</div>
</div> <!-- left wrapper -->
</div>
<!-- left wrapper -->
<div class="rightWrapper">
<div class="config-section gui_box grey">
@ -120,7 +121,7 @@
</div>
<div class="checkbox">
<input type="checkbox" class="toggle update_preview" id="cruiseManualThrottle" data-setting="nav_fw_allow_manual_thr_increase" data-live="true" />
<input type="checkbox" class="toggle update_preview" id="cruiseManualThrottle" data-setting="nav_fw_allow_manual_thr_increase" data-live="true" />
<label for="cruiseManualThrottle"><span data-i18n="cruiseManualThrottleLabel"></span></label>
<div for="cruiseManualThrottle" class="helpicon cf_tip" data-i18n_title="cruiseManualThrottleHelp"></div>
</div>
@ -191,7 +192,7 @@
</div>
<div class="checkbox">
<input type="checkbox" class="toggle update_preview" id="soarMotorStop" data-setting="nav_fw_soaring_motor_stop" data-live="true" />
<input type="checkbox" class="toggle update_preview" id="soarMotorStop" data-setting="nav_fw_soaring_motor_stop" data-live="true" />
<label for="soarMotorStop"><span data-i18n="soarMotorStop"></span></label>
<div for="soarMotorStop" class="helpicon cf_tip" data-i18n_title="soarMotorStopHelp"></div>
</div>
@ -204,10 +205,12 @@
</div>
</div>
</div> <!-- right wrapper -->
</div>
<!-- right wrapper -->
<div class="clear-both"></div>
</div> <!-- Airplane Advanced Tuning -->
</div>
<!-- Airplane Advanced Tuning -->
<!-- Multirotor Advanced tuning -->
<div class="multirotorTuning">
@ -255,7 +258,8 @@
</div>
</div>
</div>
</div> <!-- left wrapper -->
</div>
<!-- left wrapper -->
<div class="rightWrapper">
<div class="config-section gui_box grey">
@ -295,7 +299,7 @@
</div>
<div class="number">
<input id="brakingBoostSpeedThreshold" type="number" data-unit="cms"data-setting="nav_mc_braking_boost_speed_threshold" data-setting-multiplier="1" step="1" min="100" max="1000" />
<input id="brakingBoostSpeedThreshold" type="number" data-unit="cms" data-setting="nav_mc_braking_boost_speed_threshold" data-setting-multiplier="1" step="1" min="100" max="1000" />
<label for="brakingBoostSpeedThreshold"><span data-i18n="brakingBoostSpeedThreshold"></span></label>
<div for="brakingBoostSpeedThreshold" class="helpicon cf_tip" data-i18n_title="brakingBoostSpeedThresholdTip"></div>
</div>
@ -314,10 +318,12 @@
</div>
</div>
</div> <!-- right wrapper -->
</div>
<!-- right wrapper -->
<div class="clear-both"></div>
</div> <!-- Multirotor Advanced Tuning -->
</div>
<!-- Multirotor Advanced Tuning -->
<!-- Common tuning -->
<div class="tab_subtitle" data-i18n="tabAdvancedTuningGenericTitle">Advanced Tuning: Generic settings</div>
@ -341,7 +347,7 @@
<div for="rthAltitude" class="helpicon cf_tip" data-i18n_title="rthAltitudeHelp"></div>
</div>
<div class="number">
<div class="number">
<input type="number" id="rthHomeAltitude" data-unit="cm" data-setting="nav_rth_home_altitude" data-setting-multiplier="1" step="1" min="0" max="65000" />
<label for="rthHomeAltitude"><span data-i18n="rthHomeAltitudeLabel"></span></label>
<div for="rthHomeAltitude" class="helpicon cf_tip" data-i18n_title="rthHomeAltitudeHelp"></div>
@ -365,6 +371,18 @@
<div for="rthTwoStageAlt" class="helpicon cf_tip" data-i18n_title="rthTwoStageAltHelp"></div>
</div>
<div class="checkbox">
<input type="checkbox" class="toggle update_preview" id="rthUseLinearDescent" data-setting="nav_rth_use_linear_descent" data-live="true" />
<label for="rthUseLinearDescent"><span data-i18n="rthUseLinearDescent"></span></label>
<div for="rthUseLinearDescent" class="helpicon cf_tip" data-i18n_title="rthUseLinearDescentHelp"></div>
</div>
<div class="number">
<input type="number" id="rthLinearDescentStart" data-unit="m" data-setting="nav_rth_linear_descent_start_distance" data-setting-multiplier="1" step="1" min="0" max="10000" />
<label for="rthLinearDescentStart"><span data-i18n="rthLinearDescentStart"></span></label>
<div for="rthLinearDescentStart" class="helpicon cf_tip" data-i18n_title="rthLinearDescentStartHelp"></div>
</div>
<div class="checkbox">
<input type="checkbox" class="toggle update_preview" id="rthClimbIgnoreEmergency" data-setting="nav_rth_climb_ignore_emerg" data-live="true" />
<label for="rthClimbIgnoreEmergency"><span data-i18n="rthClimbIgnoreEmergency"></span></label>
@ -427,17 +445,18 @@
<label for="fsMissionDelay"><span data-i18n="fsMissionDelay"></span></label>
<div for="fsMissionDelay" class="helpicon cf_tip" data-i18n_title="fsMissionDelayHelp"></div>
</div>
<!--
<!--
<div class="checkbox">
<input type="checkbox" class="toggle update_preview" id="drNavigation" data-setting="inav_allow_dead_reckoning" data-live="true" />
<label for="drNavigation"><span data-i18n="drNavigation"></span></label>
<div for="drNavigation" class="helpicon cf_tip" data-i18n_title="drNavigationHelp"></div>
</div>
-->
-->
</div>
</div>
</div> <!-- Left wrapper -->
</div>
<!-- Left wrapper -->
<div class="rightWrapper">
@ -457,13 +476,13 @@
<label for="navAutoClimbRate"><span data-i18n="navAutoClimbRate"></span></label>
<div for="navAutoClimbRate" class="helpicon cf_tip" data-i18n_title="navAutoClimbRateHelp"></div>
</div>
<div class="number">
<input type="number" id="navMaxAltitude" data-unit="cm" data-setting="nav_max_altitude" data-setting-multiplier="1" step="1" min="0" max="65000" />
<label for="navMaxAltitude"><span data-i18n="navMaxAltitude"></span></label>
<div for="navMaxAltitude" class="helpicon cf_tip" data-i18n_title="navMaxAltitudeHelp"></div>
</div>
<div class="select">
<select id="navMotorStop" data-setting="nav_overrides_motor_stop"></select>
<label for="navMotorStop"><span data-i18n="navMotorStop"></span></label>
@ -502,7 +521,7 @@
<label for="wpEnforceAlt"><span data-i18n="wpEnforceAlt"></span></label>
<div for="wpEnforceAlt" class="helpicon cf_tip" data-i18n_title="wpEnforceAltHelp"></div>
</div>
<div class="number">
<input type="number" id="wpTrackingAccuracy" data-setting="nav_fw_wp_tracking_accuracy" data-setting-multiplier="1" step="1" min="0" max="10" />
<label for="wpTrackingAccuracy"><span data-i18n="wpTrackingAccuracy"></span></label>
@ -514,7 +533,7 @@
<label for="wpTrackingAngle"><span data-i18n="wpTrackingAngle"></span></label>
<div for="wpTrackingAngle" class="helpicon cf_tip" data-i18n_title="wpTrackingAngleHelp"></div>
</div>
<div class="select">
<select id="wpTurnSmoothing" data-setting="nav_fw_wp_turn_smoothing"></select>
<label for="wpTurnSmoothing"><span data-i18n="wpTurnSmoothing"></span></label>
@ -561,9 +580,11 @@
</div>
</div>
</div> <!-- Right wrapper -->
</div>
<!-- Right wrapper -->
</div> <!-- Common tuning -->
</div>
<!-- Common tuning -->
<div class="clear-both"></div>
@ -574,4 +595,4 @@
<a id="advanced-tuning-save-button" class="save" href="#" data-i18n="advancedTuningSave"></a>
</div>
</div>
</div>
</div>

View file

@ -38,6 +38,27 @@ TABS.advanced_tuning.initialize = function (callback) {
localize();
// Set up required field warnings
$('#launchIdleThr').keyup(function() {
TABS.advanced_tuning.checkRequirements_IdleThrottle();
});
$('#launchIdleDelay').keyup(function() {
TABS.advanced_tuning.checkRequirements_IdleThrottle();
});
$('#rthHomeAltitude').keyup(function() {
TABS.advanced_tuning.checkRequirements_LinearDescent();
});
$('#rthUseLinearDescent').change(function() {
TABS.advanced_tuning.checkRequirements_LinearDescent();
});
// Preload required field warnings
TABS.advanced_tuning.checkRequirements_IdleThrottle();
TABS.advanced_tuning.checkRequirements_LinearDescent();
$('a.save').click(function () {
Settings.saveInputs().then(function () {
var self = this;
@ -68,8 +89,28 @@ TABS.advanced_tuning.initialize = function (callback) {
GUI.log(chrome.i18n.getMessage('deviceRebooting'));
GUI.handleReconnect($('.tab_advanced_tuning a'));
}
};
$incLD = 0;
TABS.advanced_tuning.checkRequirements_IdleThrottle = function() {
let idleThrottle = $('#launchIdleThr');
if ($('#launchIdleDelay').val() > 0 && (idleThrottle.val() == "" || idleThrottle.val() < "1150")) {
idleThrottle.addClass('inputRequiredWarning');
} else {
idleThrottle.removeClass('inputRequiredWarning');
}
};
TABS.advanced_tuning.checkRequirements_LinearDescent = function() {
let rthHomeAlt = $('#rthHomeAltitude');
let minRthHomeAlt = 1000.0 / rthHomeAlt.data('setting-multiplier'); // 10 metres minimum recommended for safety.
if ($('#rthUseLinearDescent').is(":checked") && (rthHomeAlt.val() == "" || parseFloat(rthHomeAlt.val()) < minRthHomeAlt)) {
rthHomeAlt.addClass('inputRequiredWarning');
} else {
rthHomeAlt.removeClass('inputRequiredWarning');
}
};
TABS.advanced_tuning.cleanup = function (callback) {

View file

@ -23,7 +23,7 @@
</div>
</div>
<div class="acroEnabled">
ACRO
<span i18n="auxiliaryAcroEnabled"></span>
</div>
</div>
<div id="tab-auxiliary-templates">
@ -63,7 +63,11 @@
</div>
<table>
<tr class="modeSection">
<td colspan="2"><div class="modeSectionArea"><p class="modeSectionName"></p></div></td>
<td colspan="2">
<div class="modeSectionArea">
<p class="modeSectionName"></p>
</div>
</td>
</tr>
</table>
</div>
</div>

View file

@ -42,7 +42,7 @@ TABS.auxiliary.initialize = function (callback) {
modeSections["Flight Modes"] = ["ANGLE", "HORIZON", "MANUAL"];
modeSections["Navigation Modes"] = ["NAV COURSE HOLD", "NAV CRUISE", "NAV POSHOLD", "NAV RTH", "NAV WP", "GCS NAV"];
modeSections["Flight Mode Modifiers"] = ["NAV ALTHOLD", "HEADING HOLD", "AIR MODE", "SOARING", "SURFACE", "TURN ASSIST"];
modeSections["Fixed Wing"] = ["AUTO TUNE", "SERVO AUTOTRIM", "AUTO LEVEL", "NAV LAUNCH", "LOITER CHANGE", "FLAPERON"];
modeSections["Fixed Wing"] = ["AUTO TUNE", "SERVO AUTOTRIM", "AUTO LEVEL TRIM", "NAV LAUNCH", "LOITER CHANGE", "FLAPERON"];
modeSections["Multi-rotor"] = ["FPV ANGLE MIX", "TURTLE", "MC BRAKING", "HEADFREE", "HEADADJ"];
modeSections["OSD Modes"] = ["OSD OFF", "OSD ALT 1", "OSD ALT 2", "OSD ALT 3"];
modeSections["FPV Camera Modes"] = ["CAMSTAB", "CAMERA CONTROL 1", "CAMERA CONTROL 2", "CAMERA CONTROL 3"];

View file

@ -23,27 +23,27 @@
</div>
</div>
<div data-step="1" class="tile step1 finished">
<div class="steptitle">Step 1</div>
<div class="steptitle" data-i18n="stepTitle1"></div>
<div class="indicator"></div>
</div>
<div data-step="2" class="tile step2 active">
<div class="steptitle">Step 2</div>
<div class="steptitle" data-i18n="stepTitle2"></div>
<div class="indicator"></div>
</div>
<div data-step="3" class="tile step3">
<div class="steptitle">Step 3</div>
<div class="steptitle" data-i18n="stepTitle3"></div>
<div class="indicator"></div>
</div>
<div data-step="4" class="tile step4">
<div class="steptitle">Step 4</div>
<div class="steptitle" data-i18n="stepTitle4"></div>
<div class="indicator"></div>
</div>
<div data-step="5" class="tile step5">
<div class="steptitle">Step 5</div>
<div class="steptitle" data-i18n="stepTitle5"></div>
<div class="indicator"></div>
</div>
<div data-step="6" class="tile step6">
<div class="steptitle">Step 6</div>
<div class="steptitle" data-i18n="stepTitle6"></div>
<div class="indicator"></div>
</div>
<div class="gui_box grey" id="accPosAll">
@ -98,27 +98,27 @@
</div>
<table id="mag-calibrated-data" class="cf_table">
<tr>
<td><label for="MagX"><span>Zero X</span></label></td>
<td><label for="MagX" data-i18n="MagXText"><span></span></label></td>
<td><input readonly disabled type="number" name="MagX" min="-32768" max="32767"></td>
</tr>
<tr>
<td><label for="MagY"><span>Zero Y</span></label></td>
<td><label for="MagY" data-i18n="MagYText"><span></span></label></td>
<td><input readonly disabled type="number" name="MagY" min="-32768" max="32767"></td>
</tr>
<tr>
<td><label for="MagZ"><span>Zero Z</span></label></td>
<td><label for="MagZ" data-i18n="MagZText"><span></span></label></td>
<td><input readonly disabled type="number" name="MagZ" min="-32768" max="32767"></td>
</tr>
<tr>
<td><label for="MagGainX"><span>Gain X</span></label></td>
<td><label for="MagGainX" data-i18n="MagGainXText"><span></span></label></td>
<td><input readonly disabled type="number" name="MagGainX" min="-32768" max="32767"></td>
</tr>
<tr>
<td><label for="MagGainY"><span>Gain Y</span></label></td>
<td><label for="MagGainY" data-i18n="MagGainYText"><span></span></label></td>
<td><input readonly disabled type="number" name="MagGainY" min="-32768" max="32767"></td>
</tr>
<tr>
<td><label for="MagGainZ"><span>Gain Z</span></label></td>
<td><label for="MagGainZ" data-i18n="MagGainZText"><span></span></label></td>
<td><input readonly disabled type="number" name="MagGainZ" min="-32768" max="32767"></td>
</tr>
</table>
@ -137,7 +137,7 @@
</div>
<table id="opflow-calibrated-data" class="cf_table">
<tr>
<td><label for="OpflowScale"><span>Scale</span></label></td>
<td><label for="OpflowScale"><span data-i18n="OpflowScaleText"></span></label></td>
<td><input type="number" name="OpflowScale" min="0" max="10000"></td>
</tr>
</table>
@ -189,4 +189,4 @@
<h1 class="modal__title modal__title--center" data-i18n="accCalibrationProcessing"></h1>
<div id="modal-opflow-countdown" class="modal__text"></div>
</div>
</div>
</div>

View file

@ -11,7 +11,12 @@
<div class="wrapper"></div>
</div>
</div>
<textarea name="commands" i18n_placeholder="cliInputPlaceholder" rows="1" cols="0"></textarea>
<div style="display:flex;align-items:center;">
<textarea name="commands" i18n_placeholder="cliInputPlaceholder" rows="1" cols="0"></textarea>
<a class="helpiconLink" style="margin-left:5px;margin-right:5px;" href="https://github.com/iNavFlight/inav/blob/master/docs/Cli.md" target="_blank">
<div class="helpicon cf_tip" style="float:none;" data-i18n_title="cliCommandsHelp"></div>
</a>
</div>
</div>
<div class="content_toolbar">
<div class="btn save_btn" style="float: left; padding-left: 15px">
@ -23,8 +28,9 @@
<a class="cliDocsBtn" href="#" i18n="cliDocsBtn" target="_blank"></a>
<a class="save" href="#" i18n="cliSaveToFileBtn"></a>
<a class="load" href="#" i18n="cliLoadFromFileBtn"></a>
<a class="clear" href="#" i18n="cliClearOutputHistoryBtn"></a>
<a class="copy" href="#" i18n="cliCopyToClipboardBtn"></a>
<a class="copy" href="#" i18n="cliCopyToClipboardBtn"></a>
<a class="clear" href="#" i18n="cliClearOutputHistoryBtn"></a>
<a class="diffall" href="#" i18n="cliDiffAllBtn"></a>
</div>
</div>

View file

@ -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'));
});
});
@ -193,6 +193,12 @@ TABS.cli.initialize = function (callback) {
self.send(getCliCommand('msc\n', TABS.cli.cliBuffer));
});
$('.tab-cli .diffall').click(function() {
self.outputHistory = "";
$('.tab-cli .window .wrapper').empty();
self.send(getCliCommand('diff all\n', TABS.cli.cliBuffer));
});
$('.tab-cli .clear').click(function() {
self.outputHistory = "";
$('.tab-cli .window .wrapper').empty();
@ -244,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);
}
@ -278,7 +284,7 @@ TABS.cli.initialize = function (callback) {
var out_string = textarea.val();
self.history.add(out_string.trim());
if (out_string.trim().toLowerCase() == "cls") {
if (out_string.trim().toLowerCase() == "cls" || out_string.trim().toLowerCase() == "clear") {
self.outputHistory = "";
$('.tab-cli .window .wrapper').empty();
} else {

View file

@ -1,20 +1,20 @@
<div class="tab-failsafe toolbar_fixed_bottom">
<div class="content_wrapper">
<div class="tab_title">Failsafe</div>
<div class="tab_title" data-i18n="tabFailsafe">Failsafe</div>
<div class="gui_box grey">
<div class="gui_box_titlebar">
<div class="spacer_box_title" data-i18n="failsafeStageTwoSettingsTitle"></div>
</div>
<div class="spacer_box">
<div class="number">
<input id="failsafeDelay" type="number" name="failsafe_delay" data-unit="dsec" data-setting="failsafe_delay" min="0" max="200" />
<label><span data-i18n="failsafeDelayItem"></span></label>
<input id="failsafeDelay" type="number" name="failsafe_delay" data-unit="dsec" data-setting="failsafe_delay" min="0" max="200" />
<label><span data-i18n="failsafeDelayItem"></span></label>
<div for="failsafeDelay" class="helpicon cf_tip" data-i18n_title="failsafeDelayHelp"></div>
</div>
<!-- radio buttons -->
<div class="subline" data-i18n="failsafeSubTitle1"></div>
<div class="radioarea pro1">
<div class="radiobuttons"><input class="procedure" id="drop" name="group1" type="radio"/>
<div class="radiobuttons"><input class="procedure" id="drop" name="group1" type="radio" />
<label for="drop" data-i18n="failsafeProcedureItemSelect2"></label>
</div>
</div>
@ -35,18 +35,18 @@
</div>
</div>
<div class="radioarea pro4">
<div class="radiobuttons"><input class="procedure" id="rth" name="group1" type="radio"/>
<div class="radiobuttons"><input class="procedure" id="rth" name="group1" type="radio" />
<label for="rth" data-i18n="failsafeProcedureItemSelect3"></label>
</div>
</div>
<div class="radioarea pro5">
<div class="radiobuttons"><input class="procedure" id="nothing" name="group1" type="radio"/>
<div class="radiobuttons"><input class="procedure" id="nothing" name="group1" type="radio" />
<label for="nothing" data-i18n="failsafeProcedureItemSelect4"></label>
</div>
</div>
<!-- Minimum Failsafe Distance controls -->
<div class="checkbox">
<div class="numberspacer" >
<div class="numberspacer">
<input type="checkbox" name="failsafe_use_minimum_distance" class="toggle" id="failsafe_use_minimum_distance" />
</div>
<label for="failsafe_use_minimum_distance"><span data-i18n="failsafeUseMinimumDistanceItem"></span>
@ -73,4 +73,4 @@
<a class="save" href="#" data-i18n="configurationButtonSave"></a>
</div>
</div>
</div>
</div>

View file

@ -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, 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();

View file

@ -14,7 +14,7 @@
<div class="content_mid">
<div class="column half text1">
<div class="wrap">
<h2>Hardware</h2>
<h2 i18n="defaultWelcomeHead"></h2>
<div i18n="defaultWelcomeText"></div>
</div>
</div>
@ -29,9 +29,11 @@
<div class="sponsors">
<div class="title" i18n="defaultSponsorsHead"></div>
<ul>
<li><a href="http://www.mateksys.com" title="www.mateksys.com" target="_blank"><img src="./images/partner/mateksys.png" alt="MATEK Systems" height="35" /></a></li>
<li>
<a href="http://www.mateksys.com" title="www.mateksys.com" target="_blank"><img src="./images/partner/mateksys.png" alt="MATEK Systems" height="35" /></a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>

View file

@ -26,19 +26,19 @@
<div class="block"></div>
</div>
<div class="colorDefineSliders">
<div class="">Color setup</div>
<div class="" i18n="ledStripColorSetupTitle"></div>
<div class="colorDefineSliderContainer">
<Label class="colorDefineSliderLabel">H</Label>
<Label class="colorDefineSliderLabel" i18n="ledStripH"></Label>
<input class="sliderHSV" type="range" min="0" max="359" value="0">
<Label class="colorDefineSliderValue Hvalue">0</Label>
</div>
<div class="colorDefineSliderContainer">
<Label class="colorDefineSliderLabel">S</Label>
<Label class="colorDefineSliderLabel" i18n="ledStripS"></Label>
<input class="sliderHSV" type="range" min="0" max="255" value="0">
<Label class="colorDefineSliderValue Svalue">0</Label>
</div>
<div class="colorDefineSliderContainer">
<Label class="colorDefineSliderLabel">V</Label>
<Label class="colorDefineSliderLabel" i18n="ledStripV"></Label>
<input class="sliderHSV" type="range" min="0" max="255" value="0">
<Label class="colorDefineSliderValue Vvalue">0</Label>
</div>
@ -46,151 +46,151 @@
<div class="controls">
<div class="wires-remaining">
<div></div>
Remaining
<span i18n="ledStripRemainingText"></span>
</div>
<button class="funcClear">Clear selected</button>
<button class="funcClearAll">Clear ALL</button>
<button class="funcClear" i18n="ledStripClearSelectedButton"></button>
<button class="funcClearAll" i18n="ledStripClearAllButton"></button>
<div class="section" i18n="ledStripFunctionSection"></div>
<div class="section">LED Functions</div>
<div class="select">
<span class="color_section">Function</span>
<span class="color_section" i18n="ledStripFunctionTitle"></span>
<select class="functionSelect">
<option value="">None</option>
<option value="function-c" class="">Color</option>
<option value="function-f" class="">Modes &amp; Orientation</option>
<option value="function-a" class="">Arm State</option>
<option value="function-l" class="extra_functions20">Battery</option>
<option value="function-s" class="extra_functions20">RSSI</option>
<option value="function-g" class="extra_functions20">GPS</option>
<option value="function-r" class="">Ring</option>
<option value="function-h" class="channel_info">Channel</option>
<option value="" i18n="ledStripFunctionNoneOption"></option>
<option value="function-c" class="" i18n="ledStripFunctionColorOption"></option>
<option value="function-f" class="" i18n="ledStripFunctionModesOption"></option>
<option value="function-a" class="" i18n="ledStripFunctionArmOption"></option>
<option value="function-l" class="extra_functions20" i18n="ledStripFunctionBatteryOption"></option>
<option value="function-s" class="extra_functions20" i18n="ledStripFunctionRSSIOption"></option>
<option value="function-g" class="extra_functions20" i18n="ledStripFunctionGPSOption"></option>
<option value="function-r" class="" i18n="ledStripFunctionRingOption"></option>
<option value="function-h" class="channel_info" i18n="ledStripFunctionChannelOption"></option>
</select>
</div>
<div class="modifiers">
<span class="color_section">Color modifier</span>
<span class="color_section" i18n="ledStripColorModifierTitle"></span>
<div class="checkbox">
<input type="checkbox" name="ThrottleHue" class="toggle function-t" />
<label> <span>Throttle</span></label>
<label> <span i18n="ledStripThrottleText"></span></label>
</div>
<div class="checkbox extra_functions20">
<input type="checkbox" name="LarsonScanner" class="toggle function-o" />
<label> <span>Larson scanner</span></label>
<label> <span i18n="ledStripLarsonscannerText"></span></label>
</div>
</div>
<div class="blinkers extra_functions20">
<span class="color_section">Blink</span>
<span class="color_section" i18n="ledStripBlinkTitle"></span>
<div class="checkbox blinkOverlay">
<input type="checkbox" name="blink" class="toggle function-b" />
<label> <span>Blink always</span></label>
<label> <span i18n="ledStripBlinkAlwaysOverlay"></span></label>
</div>
<div class="checkbox landingBlinkOverlay">
<input type="checkbox" name="landingBlink" class="toggle function-n" />
<label> <span>Blink on landing</span></label>
<label> <span i18n="ledStripBlinkLandingOverlay"></span></label>
</div>
<span class="color_section">Strobe</span>
<span class="color_section" i18n="ledStripStrobeText"></span>
<div class="checkbox strobeOverlay">
<input type="checkbox" name="strobe" class="toggle function-e" />
<label> <span>Enable strobe light effect</span></label>
<label> <span i18n="ledStripEnableStrobeLightEffectText"></span></label>
</div>
</div>
<div class="overlays">
<span class="color_section">Overlay</span>
<span class="color_section" i18n="ledStripOverlayTitle"></span>
<div class="checkbox warningOverlay">
<input type="checkbox" name="Warnings" class="toggle function-w" />
<label> <span>Warnings</span></label>
<label> <span i18n="ledStripWarningsOverlay"></span></label>
</div>
<div class="checkbox indicatorOverlay">
<input type="checkbox" name="Indicator" class="toggle function-i" />
<label> <span>Indicator</span></label>
<label> <span i18n="ledStripIndecatorOverlay"></span></label>
</div>
</div>
<div class="channel_info">
<span class="color_section">Select Channel from color list</span>
<span class="color_section" i18n="ledStripSelectChannelFromColorList"></span>
</div>
<div class="mode_colors">
<div class="section">Mode colors</div>
<select class="modeSelect">
<option value="0">Orientation</option>
<option value="1">Headfree</option>
<option value="2">Horizon</option>
<option value="3">Angle</option>
<option value="4">Mag</option>
<option value="5">Baro</option>
<div class="section" i18n="ledStripModeColorsTitle"></div>
<select id="ledStripModeColorsModeSelect" class="modeSelect">
<option value="0" i18n="ledStripModeColorsModeOrientation"></option>
<option value="1" i18n="ledStripModeColorsModeHeadfree"></option>
<option value="2" i18n="ledStripModeColorsModeHorizon"></option>
<option value="3" i18n="ledStripModeColorsModeAngle"></option>
<option value="4" i18n="ledStripModeColorsModeMag"></option>
<option value="5" i18n="ledStripModeColorsModeBaro"></option>
</select>
<button class="mode_color-0-0 dir-n">N</button>
<button class="mode_color-0-1 dir-e">E</button>
<button class="mode_color-0-2 dir-s">S</button>
<button class="mode_color-0-3 dir-w">W</button>
<button class="mode_color-0-4 dir-u">U</button>
<button class="mode_color-0-5 dir-d">D</button>
<button class="mode_color-0-0 dir-n" i18n="ledStripDirN"></button>
<button class="mode_color-0-1 dir-e" i18n="ledStripDirE"></button>
<button class="mode_color-0-2 dir-s" i18n="ledStripDirS"></button>
<button class="mode_color-0-3 dir-w" i18n="ledStripDirW"></button>
<button class="mode_color-0-4 dir-u" i18n="ledStripDirU"></button>
<button class="mode_color-0-5 dir-d" i18n="ledStripDirD"></button>
</div>
<div class="section">LED Orientation and Color</div>
<div class="section" i18n="ledStripModesOrientationTitle"></div>
<div class="directions">
<button class="dir-n">N</button>
<button class="dir-e">E</button>
<button class="dir-s">S</button>
<button class="dir-w">W</button>
<button class="dir-u">U</button>
<button class="dir-d">D</button>
<button class="dir-n" i18n="ledStripDirN"></button>
<button class="dir-e" i18n="ledStripDirE"></button>
<button class="dir-s" i18n="ledStripDirS"></button>
<button class="dir-w" i18n="ledStripDirW"></button>
<button class="dir-u" i18n="ledStripDirU"></button>
<button class="dir-d" i18n="ledStripDirD"></button>
</div>
<div class="colors">
<button class="color-0" title="black">0</button>
<button class="color-1" title="white">1</button>
<button class="color-2" title="red">2</button>
<button class="color-3" title="orange">3</button>
<button class="color-4" title="yellow">4</button>
<button class="color-5" title="lime green">5</button>
<button class="color-6" title="green">6</button>
<button class="color-7" title="mint green">7</button>
<button class="color-8" title="cyan">8</button>
<button class="color-9" title="light blue">9</button>
<button class="color-10" title="blue">10</button>
<button class="color-11" title="dark violet">11</button>
<button class="color-12" title="magenta">12</button>
<button class="color-13" title="deep pink">13</button>
<button class="color-14" title="black">14</button>
<button class="color-15" title="black">15</button>
<button class="color-0" i18n_title="colorBlack">0</button>
<button class="color-1" i18n_title="colorWhite">1</button>
<button class="color-2" i18n_title="colorRed">2</button>
<button class="color-3" i18n_title="colorOrange">3</button>
<button class="color-4" i18n_title="colorYellow">4</button>
<button class="color-5" i18n_title="colorLimeGreen">5</button>
<button class="color-6" i18n_title="colorGreen">6</button>
<button class="color-7" i18n_title="colorMintGreen">7</button>
<button class="color-8" i18n_title="colorCyan">8</button>
<button class="color-9" i18n_title="colorLightBlue">9</button>
<button class="color-10" i18n_title="colorBlue">10</button>
<button class="color-11" i18n_title="colorDarkViolet">11</button>
<button class="color-12" i18n_title="colorMagenta">12</button>
<button class="color-13" i18n_title="colorDeepPink">13</button>
<button class="color-14" i18n_title="colorBlack">14</button>
<button class="color-15" i18n_title="colorBlack">15</button>
</div>
<div class="special_colors mode_colors">
<div class="section">Special colors</div>
<button class="mode_color-6-0" title="green">Disarmed</button>
<button class="mode_color-6-1" title="blue">Armed</button>
<button class="mode_color-6-2" title="white">Animation</button>
<!-- button class="mode_color-6-3" title="black">Background</button -->
<button class="mode_color-6-4" title="black">Blink background</button>
<button class="mode_color-6-5" title="red">GPS: no sats</button>
<button class="mode_color-6-6" title="orange">GPS: no lock</button>
<button class="mode_color-6-7" title="green">GPS: locked</button>
<div class="section" i18n="ledStripModesSpecialColorsTitle"></div>
<button class="mode_color-6-0" i18n_title="colorGreen" i18n="ledStripModeColorsModeDisarmed"></button>
<button class="mode_color-6-1" i18n_title="colorBlue" i18n="ledStripModeColorsModeArmed"></button>
<button class="mode_color-6-2" i18n_title="colorWhite" i18n="ledStripModeColorsModeAnimation"></button>
<!-- button class="mode_color-6-3" i18n_title="colorBlack">Background</button -->
<button class="mode_color-6-4" i18n_title="colorBlack" i18n="ledStripModeColorsModeBlinkBg"></button>
<button class="mode_color-6-5" i18n_title="colorRed" i18n="ledStripModeColorsModeGPSNoSats"></button>
<button class="mode_color-6-6" i18n_title="colorOrange" i18n="ledStripModeColorsModeGPSNoLock"></button>
<button class="mode_color-6-7" i18n_title="colorGreen" i18n="ledStripModeColorsModeGPSLocked"></button>
</div>
<div class="section">LED Strip Wiring</div>
<div class="section" i18n="ledStripWiring"></div>
<div class="wiringMode">
<button class="funcWire w100">Wire Ordering Mode</button>
<button class="funcWire w100" i18n="ledStripWiringMode"></button>
</div>
<div class="wiringControls">
<button class="funcWireClearSelect w50">Clear selected</button>
<button class="funcWireClear w50">Clear ALL Wiring</button>
<button class="funcWireClearSelect w50" i18n="ledStripWiringClearControl"></button>
<button class="funcWireClear w50" i18n="ledStripWiringClearAllControl"></button>
</div>
<p>LEDs without wire ordering number will not be saved.</p>
<p i18n="ledStripWiringMessage"></p>
</div>
<div class="colorControls">
</div>
<div class="clear-both"></div>
</div>
<div class="content_toolbar">
@ -198,4 +198,4 @@
<a class="save" href="#" i18n="ledStripButtonSave"></a>
</div>
</div>
</div>
</div>

View file

@ -41,65 +41,59 @@
<table class="axis-table">
<thead>
<tr>
<td style="width: 5%; padding-bottom: 10px;">
<p class="table-title">
Axis
</p>
</td>
<td style="width: 90%; padding-bottom: 10px;">
<p class="table-title">
Slider
</p>
</td>
<td style="width: 5%; padding-bottom: 10px;">
<a class="table-title">
Value [degree]
</a>
<tr>
<td style="width: 5%; padding-bottom: 10px;">
<p class="table-title">
<span data-i18n="axisTableTitleAxis"></span>
</p>
</td>
<td style="width: 90%; padding-bottom: 10px;">
<p class="table-title">
<span data-i18n="axisTableTitleSlider"></span>
</p>
</td>
<td style="width: 5%; padding-bottom: 10px;">
<a class="table-title">
<span data-i18n="axisTableTitleValue"></span>
</a>
</td>
</tr>
</td>
</tr>
</thead>
<tbody>
<tr>
<td class="info">
<p class="title" data-i18n="configurationSensorAlignmentMagPitch"></p>
</td>
<td>
<div id="roll_slider" class="slider"></div>
</td>
<td>
<input type="number" id="alignRoll" class="tab-magnetometer" data-setting="tz_offset"
data-setting-multiplier="1"
step="1" min="-180" max="180"/>
</td>
</tr>
<tr>
<td class="info">
<p class="title" data-i18n="configurationSensorAlignmentMagRoll"></p>
</td>
<td>
<div id="pitch_slider" class="slider"></div>
</td>
<td>
<input type="number" id="alignPitch" class="tab-magnetometer" data-setting="tz_offset"
data-setting-multiplier="1"
step="1" min="-180" max="180"/>
</td>
</tr>
<tr>
<td class="info">
<p class="title" data-i18n="configurationSensorAlignmentMagYaw"></p>
</td>
<td>
<div id="yaw_slider" class="slider"></div>
</td>
<td>
<input type="number" id="alignYaw" class="tab-magnetometer" data-setting="tz_offset"
data-setting-multiplier="1"
step="1" min="-180" max="360"/>
</td>
</tr>
<tr>
<td class="info">
<p class="title" data-i18n="configurationSensorAlignmentMagPitch"></p>
</td>
<td>
<div id="roll_slider" class="slider"></div>
</td>
<td>
<input type="number" id="alignRoll" class="tab-magnetometer" data-setting="tz_offset" data-setting-multiplier="1" step="1" min="-180" max="180" />
</td>
</tr>
<tr>
<td class="info">
<p class="title" data-i18n="configurationSensorAlignmentMagRoll"></p>
</td>
<td>
<div id="pitch_slider" class="slider"></div>
</td>
<td>
<input type="number" id="alignPitch" class="tab-magnetometer" data-setting="tz_offset" data-setting-multiplier="1" step="1" min="-180" max="180" />
</td>
</tr>
<tr>
<td class="info">
<p class="title" data-i18n="configurationSensorAlignmentMagYaw"></p>
</td>
<td>
<div id="yaw_slider" class="slider"></div>
</td>
<td>
<input type="number" id="alignYaw" class="tab-magnetometer" data-setting="tz_offset" data-setting-multiplier="1" step="1" min="-180" max="360" />
</td>
</tr>
</tbody>
</table>
</div>
@ -115,15 +109,15 @@
<div id="tab-auxiliary-templates">
<table class="modes">
<tbody>
<tr class="mode">
<td class="info">
<p class="name"></p>
<div class="buttons">
<a class="addRange" href="#" i18n="auxiliaryAddRange"></a>
</div>
</td>
<td class="ranges"></td>
</tr>
<tr class="mode">
<td class="info">
<p class="name"></p>
<div class="buttons">
<a class="addRange" href="#" i18n="auxiliaryAddRange"></a>
</div>
</td>
<td class="ranges"></td>
</tr>
</tbody>
</table>
<div class="range">
@ -150,8 +144,10 @@
<table>
<tr class="modeSection">
<td colspan="2">
<div class="modeSectionArea"><p class="modeSectionName"></p></div>
<div class="modeSectionArea">
<p class="modeSectionName"></p>
</div>
</td>
</tr>
</table>
</div>
</div>

View file

@ -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>

View file

@ -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'));

View file

@ -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>

View file

@ -3,7 +3,7 @@
<div class="content_wrapper">
<div class="tab_title" data-i18n="tabOnboardLogging"></div>
<div class="require-blackbox-unsupported">
<div class="gui_box grey require-blackbox-config-supported">
<div class="gui_box_titlebar">
<div class="spacer_box_title" data-i18n="blackboxConfiguration"></div>
@ -31,22 +31,22 @@
<div class="spacer_box_title" data-i18n="blackboxConfiguration"></div>
</div>
<div class="spacer_box">
<div class="checkbox">
<div class="checkbox">
<input checked type="checkbox" data-bit="19" class="feature toggle" name="BLACKBOX" title="BLACKBOX" id="feature-19-2">
<label for="feature-19-2">
<span data-i18n="featureBLACKBOX"></span>
</label>
</div>
<div class="select line blackboxDevice">
<select name="blackbox_device">
<div class="select line blackboxDevice">
<select name="blackbox_device">
</select>
<span>Blackbox logging device</span>
</div>
<div class="select line blackboxRate">
<select name="blackbox_rate">
<span i18n="onboardLoggingBlackbox"></span>
</div>
<div class="select line blackboxRate">
<select name="blackbox_rate">
</select>
<span>Portion of flight loop iterations to log (logging rate)</span>
</div>
<span i18n="onboardLoggingBlackboxRate"></span>
</div>
</div>
</div>
</div>
@ -56,45 +56,43 @@
<div class="spacer_box_title" data-i18n="blackboxFields"></div>
</div>
<div id="blackBoxFlagsDiv" class="spacer_box config-section">
</div>
</div>
</div>
</div>
<div class="gui_box grey">
<div class="gui_box_titlebar" align="left">
<div class="spacer_box_title">
Outboard serial logging device
<div class="gui_box grey">
<div class="gui_box_titlebar" align="left">
<div class="spacer_box_title" data-i18n="serialLogging">
</div>
</div>
<div class="spacer_box">
<p data-i18n="serialLoggingSupportedNote"></p>
</div>
</div>
<div class="spacer_box">
<p data-i18n="serialLoggingSupportedNote"></p>
</div>
</div>
<div class="gui_box grey require-dataflash-supported">
<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">
<div class="require-dataflash-supported">
<p data-i18n="dataflashNote"></p>
<dialog class="dataflash-confirm-erase">
<h3 data-i18n="dataflashConfirmEraseTitle"></h3>
<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">
<a href="#" class="erase-flash-confirm regular-button" data-i18n="dataflashButtonEraseConfirm"></a>
<a href="#" class="erase-flash-cancel regular-button" data-i18n="dataflashButtonEraseCancel"></a>
<a href="#" class="erase-flash-cancel regular-button" data-i18n="dataflashButtonEraseCancel"></a>
</div>
</dialog>
<dialog class="dataflash-saving">
<h3 data-i18n="dataflashSavingTitle"></h3>
<div class="dataflash-saving-before">
@ -111,7 +109,7 @@
</div>
</div>
</dialog>
<ul class="dataflash-contents">
<li class="dataflash-used">
<div class="legend"></div>
@ -120,32 +118,31 @@
<div class="legend"></div>
</li>
</ul>
<div>
<a class="regular-button erase-flash" href="#" data-i18n="dataflashButtonErase"></a>
<a class="regular-button save-flash" href="#" data-i18n="dataflashButtonSaveFile"></a>
</div>
</div>
<p class="require-dataflash-not-present" data-i18n="dataflashNotPresentNote"></p>
<p class="require-dataflash-unsupported" data-i18n="dataflashFirmwareUpgradeRequired"></p>
</div>
</div>
<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>
<div class="require-sdcard-supported">
<div class="gui_box grey">
<div class="gui_box_titlebar" align="left">
<div class="spacer_box_title" data-i18n="OnboardSDCard">
</div>
</div>
</div>
<div class="spacer_box">
<div class="spacer_box">
<div class="sdcard">
<div class="sdcard-icon"></div>
<div class="sdcard-status"></div>
</div>
<p data-i18n="sdcardNote"></p>
<div class="require-sdcard-ready">
<ul class="sdcard-contents">
<li class="sdcard-other">
@ -166,4 +163,4 @@
<a href="#" class="save-settings regular-button" data-i18n="blackboxButtonSave"></a>
</div>
</div>
</div>
</div>

View file

@ -839,6 +839,7 @@ OSD.constants = {
{
name: 'THROTTLE_POSITION',
id: 9,
preview: ' ' + FONT.symbol(SYM.THR) + ' 69'
},
{
@ -3090,7 +3091,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 () {
@ -3278,7 +3279,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'));
}
});
});

View file

@ -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>

View file

@ -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>

View file

@ -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">

View file

@ -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>