Merge pull request #860 from iNavFlight/dzikuvx-defaults-dialog-to-2-3-1

Defaults dialog in 2.3.1
pull/862/head
Paweł Spychalski 5 years ago committed by GitHub
commit df6c4f7c55
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -3224,5 +3224,11 @@
}, },
"vtxDisclaimer": { "vtxDisclaimer": {
"message": "Use only bands, channels and power levels that are legal in a place you fly! Always refer to VTX user manual and local regulations!" "message": "Use only bands, channels and power levels that are legal in a place you fly! Always refer to VTX user manual and local regulations!"
},
"defaultsDialogTitle": {
"message": "Default values"
},
"defaultsDialogInfo": {
"message": "INAV Configurator would like to know which kind of UAV you are configuring. Based on this information it will modify some default values to unlock the best flying performance. "
} }
} }

@ -50,7 +50,8 @@ sources.css = [
'./js/libraries/switchery/switchery.css', './js/libraries/switchery/switchery.css',
'./js/libraries/jbox/jBox.css', './js/libraries/jbox/jBox.css',
'./node_modules/openlayers/dist/ol.css', './node_modules/openlayers/dist/ol.css',
'./src/css/logic.css' './src/css/logic.css',
'./src/css/defaults_dialog.css'
]; ];
sources.js = [ sources.js = [
@ -113,6 +114,7 @@ sources.js = [
'./tabs/advanced_tuning.js', './tabs/advanced_tuning.js',
'./js/peripherals.js', './js/peripherals.js',
'./js/appUpdater.js', './js/appUpdater.js',
'./js/defaults_dialog.js',
'./node_modules/openlayers/dist/ol.js' './node_modules/openlayers/dist/ol.js'
]; ];

@ -0,0 +1,277 @@
'use strict';
var helper = helper || {};
helper.defaultsDialog = (function() {
let publicScope = {},
privateScope = {};
let $container;
let data = [{
"title": 'Mini Quad with 3"-7" propellers',
"settings": [
{
key: "gyro_hardware_lpf",
value: "256HZ"
},
{
key: "looptime",
value: 500
},
{
key: "gyro_lpf_hz",
value: 100
},
{
key: "gyro_lpf_type",
value: "PT1"
},
{
key: "gyro_stage2_lowpass_hz",
value: 200
},
{
key: "dterm_lpf_hz",
value: 90
},
{
key: "use_dterm_fir_filter",
value: "OFF"
},
{
key: "mc_iterm_relax_type",
value: "RP"
},
{
key: "d_boost_factor",
value: 1.5
},
{
key: "antigravity_gain",
value: 2
},
{
key: "antigravity_accelerator",
value: 5
},
{
key: "rc_yaw_expo",
value: 70
},
{
key: "rc_expo",
value: 70
},
{
key: "roll_rate",
value: 70
},
{
key: "pitch_rate",
value: 70
},
{
key: "yaw_rate",
value: 60
},
{
key: "mc_p_pitch",
value: 44
},
{
key: "mc_i_pitch",
value: 60
},
{
key: "mc_d_pitch",
value: 25
},
{
key: "mc_p_roll",
value: 40
},
{
key: "mc_i_roll",
value: 50
},
{
key: "mc_d_roll",
value: 25
},
{
key: "mc_p_yaw",
value: 45
},
{
key: "mc_i_yaw",
value: 70
},
{
key: "mc_airmode_type",
value: "THROTTLE_THRESHOLD"
},
{
key: "applied_defaults",
value: 2
}
],
"features":[
{
bit: 5, // Enable DYNAMIC_FILTERS
state: true
}
]
},
{
"title": 'Airplane',
"id": 3,
"settings": [
{
key: "rc_yaw_expo",
value: 70
},
{
key: "rc_expo",
value: 70
},
{
key: "roll_rate",
value: 30
},
{
key: "pitch_rate",
value: 20
},
{
key: "yaw_rate",
value: 10
},
{
key: "small_angle",
value: 180
},
{
key: "applied_defaults",
value: 3
}
],
"features":[
{
bit: 4, // Enable MOTOR_STOP
state: true
}
]
},
{
"title": 'Custom UAV - INAV legacy defaults',
"settings": [
{
key: "applied_defaults",
value: 1
}
]
},
{
"title": 'Keep current settings',
"settings": [
{
key: "applied_defaults",
value: 1
}
]
}
]
publicScope.init = function() {
mspHelper.getSetting("applied_defaults").then(privateScope.onInitSettingReturned);
$container = $("#defaults-wrapper");
};
privateScope.setFeaturesBits = function (selectedDefaultPreset) {
if (selectedDefaultPreset.features && selectedDefaultPreset.features.length > 0) {
for (let i in selectedDefaultPreset.features) {
if (selectedDefaultPreset.features.hasOwnProperty(i)) {
let feature = selectedDefaultPreset.features[i];
if (feature.state) {
BF_CONFIG.features = bit_set(BF_CONFIG.features, feature.bit);
} else {
BF_CONFIG.features = bit_clear(BF_CONFIG.features, feature.bit);
}
}
}
mspHelper.saveBfConfig(function () {
privateScope.setSettings(selectedDefaultPreset);
});
} else {
privateScope.setSettings(selectedDefaultPreset);
}
};
privateScope.setSettings = function (selectedDefaultPreset) {
Promise.mapSeries(selectedDefaultPreset.settings, function (input, ii) {
return mspHelper.getSetting(input.key);
}).then(function () {
Promise.mapSeries(selectedDefaultPreset.settings, function (input, ii) {
return mspHelper.setSetting(input.key, input.value);
}).then(function () {
mspHelper.saveToEeprom(function () {
//noinspection JSUnresolvedVariable
GUI.log(chrome.i18n.getMessage('configurationEepromSaved'));
GUI.tab_switch_cleanup(function() {
MSP.send_message(MSPCodes.MSP_SET_REBOOT, false, false, function () {
//noinspection JSUnresolvedVariable
GUI.log(chrome.i18n.getMessage('deviceRebooting'));
GUI.handleReconnect();
});
});
});
})
});
};
privateScope.onPresetClick = function(event) {
$container.hide();
let selectedDefaultPreset = data[$(event.currentTarget).data("index")];
if (selectedDefaultPreset && selectedDefaultPreset.settings) {
mspHelper.loadBfConfig(function () {
privateScope.setFeaturesBits(selectedDefaultPreset)
});
}
};
privateScope.render = function() {
let $place = $container.find('.defaults-dialog__options');
$place.html("");
for (let i in data) {
if (data.hasOwnProperty(i)) {
let preset = data[i];
let $element = $("<div class='default_btn defaults_btn'>\
<a class='confirm' href='#'></a>\
</div>")
$element.find("a").html(preset.title);
$element.data("index", i).click(privateScope.onPresetClick)
$element.appendTo($place);
}
}
}
privateScope.onInitSettingReturned = function(promise) {
if (promise.value > 0) {
return; //Defaults were applied, we can just ignore
}
privateScope.render();
$container.show();
}
return publicScope;
})();

@ -199,6 +199,10 @@ function onValidFirmware()
GUI.allowedTabs = GUI.defaultAllowedTabsWhenConnected.slice(); GUI.allowedTabs = GUI.defaultAllowedTabsWhenConnected.slice();
onConnect(); onConnect();
if (semver.gte(CONFIG.flightControllerVersion, "2.3.0")) {
helper.defaultsDialog.init();
}
$('#tabs ul.mode-connected .tab_setup a').click(); $('#tabs ul.mode-connected .tab_setup a').click();
}); });
}); });

@ -1,21 +1,22 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link type="text/css" rel="stylesheet" href="./build/styles.css" media="all"/> <link type="text/css" rel="stylesheet" href="./build/styles.css" media="all" />
<script type="text/javascript" src="./build/script.js"></script> <script type="text/javascript" src="./build/script.js"></script>
<title></title> <title></title>
</head> </head>
<body> <body>
<div id="main-wrapper"> <div id="main-wrapper">
<div id="appUpdateNotification" class="is-hidden"> <div id="appUpdateNotification" class="is-hidden">
<div class="modal__content"> <div class="modal__content">
<h1 class="modal__title modal__title" data-i18n="appUpdateNotificationHeader"></h1> <h1 class="modal__title modal__title" data-i18n="appUpdateNotificationHeader"></h1>
<div class="modal__text" data-i18n="appUpdateNotificationDescription"></div> <div class="modal__text" data-i18n="appUpdateNotificationDescription"></div>
</div> </div>
<div class="modal__buttons modal__buttons--upbottom"> <div class="modal__buttons modal__buttons--upbottom">
<a href="https://github.com/iNavFlight/inav-configurator/releases" target="_blank" id="update-notification-download" <a href="https://github.com/iNavFlight/inav-configurator/releases" target="_blank" id="update-notification-download" class="modal__button modal__button--main modal__button--main--inline" data-i18n="downloadUpdatesBtn"></a>
class="modal__button modal__button--main modal__button--main--inline" data-i18n="downloadUpdatesBtn"></a>
<a id="update-notification-close" class="modal__button modal__button--main modal__button--main--inline" data-i18n="closeUpdateBtn"></a> <a id="update-notification-close" class="modal__button modal__button--main modal__button--main--inline" data-i18n="closeUpdateBtn"></a>
</div> </div>
</div> </div>
@ -39,7 +40,7 @@
<div class="portsinput__row"> <div class="portsinput__row">
<div id="port-override-option" class="portsinput__top-element portsinput__top-element--port-override"> <div id="port-override-option" class="portsinput__top-element portsinput__top-element--port-override">
<label for="port-override">Port: </label> <label for="port-override">Port: </label>
<input id="port-override" type="text" value="/dev/rfcomm0"/> <input id="port-override" type="text" value="/dev/rfcomm0" />
</div> </div>
<div class="dropdown dropdown-dark portsinput__top-element"> <div class="dropdown dropdown-dark portsinput__top-element">
<!--suppress HtmlFormInputWithoutLabel --> <!--suppress HtmlFormInputWithoutLabel -->
@ -69,7 +70,7 @@
<label for="wireless-mode"> <label for="wireless-mode">
<span class="" data-i18n="wirelessModeSwitch"></span> <span class="" data-i18n="wirelessModeSwitch"></span>
</label> </label>
<input id="wireless-mode" class=" togglesmall" type="checkbox"/> <input id="wireless-mode" class=" togglesmall" type="checkbox" />
</div> </div>
</div> </div>
</div> </div>
@ -161,45 +162,85 @@
<div class="tab_container"> <div class="tab_container">
<div id="tabs"> <div id="tabs">
<ul class="mode-disconnected"> <ul class="mode-disconnected">
<li class="tab_landing"><a href="#" data-i18n="tabLanding" class="tabicon ic_welcome" title="Welcome"></a></li> <li class="tab_landing">
<li class="tab_help"><a href="https://github.com/iNavFlight/inav/wiki" target="_blank" data-i18n="tabHelp" class="tabicon ic_help" <a href="#" data-i18n="tabLanding" class="tabicon ic_welcome" title="Welcome"></a>
title="Documentation &amp; Support"></a></li> </li>
<li class="tab_mission_control"><a href="#" data-i18n="tabMissionControl" class="tabicon ic_mission" title="Mission Control"></a></li> <li class="tab_help">
<li class="tab_firmware_flasher"><a href="#" data-i18n="tabFirmwareFlasher" class="tabicon ic_flasher" <a href="https://github.com/iNavFlight/inav/wiki" target="_blank" data-i18n="tabHelp" class="tabicon ic_help" title="Documentation &amp; Support"></a>
title="Firmware Flasher"></a></li> </li>
<li class="tab_mission_control">
<a href="#" data-i18n="tabMissionControl" class="tabicon ic_mission" title="Mission Control"></a>
</li>
<li class="tab_firmware_flasher">
<a href="#" data-i18n="tabFirmwareFlasher" class="tabicon ic_flasher" title="Firmware Flasher"></a>
</li>
</ul> </ul>
<ul class="mode-connected"> <ul class="mode-connected">
<li class="tab_setup"><a href="#" data-i18n="tabSetup" class="tabicon ic_setup" title="Setup"></a></li> <li class="tab_setup">
<li class="tab_calibration"><a href="#" data-i18n="tabCalibration" class="tabicon ic_calibration" title="Calibration"></a></li> <a href="#" data-i18n="tabSetup" class="tabicon ic_setup" title="Setup"></a>
<li class="tab_mixer"><a href="#" data-i18n="tabMixer" class="tabicon ic_mixer" title="Mixer"></a></li> </li>
<li class="tab_motors"><a href="#" data-i18n="tabMotorTesting" class="tabicon ic_motor" title="Motors"></a></li> <li class="tab_calibration">
<li class="tab_profiles"><a href="#" data-i18n="tabPresets" class="tabicon ic_wizzard" <a href="#" data-i18n="tabCalibration" class="tabicon ic_calibration" title="Calibration"></a>
title="Presets"></a></li> </li>
<li class="tab_ports"><a href="#" data-i18n="tabPorts" class="tabicon ic_ports" title="Ports"></a></li> <li class="tab_mixer">
<li class="tab_configuration"><a href="#" data-i18n="tabConfiguration" class="tabicon ic_config" <a href="#" data-i18n="tabMixer" class="tabicon ic_mixer" title="Mixer"></a>
title="Configuration"></a></li> </li>
<li class="tab_failsafe"><a href="#" data-i18n="tabFailsafe" class="tabicon ic_failsafe" <li class="tab_motors">
title="Failsafe"></a></li> <a href="#" data-i18n="tabMotorTesting" class="tabicon ic_motor" title="Motors"></a>
<li class="tab_pid_tuning"><a href="#" data-i18n="tabPidTuning" class="tabicon ic_pid" </li>
title="PID Tuning"></a></li> <li class="tab_profiles">
<li class="tab_advanced_tuning"><a href="#" data-i18n="tabAdvancedTuning" class="tabicon ic_advanced" title="Advanced Tuning"></a></li> <a href="#" data-i18n="tabPresets" class="tabicon ic_wizzard" title="Presets"></a>
</li>
<li class="tab_ports">
<a href="#" data-i18n="tabPorts" class="tabicon ic_ports" title="Ports"></a>
</li>
<li class="tab_configuration">
<a href="#" data-i18n="tabConfiguration" class="tabicon ic_config" title="Configuration"></a>
</li>
<li class="tab_failsafe">
<a href="#" data-i18n="tabFailsafe" class="tabicon ic_failsafe" title="Failsafe"></a>
</li>
<li class="tab_pid_tuning">
<a href="#" data-i18n="tabPidTuning" class="tabicon ic_pid" title="PID Tuning"></a>
</li>
<li class="tab_advanced_tuning">
<a href="#" data-i18n="tabAdvancedTuning" class="tabicon ic_advanced" title="Advanced Tuning"></a>
</li>
<li class="tab_receiver"><a href="#" data-i18n="tabReceiver" class="tabicon ic_rx" title="Receiver"></a></li> <li class="tab_receiver">
<li class="tab_auxiliary"><a href="#" data-i18n="tabAuxiliary" class="tabicon ic_modes" title="Modes"></a></li> <a href="#" data-i18n="tabReceiver" class="tabicon ic_rx" title="Receiver"></a>
<li class="tab_adjustments"><a href="#" data-i18n="tabAdjustments" class="tabicon ic_adjust" title="Adjustments"></a></li> </li>
<li class="tab_gps"><a href="#" data-i18n="tabGPS" class="tabicon ic_gps" title="GPS"></a></li> <li class="tab_auxiliary">
<li class="tab_mission_control"><a href="#" data-i18n="tabMissionControl" class="tabicon ic_mission" title="Mission Control"></a></li> <a href="#" data-i18n="tabAuxiliary" class="tabicon ic_modes" title="Modes"></a>
<li class="tab_osd"><a href="#" data-i18n="tabOSD" class="tabicon ic_osd" title="OSD"></a></li> </li>
<li class="tab_adjustments">
<a href="#" data-i18n="tabAdjustments" class="tabicon ic_adjust" title="Adjustments"></a>
</li>
<li class="tab_gps">
<a href="#" data-i18n="tabGPS" class="tabicon ic_gps" title="GPS"></a>
</li>
<li class="tab_mission_control">
<a href="#" data-i18n="tabMissionControl" class="tabicon ic_mission" title="Mission Control"></a>
</li>
<li class="tab_osd">
<a href="#" data-i18n="tabOSD" class="tabicon ic_osd" title="OSD"></a>
</li>
<!--<li class="tab_transponder"><a href="#" data-i18n="tabTransponder" class="tabicon ic_transponder" title="Transponder"></a></li>--> <!--<li class="tab_transponder"><a href="#" data-i18n="tabTransponder" class="tabicon ic_transponder" title="Transponder"></a></li>-->
<li class="tab_led_strip"><a href="#" data-i18n="tabLedStrip" class="tabicon ic_led" <li class="tab_led_strip">
title="LED Strip"></a></li> <a href="#" data-i18n="tabLedStrip" class="tabicon ic_led" title="LED Strip"></a>
<li class="tab_sensors"><a href="#" data-i18n="tabRawSensorData" class="tabicon ic_sensors" </li>
title="Sensors"></a></li> <li class="tab_sensors">
<li class="tab_logging"><a href="#" data-i18n="tabLogging" class="tabicon ic_log" <a href="#" data-i18n="tabRawSensorData" class="tabicon ic_sensors" title="Sensors"></a>
title="Tethered Logging"></a></li> </li>
<li class="tab_onboard_logging"><a href="#" data-i18n="tabOnboardLogging" class="tabicon ic_data" <li class="tab_logging">
title="Onboard Logging"></a></li> <a href="#" data-i18n="tabLogging" class="tabicon ic_log" title="Tethered Logging"></a>
<li class="tab_cli"><a href="#" data-i18n="tabCLI" class="tabicon ic_cli" title="CLI"></a></li> </li>
<li class="tab_onboard_logging">
<a href="#" data-i18n="tabOnboardLogging" class="tabicon ic_data" title="Onboard Logging"></a>
</li>
<li class="tab_cli">
<a href="#" data-i18n="tabCLI" class="tabicon ic_cli" title="CLI"></a>
</li>
<!--<li class=""><a href="#" class="tabicon ic_advanced">Advanced (spare icon)</a></li>--> <!--<li class=""><a href="#" class="tabicon ic_advanced">Advanced (spare icon)</a></li>-->
<!--<li class=""><a href="#" class="tabicon ic_wizzard">Wizzard (spare icon)</a></li>--> <!--<li class=""><a href="#" class="tabicon ic_wizzard">Wizzard (spare icon)</a></li>-->
@ -245,9 +286,20 @@
<p>Waiting for data ...</p> <p>Waiting for data ...</p>
</div> </div>
</div> </div>
</div> </div>
<div id="modal-reconnect" class="is-hidden"> <div id="modal-reconnect" class="is-hidden">
<div data-i18n="deviceRebooting"></div> <div data-i18n="deviceRebooting"></div>
</div> </div>
<div id="defaults-wrapper" style="display: none">
<div class="defaults-dialog__background"></div>
<div class="defaults-dialog__content">
<div class="tab_title" data-i18n="defaultsDialogTitle"></div>
<div class="defaults-dialog__content--wrapper">
<p class="defaults-dialog__info" data-i18n="defaultsDialogInfo"></p>
<div class="defaults-dialog__options"></div>
</div>
</div>
</div>
</body> </body>
</html> </html>

@ -0,0 +1,45 @@
.defaults-dialog__background {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: black;
opacity: 0.75;
z-index: 2001;
}
.defaults-dialog__content {
background-color: #efefef;
border-radius: 2px;
z-index: 2002;
position: absolute;
width: 500px;
height: 320px;
overflow-y: auto;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
padding: 1em;
}
.defaults-dialog__content--wrapper {
overflow-y: auto;
}
.defaults-dialog__info {
font-size: 1.3em;
}
.defaults_btn {
float: none;
display: block;
margin-top: 1em;
}
.defaults_btn a {
font-size: 1.4em;
line-height: 25px;
}
Loading…
Cancel
Save