1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-21 15:25:19 +03:00

Add support for configuring coordinate digit count on OSD

Depends on https://github.com/iNavFlight/inav/pull/3573
This commit is contained in:
Alberto García Hierro 2018-07-12 00:51:34 +01:00
parent fc0c8123da
commit 142e960893
4 changed files with 38 additions and 4 deletions

View file

@ -2954,6 +2954,10 @@ var mspHelper = (function (gui) {
self.getSetting = function (name) { self.getSetting = function (name) {
var $this = this; var $this = this;
return this._getSetting(name).then(function (setting) { return this._getSetting(name).then(function (setting) {
if (!setting) {
// Setting not available in the FC
return null;
}
var data = []; var data = [];
$this._encodeSettingReference(name, setting.index, data); $this._encodeSettingReference(name, setting.index, data);
return MSP.promise(MSPCodes.MSPV2_SETTING, data).then(function (resp) { return MSP.promise(MSPCodes.MSPV2_SETTING, data).then(function (resp) {

View file

@ -11,6 +11,20 @@ var Settings = (function () {
return Promise.mapSeries(inputs, function (input, ii) { return Promise.mapSeries(inputs, function (input, ii) {
var settingName = input.data('setting'); var settingName = input.data('setting');
return mspHelper.getSetting(settingName).then(function (s) { return mspHelper.getSetting(settingName).then(function (s) {
// Check if the input declares a parent
// to be hidden in case of the setting not being available.
// Otherwise, default to hiding its parent
var parent = input.parents('.setting-container:first');
if (parent.length == 0) {
parent = input.parent();
}
if (!s) {
// Setting doesn't exist.
input.val(null);
parent.hide();
return;
}
parent.show();
if (input.prop('tagName') == 'SELECT' || s.setting.table) { if (input.prop('tagName') == 'SELECT' || s.setting.table) {
if (input.attr('type') == 'checkbox') { if (input.attr('type') == 'checkbox') {
input.prop('checked', s.value > 0); input.prop('checked', s.value > 0);

View file

@ -68,6 +68,9 @@
<label> <label>
<select class="update_preview" data-setting="osd_main_voltage_decimals" data-live="true"></select> Voltage Decimals <select class="update_preview" data-setting="osd_main_voltage_decimals" data-live="true"></select> Voltage Decimals
</label> </label>
<label>
<select class="update_preview" data-setting="osd_coordinate_digits" data-live="true"></select> Coordinate Digits
</label>
<label> <label>
<select class="update_preview" data-setting="osd_crosshairs_style" data-live="true"></select> Crosshairs Style <select class="update_preview" data-setting="osd_crosshairs_style" data-live="true"></select> Crosshairs Style
</label> </label>

View file

@ -268,7 +268,7 @@ FONT.symbol = function (hexVal) {
FONT.embed_dot = function(str) { FONT.embed_dot = function(str) {
var zero = '0'.charCodeAt(0); var zero = '0'.charCodeAt(0);
var repl = str.replace(/\d.\d/, function(match) { var repl = str.replace(/\d\.\d/, function(match) {
var c1 = match.charCodeAt(0) + SYM.ZERO_HALF_TRAILING_DOT - zero; var c1 = match.charCodeAt(0) + SYM.ZERO_HALF_TRAILING_DOT - zero;
var c2 = match.charCodeAt(2) + SYM.ZERO_HALF_LEADING_DOT - zero; var c2 = match.charCodeAt(2) + SYM.ZERO_HALF_LEADING_DOT - zero;
return FONT.symbol(c1) + FONT.symbol(c2); return FONT.symbol(c1) + FONT.symbol(c2);
@ -323,6 +323,20 @@ function osdMainBatteryPreview() {
return FONT.symbol(SYM.VOLT) + FONT.embed_dot(s); return FONT.symbol(SYM.VOLT) + FONT.embed_dot(s);
} }
function osdCoordinatePreview(symbol, coordinate) {
return function() {
var digits = Settings.getInputValue('osd_coordinate_digits');
if (!digits) {
// Setting doesn't exist in the FC. Use 11, which
// will make it look close to how it looked before 2.0
digits = 11;
}
var integerLength = ('' + parseInt(coordinate)).length;
console.log(coordinate.toFixed(digits - integerLength));
return FONT.symbol(symbol) + FONT.embed_dot(coordinate.toFixed(digits - integerLength));
}
}
// parsed fc output and output to fc, used by to OSD.msp.encode // parsed fc output and output to fc, used by to OSD.msp.encode
OSD.initData = function () { OSD.initData = function () {
OSD.data = { OSD.data = {
@ -751,13 +765,13 @@ OSD.constants = {
name: 'LONGITUDE', name: 'LONGITUDE',
id: 20, id: 20,
min_version: '1.6.0', min_version: '1.6.0',
preview: FONT.symbol(SYM.LON) + FONT.embed_dot('14.7652134 ') // 11 chars preview: osdCoordinatePreview(SYM.LON, -114.7652134),
}, },
{ {
name: 'LATITUDE', name: 'LATITUDE',
id: 21, id: 21,
min_version: '1.6.0', min_version: '1.6.0',
preview: FONT.symbol(SYM.LAT) + FONT.embed_dot('52.9872367 ') // 11 chars preview: osdCoordinatePreview(SYM.LAT, 52.9872367),
}, },
{ {
name: 'DIRECTION_TO_HOME', name: 'DIRECTION_TO_HOME',
@ -1838,7 +1852,6 @@ OSD.GUI.updatePreviews = function() {
if (OSD.data.display_size.y % 2 == 0) { if (OSD.data.display_size.y % 2 == 0) {
mapCenter += OSD.data.display_size.x / 2; mapCenter += OSD.data.display_size.x / 2;
} }
console.log(OSD.data.display_size.x * OSD.data.display_size.y, mapCenter);
OSD.GUI.updateMapPreview(mapCenter, 'MAP_NORTH', 'N', SYM.HOME); OSD.GUI.updateMapPreview(mapCenter, 'MAP_NORTH', 'N', SYM.HOME);
OSD.GUI.updateMapPreview(mapCenter, 'MAP_TAKEOFF', 'T', SYM.HOME); OSD.GUI.updateMapPreview(mapCenter, 'MAP_TAKEOFF', 'T', SYM.HOME);
OSD.GUI.updateMapPreview(mapCenter, 'RADAR', null, SYM.DIR_TO_HOME); OSD.GUI.updateMapPreview(mapCenter, 'RADAR', null, SYM.DIR_TO_HOME);