1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-22 15:55:28 +03:00

Merge branch 'master' into ToshihiroMakuuchi/ja-fix01

This commit is contained in:
Sensei 2024-12-13 17:44:16 -06:00 committed by GitHub
commit 5f25766fbc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 6549 additions and 73 deletions

View file

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html>
<html i18n_lang="currentLanguage">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
@ -88,13 +88,7 @@
</div>
</div>
<div class="header-wrapper">
<div id="dataflash_wrapper_global">
<div class="noflash_global" align="center" i18n="sensorDataFlashNotFound"></div>
<ul class="dataflash-contents_global">
<li class="dataflash-free_global">
<div class="legend" i18n="sensorDataFlashFreeSpace"></div>
</li>
</ul>
<div id="profiles_wrapper_global">
<div id="profile_change">
<div class="dropdown dropdown-dark">
<form name="profile-change" id="profile-change">
@ -130,6 +124,14 @@
</div>
</div>
</div>
<div id="dataflash_wrapper_global">
<div class="noflash_global" align="center" i18n="sensorDataFlashNotFound"></div>
<ul class="dataflash-contents_global">
<li class="dataflash-free_global">
<div class="legend" i18n="sensorDataFlashFreeSpace"></div>
</li>
</ul>
</div>
<div id="sensor-status" class="sensor_state mode-connected">
<ul>
<li class="gyro" i18n_title="sensorStatusGyro">

View file

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

View file

@ -529,7 +529,7 @@ GUI_control.prototype.update_dataflash_global = function () {
width: (100-(FC.DATAFLASH.totalSize - FC.DATAFLASH.usedSize) / FC.DATAFLASH.totalSize * 100) + "%",
display: 'block'
});
$(".dataflash-free_global div").text('Dataflash: free ' + formatFilesize(FC.DATAFLASH.totalSize - FC.DATAFLASH.usedSize));
$(".dataflash-free_global div").html(i18n.getMessage('sensorDataFlashFreeSpace') + formatFilesize(FC.DATAFLASH.totalSize - FC.DATAFLASH.usedSize));
} else {
$(".noflash_global").css({
display: 'block'

View file

@ -10,7 +10,8 @@ const i18nextXHRBackend = require('i18next-xhr-backend');
const Store = require('electron-store');
const store = new Store();
const availableLanguages = ['en', 'ja', 'uk'];
const availableLanguages = ['en', 'ja', 'uk','zh_CN'];
const i18n = {};
@ -173,6 +174,11 @@ i18n.localize = function (reTranslate = false) {
const element = $(this);
element.attr('placeholder', translate(element.attr('i18n_placeholder')));
});
$('[i18n_lang]').each(function() {
const element = $(this);
element.attr('lang', translate(element.attr('i18n_lang')));
});
} else {
$('[i18n]:not(.i18n-replaced)').each(function() {
@ -234,6 +240,13 @@ i18n.localize = function (reTranslate = false) {
element.attr('placeholder', translate(element.attr('i18n_placeholder')));
element.addClass('i18n_placeholder-replaced');
});
$('[i18n_lang]:not(.i18n_lang-replaced)').each(function() {
const element = $(this);
element.attr('lang', translate(element.attr('i18n_lang')));
element.addClass('i18n_lang-replaced');
});
}
return localized;

View file

@ -462,6 +462,7 @@ var SerialBackend = (function () {
$('#sensor-status').show();
$('#portsinput').hide();
$('#dataflash_wrapper_global').show();
$('#profiles_wrapper_global').show();
/*
* Init PIDs bank with a length that depends on the version
@ -481,7 +482,6 @@ var SerialBackend = (function () {
interval.add('global_data_refresh', periodicStatusUpdater.run, periodicStatusUpdater.getUpdateInterval(CONFIGURATOR.connection.bitrate), false);
});
}
privateScope.onClosed = function (result) {
@ -497,6 +497,7 @@ var SerialBackend = (function () {
$('#sensor-status').hide();
$('#portsinput').show();
$('#dataflash_wrapper_global').hide();
$('#profiles_wrapper_global').hide();
$('#quad-status_wrapper').hide();
//updateFirmwareVersion();

View file

@ -154,7 +154,11 @@ var ublox = (function () {
if (successCallback != null) {
req.onload = (event) => {
if(req.status == 200) {
successCallback(req.response);
} else {
failCallback(event);
}
};
}
@ -164,13 +168,17 @@ var ublox = (function () {
}
}
try {
req.send(null);
} catch(error) {
GUI.alert(i18n.getMessage("gpsAssistnowLoadDataError"));
console.log(i18n.getMessage("gpsAssistnowLoadDataError") + ':' + error.toString());
}
}
function loadError(event) {
GUI.alert(i18n.getMessage("gpsAssistnowLoadDataError"));
console.log(i18n.getMessage("gpsAssistnowLoadDataError") + ':' + event.toString());
}
// For more info on assistnow, check:

View file

@ -18,6 +18,10 @@
"message": "日本語",
"_comment": "Don't translate!"
},
"language_zh_CN": {
"message": "简体中文",
"_comment": "Don't translate!"
},
"language": {
"message": "Language"
},
@ -5704,7 +5708,7 @@
"message": "No dataflash <br>chip found"
},
"sensorDataFlashFreeSpace": {
"message": "Dataflash: free space"
"message": "Dataflash: <br />free "
},
"mixerProfile1": {
"message": "Mixer Profile 1"
@ -6156,5 +6160,8 @@
},
"adsbHeartbeatTotalMessages": {
"message": "Heartbeat msgs"
},
"currentLanguage": {
"message": "en"
}
}

View file

@ -18,6 +18,10 @@
"message": "日本語",
"_comment": "Don't translate!"
},
"language_zh_CN": {
"message": "简体中文",
"_comment": "Don't translate!"
},
"language": {
"message": "Мова"
},
@ -565,7 +569,7 @@
"message": "Калібрувати Магнітометр"
},
"initialSetupCalibrateMagText": {
"message": "Покрутіть мультиротор принаймні <strong>360</strong> градусів по всіх 3-х осях обертання, у вас є 30 секунд, щоб виконати це завдання"
"message": "Покрутіть мультикоптер принаймні <strong>360</strong> градусів по всіх 3-х осях обертання, у вас є 30 секунд, щоб виконати це завдання"
},
"initialSetupButtonReset": {
"message": "Скинути налаштування"
@ -1153,7 +1157,7 @@
"message": "Протокол"
},
"configurationGPSUseGalileo": {
"message": "Використовувати супутники Galileo(ЄС)"
"message": "Використовувати супутники Galileo (ЄС)"
},
"configurationGPSUseBeidou": {
"message": "Використовувати супутники BeiDou (Китай)"
@ -1755,6 +1759,9 @@
"receiverRssiChannel": {
"message": "Канал RSSI"
},
"receiverRssiSource": {
"message": "Джерело RSSI"
},
"receiverRefreshRateTitle": {
"message": "Частота оновлення графіків"
},
@ -2365,10 +2372,10 @@
"message": "У вашому польотному контролері відсутній сумісний чіп пам'яті для зберігання даних."
},
"dataflashFirmwareUpgradeRequired": {
"message": "Для використання флеш-пам'яті польотника необхідна прошивка &gt;= 1.8.0."
"message": "Для використання флешпам'яті польотника необхідна прошивка &gt;= 1.8.0."
},
"dataflashButtonSaveFile": {
"message": "Зберегти флеш-пам'ять в файл..."
"message": "Зберегти флешпам'ять в файл..."
},
"dataflashButtonErase": {
"message": "Стерти флешпамять"
@ -2551,7 +2558,7 @@
"message": "<strong>Відновлення / Втрата зв'язку<strong>"
},
"firmwareFlasherRecoveryText": {
"message": "Якщо ви втратили зв'язок з вашою платою, дотримуйтесь цих кроків, щоб відновити зв'язок: <ul><li>Вимкніть живлення</li><li>Увімкніть 'Польотник уже в режимі завантажувача', увімкніть 'Повне стирання чипа'.</li><li>З'єднайте контакти BOOT або утримуйте кнопку BOOT.</li><li>Увімкніть живлення (індикатор активності НЕ буде блимати, якщо все зроблено правильно).</li><li>Встановіть усі драйвери STM32 і Zadig, якщо це необхідно (див. розділ <a href=\"https://github.com/iNavFlight/inav/blob/master/docs/USB%20Flashing.md\"target=\"_blank\">Прошивка через USB</a> в документації INAV).</li><li>Закрийте конфігуратор, закрийте всі запущені екземпляри Chrome, закрийте всі програми Chrome, перезапустіть конфігуратор.</li><li>Відпустіть кнопку BOOT, якщо вона є на вашому польотному контролері.</li><li>Прошивайте правильною прошивкою (використовуючи ручну швидкість передачі даних, якщо це вказано в керівництві до вашого польотного контролера).</li><li>Вимкніть живлення.</li><li>Видаліть перемичку BOOT.</li><li>Увімкніть живлення (індикатор активності має блимати).</li><li>Під'єднайте як зазвичай.</li></ul>"
"message": "Якщо ви втратили зв'язок з вашою платою, дотримуйтесь цих кроків, щоб відновити його: <ul><li>Вимкніть живлення</li><li>Увімкніть 'Польотник уже в режимі завантажувача', увімкніть 'Повністю очистити мікроконтролер'.</li><li>З'єднайте контакти BOOT або утримуйте кнопку BOOT.</li><li>Увімкніть живлення (індикатор активності НЕ буде блимати, якщо все зроблено правильно).</li><li>Встановіть усі драйвери STM32 і Zadig, якщо це необхідно (див. розділ <a href=\"https://github.com/iNavFlight/inav/blob/master/docs/USB%20Flashing.md\"target=\"_blank\">Прошивка через USB</a> в документації INAV).</li><li>Закрийте конфігуратор, закрийте всі запущені екземпляри Chrome, закрийте всі програми Chrome, перезапустіть конфігуратор.</li><li>Відпустіть кнопку BOOT, якщо вона є на вашому польотному контролері.</li><li>Прошивайте правильною прошивкою (використовуючи ручну швидкість передачі даних, якщо це вказано в керівництві до вашого польотного контролера).</li><li>Вимкніть живлення.</li><li>Видаліть перемичку BOOT.</li><li>Увімкніть живлення (індикатор активності має блимати).</li><li>Під'єднайте як зазвичай.</li></ul>"
},
"firmwareFlasherButtonLeave": {
"message": "Вийти з програматора"
@ -3067,7 +3074,7 @@
"message": "Визначає смугу фільтра. <br><br>Повинно бути нижче частоти режекторного фільтра."
},
"multiRotorNavigationConfiguration": {
"message": "Налаштування навігації мультиротора"
"message": "Налаштування навігації мультикоптера"
},
"userControlMode": {
"message": "Режим керування користувачем"
@ -3567,6 +3574,12 @@
"osd_main_voltage_decimals": {
"message": "Десяткові розряди напруги"
},
"osd_decimals_altitude": {
"message": "Десяткові знаки висоти"
},
"osd_decimals_distance": {
"message": "Десяткові знаки відстані"
},
"osd_mah_precision": {
"message": "Точність мАг"
},
@ -3652,7 +3665,7 @@
"message": "Нахил камери догори"
},
"osd_camera_uptilt_help": {
"message": "Встановіть кут підйому FPV камери в градусах, позитивний - вгору, негативний - вниз, відносно горизонталі. Використовується для коректного відображення елементів HUD та індикатора штучного горизонту (коли увімкнено)."
"message": "Встановіть кут підйому FPV камери в градусах відносно горизонталі, позитивний - вгору, негативний - вниз. Використовується для коректного відображення елементів HUD та індикатора штучного горизонту (коли увімкнено osd_ahi_camera_uptilt_comp=ON)."
},
"osd_camera_fov_h": {
"message": "Кут горизонтального поля зору камери"
@ -3787,19 +3800,19 @@
"message": "Максимальна температура регулятора обертів"
},
"osd_snr_alarm": {
"message": "Рівень сигналізації CRSF SNR"
"message": "Рівень сигналізації SNR"
},
"osdalarmSNR_HELP": {
"message": "SNR відображається лише нижче цього значення. 0dB (співвідношення 1:1) означає, що отриманий сигнал дорівнює рівню шумів."
},
"osd_link_quality_alarm": {
"message": "Сигналізація якості зв'язку CRSF"
"message": "Сигналізація якості зв'язку"
},
"osdalarmLQ_HELP": {
"message": "Для Crossfire використовуйте 70%. Для Tracer використовуйте 50%."
},
"osd_rssi_dbm_alarm": {
"message": "Cигналізація CRSF RSSI dBm"
"message": "Cигналізація RSSI в дБм"
},
"osd_adsb_distance_warning": {
"message": "Попередження про відстань ADSB"
@ -3846,8 +3859,8 @@
"osdGroupVTX": {
"message": "Відеопередавач"
},
"osdGroupCRSF": {
"message": "Статистика приймача CRSF"
"osdGroupRx": {
"message": "Статистика приймача RX"
},
"osdGroupMapsAndRadars": {
"message": "Карти та радарні системи"
@ -4074,23 +4087,29 @@
"osdElement_VTX_CHANNEL_HELP": {
"message": "Показує поточний діапазон і канал відеопередавача. Потребує або відеопередавач зі SmartAudio чи Tramp, або відеопередавач, інтегрований у польотний контролер."
},
"osdElement_CRSF_RSSI_DBM": {
"message": "RX RSSI у дБм"
"osdElement_RSSI_DBM": {
"message": "Значення RX RSSI в дБм"
},
"osdElement_CRSF_LQ": {
"message": "RX Якість з'єднання %"
"osdElement_LQ_UPLINK": {
"message": "Якість з'єднання від RX до TX %"
},
"osdElement_CRSF_LQ_HELP": {
"message": "Використовуйте налаштування Формату Crossfire LQ для вибору типу формату."
"osdElement_LQ_UPLINK_HELP": {
"message": "Якщо використовується CRSF, використовуйте налаштування формату LQ Crossfire для вибору типу формату."
},
"osdElement_CRSF_SNR_DB": {
"message": "RX Uplink SNR в дБ"
"osdElement_LQ_DOWNLINK": {
"message": "Якість каналу від TX до RX %"
},
"osdElement_CRSF_SNR_DB_HELP": {
"message": "Показується лише при зниженні SNR нижче рівня попередження. При 0 дБ рівень прийнятого сигналу дорівнює рівню шуму."
"osdElement_SNR_DB": {
"message": "SNR каналу від RX до TX у дБ"
},
"osdElement_CRSF_TX_POWER": {
"message": "Потужність TX у мВт"
"osdElement_SNR_DB_HELP": {
"message": "Показується лише коли SNR (співвідношення сигнал/шум) опускається нижче рівня попередження. При 0 дБ рівень прийнятого сигналу дорівнює рівню шуму."
},
"osdElement_TX_POWER_UPLINK": {
"message": "Потужність передавача в мВт"
},
"osdElement_OSD_RX_POWER_DOWNLINK": {
"message": "Потужність приймача в мВт"
},
"osdElement_MAP_NORTH": {
"message": "Карта (північ вгорі)"
@ -4156,16 +4175,16 @@
"message": "Результати ПІД регулятора положення FW"
},
"osdElement_MC_VEL_X_PID_OUTPUTS": {
"message": "Результати ПІД регулятора швидкості мультиротора по осі X"
"message": "Результати ПІД регулятора швидкості мультикоптера по осі X"
},
"osdElement_MC_VEL_Y_PID_OUTPUTS": {
"message": "Результати ПІД регулятора швидкості мультиротора по осі Y"
"message": "Результати ПІД регулятора швидкості мультикоптера по осі Y"
},
"osdElement_MC_VEL_Z_PID_OUTPUTS": {
"message": "Результати ПІД регулятора швидкості мультиротора по осі Z"
"message": "Результати ПІД регулятора швидкості мультикоптера по осі Z"
},
"osdElement_MC_POS_XYZ_P_OUTPUTS": {
"message": "Результати П регулятора положення XYZ мультиротора"
"message": "Результати П регулятора положення XYZ мультикоптера"
},
"osdElement_IMU_TEMPERATURE": {
"message": "Температура ІВП"
@ -4275,6 +4294,15 @@
"osdElement_OSD_RANGEFINDER": {
"message": "Відстань далекоміра"
},
"osdElement_COURSE_NEXT_GEOZONE": {
"message": "Курс до наступної геозони"
},
"osdElement_HOR_DIST_TO_NEXT_GEOZONE": {
"message": "Горизонтальна відстань до наступної геозони"
},
"osdElement_VERT_DIST_TO_NEXT_GEOZONE": {
"message": "Вертикальна відстань до наступної геозони"
},
"osdSettingPLUS_CODE_DIGITS_HELP": {
"message": "Точність на екваторі: 10=13,9x13,9м; 11=2,8x3,5м; 12=56x87см; 13=11x22см."
},
@ -4635,6 +4663,171 @@
"missionSafehomeMaxSafehomesReached": {
"message": "Максимальна кількість безпечних точок досягнута."
},
"missionGeozoneHead": {
"message": "Геозони"
},
"missionGeozoneEdit": {
"message": "Редагувати геозону $1"
},
"missionGeozoneSaveAndReboot": {
"message": "Записати Геозони в Eeprom та перезавантажити"
},
"missionGeozoneLoad": {
"message": "Завантажити геозони з Eeprom"
},
"missionGeozone": {
"message": "-Геозона "
},
"missionGezoneType": {
"message": "Тип"
},
"missionGezoneShape": {
"message": "Форма"
},
"missionGeozoneTypePolygon": {
"message": "Багатокутна"
},
"missionGeozoneTypeCircular": {
"message": "Кругова"
},
"missionGeozoneMaxZonesReached": {
"message": "Досягнуто максимальної кількості геозон."
},
"missionGeozoneMaxVerticesReached": {
"message": "Досягнуто максимальної кількості вершин геозони."
},
"missionGeozoneWarning": {
"message": "Щонайменше одна місія та одна геозона налаштовані, будь ласка, переконайтеся, що місія не порушує межі геозони."
},
"geozoneEdit": {
"message": "Редагувати геозону "
},
"geozoneShape": {
"message": "Форма"
},
"geozoneInclusive": {
"message": "Інклюзивна"
},
"geozoneExcusive": {
"message": "Ексклюзивна"
},
"geozoneMinAlt": {
"message": "Мін. вис. (см):"
},
"geozoneMaxAlt": {
"message": "Макс. вис. (см):"
},
"geozoneInfiniteAlt": {
"message": "0 = висота не обмежена"
},
"geozoneAction": {
"message": "Дія:"
},
"geozoneActionNone": {
"message": "Відсутня"
},
"geozoneActionAvoid": {
"message": "Уникати"
},
"geozoneActionPosHold": {
"message": "Утримувати позицію"
},
"geozoneActionRTH": {
"message": "Повернення додому"
},
"geozoneRadius": {
"message": "Радіус (см):"
},
"geozoneVerices": {
"message": "Вершини:"
},
"": {
"message": ""
},
"featureGEOZONE": {
"message": "Геозона"
},
"geozone": {
"message": "Геозона"
},
"featureGEOZONETip": {
"message": "Віртуальні периметри для географічних зон (також називаються гео-огорожами) з автоматичною активацією дій у разі порушення цих периметрів."
},
"GeozoneSettings": {
"message": "Налаштування геозони"
},
"geozoneDetectionDistance": {
"message": "Відстань виявлення"
},
"geozoneDetectionDistanceHelp": {
"message": "Відстань, з якої виявляється геозона"
},
"geozoneAvoidAltitudeRange": {
"message": "Уникати діапазон висот"
},
"geozoneAvoidAltitudeRangeHelp": {
"message": "Діапазон висот, в межах якого здійснюється спроба обійти геозону зверху"
},
"geozoneSafeAltitudeDistance": {
"message": "Безпечна відстань по висоті"
},
"geozoneSafeAltitudeDistanceHelp": {
"message": "Вертикальна відстань, яку необхідно утримувати до верхньої та нижньої межі зони."
},
"geozoneSafehomeAsInclusive": {
"message": "Безпечна зона повернення інклюзивна"
},
"geozoneSafehomeAsInclusiveHelp": {
"message": "Сприймати найближчу безпечну точку повернення як інклюзивну геозону"
},
"geozoneSafehomeZoneAction": {
"message": "Дія зони безпечного повернення"
},
"geozoneSafehomeZoneActionHelp": {
"message": "Межа дії для зони безпечної точки повернення"
},
"geozoneMrStopDistance": {
"message": "Відстань зупинки мультикоптера"
},
"geozoneMrStopDistanceHelp": {
"message": "Відстань до межі, на якій мультикоптер зупиняється"
},
"geozoneNoWayHomeAction": {
"message": "Дія в разі відсутності можливості повернення додому"
},
"geozoneNoWayHomeActionHelp": {
"message": "Дія, якщо Повернення додому RTH з активними геозонами не може розрахувати маршрут додому: \nRTH: Повернутися додому і ігнорувати всі геозони."
},
"missionGeozoneReboot": {
"message": "Бажаєте зберегти та перезавантажити?"
},
"missionGeozoneAvailableZones": {
"message": "Доступні геозони:"
},
"missionGeozoneAvailableVertices": {
"message": "Доступні вершини:"
},
"geozoneInvalidzone": {
"message": "Виявлено недійсні геозони:"
},
"geozoneInvalidLat": {
"message": "Неприпустима широта"
},
"geozoneInvalidLon": {
"message": "Неприпустима довгота"
},
"gezoneInvalidReasonNotCC": {
"message": "Не проти годинникової стрілки"
},
"gezoneInvalidReasonComplex": {
"message": "Складна"
},
"gezoneInvalidReasonMinMaxAlt": {
"message": "Макс. вис. <= Мін. вис."
},
"geozoneUnableToSave": {
"message": "Неможливо зберегти геозони: недійсні зони"
},
"missionMultiMissionHead": {
"message": "Мультимісії"
},
@ -4743,6 +4936,9 @@
"settings": {
"message": "Налаштування"
},
"decimals": {
"message": "Десяткові знаки"
},
"motorMixer": {
"message": "Мікшер моторів"
},
@ -4897,7 +5093,7 @@
"message": "Цикл ПІД може бути нестабільним, якщо використовуються GPS"
},
"gyroLpfSuggestedMessage": {
"message": "Це рекомендоване налаштування для всіх мультироторів із розміром пропелерів менше 8 дюймів. Завжди перевіряйте температуру мотора після першого польоту"
"message": "Це рекомендоване налаштування для всіх мультикоптерів із розміром пропелерів менше 8 дюймів. Завжди перевіряйте температуру мотора після першого польоту"
},
"gyroLpfNotAdvisedMessage": {
"message": "Рекомендується вибрати вищу частоту зрізу"
@ -5050,7 +5246,7 @@
"message": "Швидкість I2C"
},
"configurationI2cSpeedHelp": {
"message": "Швидкість I2C слід підтримувати на найвищому рівні, який дозволяє всім підключеним пристроям працювати. Значення за замовчуванням 400 кГц є безпечним, і рекомендується перемикати на 800 кГц у випадку з мультироторами."
"message": "Швидкість I2C слід підтримувати на найвищому рівні, який дозволяє всім підключеним пристроям працювати. Значення за замовчуванням 400 кГц є безпечним, і рекомендується перемикати на 800 кГц у випадку з мультикоптерами."
},
"i2cSpeedSuggested800khz": {
"message": "Будь ласка, перемкніть на 800 кГц, якщо підключене апаратне забезпечення це дозволяє"
@ -5479,7 +5675,7 @@
"message": "Чіп пам'яті <br>не знайдено"
},
"sensorDataFlashFreeSpace": {
"message": "Доступна пам'ять"
"message": "Флешпам'ять: <br />вільно "
},
"mixerProfile1": {
"message": "Профіль мікшера 1"
@ -5930,5 +6126,8 @@
},
"adsbHeartbeatTotalMessages": {
"message": "Повід. сигналів перевірки"
},
"currentLanguage": {
"message": "uk"
}
}

6163
locale/zh_CN/messages.json Normal file

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1696,11 +1696,11 @@ dialog {
color: white;
font-size: 10px;
margin-top: 20px;
width: 410px;
width: 100px;
float: right;
margin-right: 10px;
margin-right: 20px;
line-height: 12px;
height: 33px;
height: 64px;
border-radius: 5px;
border: 1px solid #272727;
box-shadow: 0 1px 0 rgba(92, 92, 92, 0.5);
@ -1708,38 +1708,68 @@ dialog {
padding-top: 5px;
display: none;
text-shadow: 0 1px rgba(0, 0, 0, 1.0);
}
@media screen and (max-width: 1060px) {
#dataflash_wrapper_global {
display: none !important;
}
}
/* Profile selector styling*/
#profiles_wrapper_global {
color: white;
font-size: 10px;
margin-top: 20px;
width: 130px;
float: right;
margin-right: 10px;
line-height: 12px;
height: 64px;
padding: 0px;
display: none;
text-shadow: 0 1px rgba(0, 0, 0, 1.0);
}
#profile_change {
color: white;
margin-top: 16px;
margin: 0px;
width: 130px;
float: left;
margin-right: 10px;
line-height: 12px;
}
#profile_change > .dropdown {
margin: 0px;
}
#mixer_profile_change {
color: white;
margin-top: 16px;
margin: 0px;
width: 130px;
float: left;
margin-right: 0;
line-height: 12px;
}
#mixer_profile_change > .dropdown {
margin: 0px;
}
#battery_profile_change {
color: white;
margin-top: 16px;
margin: 0px;
width: 130px;
float: right;
margin-right: 0;
line-height: 12px;
}
#battery_profile_change > .dropdown {
margin: 0px;
}
.dataflash-contents_global {
margin-top: 18px;
margin-top: 30px;
border: 1px solid #4A4A4A;
background-color: #4A4A4A;
display: flex;
@ -1770,7 +1800,7 @@ dialog {
.dataflash-contents_global li div {
position: absolute;
top: -18px;
top: -30px;
margin-top: 0;
left: 0;
right: 0;

View file

@ -464,3 +464,17 @@
.tab-motors .config-section .number input {
margin-right: 4px;
}
.tab-motors .mixerPreview {
position: relative;
}
.tab-motors .motorNumber {
position: absolute;
font-size: 1.4em;
visibility: hidden;
}
.tab-motors .mixer-preview-image-numbers {
width: fit-content;
}

View file

@ -476,6 +476,7 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
$("#motorNumber"+index).css("left", left_px + "px");
$("#motorNumber"+index).css("top", top_px + "px");
$("#motorNumber"+index).removeClass("is-hidden");
$("#motorNumber"+index).css("visibility", "visible");
}
}
}
@ -610,7 +611,6 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
}
}
return (errorCount == 0);
}
@ -661,7 +661,6 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
const path = './resources/motor_order/'
+ currentMixerPreset.image + (isReversed ? "_reverse" : "") + '.svg';
$('.mixerPreview img').attr('src', path);
renderServoOutputImage();
};

View file

@ -152,7 +152,6 @@
<div class="legend"></div>
</li>
</ul><bbr />
<a class="require-msc-ready regular-button onboardLoggingRebootMsc" href="#" i18n="cliMscBtn"></a>
</div>
</div>
</div>

View file

@ -2799,7 +2799,7 @@ OSD.GUI.updateUnits = function() {
});
};
OSD.GUI.updateFields = function() {
OSD.GUI.updateFields = function(event) {
// display fields on/off and position
var $tmpl = $('#osd_group_template').hide();
// Clear previous groups, if any
@ -2840,6 +2840,7 @@ OSD.GUI.updateFields = function() {
});
}
var $displayFields = groupContainer.find('.display-fields');
var osdSearch = $('.osd_search');
for (var jj = 0; jj < groupItems.length; jj++) {
var item = groupItems[jj];
var itemData = OSD.data.items[item.id];
@ -2853,7 +2854,7 @@ OSD.GUI.updateFields = function() {
} else {
name = inflection.titleize(name);
}
var searchTerm = $('.osd_search').val();
var searchTerm = osdSearch.val();
if (searchTerm.length > 0 && !name.toLowerCase().includes(searchTerm.toLowerCase())) {
continue;
}
@ -2949,10 +2950,13 @@ OSD.GUI.updateFields = function() {
// needs to be called after all of them have been set up
GUI.switchery();
if(event != null && event.currentTarget !== osdSearch[0])
{
// Update the OSD preview
refreshOSDSwitchIndicators();
updatePilotAndCraftNames();
updatePanServoPreview();
}
};
OSD.GUI.removeBottomLines = function(){
@ -3367,8 +3371,8 @@ OSD.GUI.updateAll = function() {
clear.off('change');
}
$('.osd_search').on('input', function() {
OSD.GUI.updateFields();
$('.osd_search').on('input', function(event) {
OSD.GUI.updateFields(event);
});
$('.supported').fadeIn();
OSD.GUI.updateVideoMode();

View file

@ -117,7 +117,11 @@
<div class="motors right">
<div class="half">
<div class="mixerPreview">
<img src="./resources/motor_order/custom.svg" />
<img src="./resources/motor_order/custom.svg" id="motor-mixer-preview-img" />
<div class="motorNumber" id="motorNumber1">1</div>
<div class="motorNumber" id="motorNumber2">2</div>
<div class="motorNumber" id="motorNumber3">3</div>
<div class="motorNumber" id="motorNumber4">4</div>
</div>
</div>
<div class="half">

View file

@ -257,6 +257,7 @@ TABS.outputs.initialize = function (callback) {
const path = './resources/motor_order/'
+ mixer.getById(val).image + (isReversed ? "_reverse" : "") + '.svg';
$('.mixerPreview img').attr('src', path);
labelMotorNumbers();
}
function process_servos() {
@ -717,6 +718,38 @@ TABS.outputs.initialize = function (callback) {
GUI.content_ready(callback);
}
function labelMotorNumbers() {
if (mixer.getById(FC.MIXER_CONFIG.appliedMixerPreset).image != 'quad_x') {
return;
}
let index = 0;
var rules = FC.MOTOR_RULES.get();
for (const i in rules) {
if (rules.hasOwnProperty(i)) {
const rule = rules[i];
index++;
let top_px = 30;
let left_px = 28;
if (rule.getRoll() < -0.5) {
left_px = $("#motor-mixer-preview-img").width() - 20;
}
if (rule.getPitch() > 0.5) {
top_px = $("#motor-mixer-preview-img").height() - 20;
}
$("#motorNumber"+index).css("left", left_px + "px");
$("#motorNumber"+index).css("top", top_px + "px");
$("#motorNumber"+index).css("visibility", "visible");
}
}
}
};
TABS.outputs.cleanup = function (callback) {