Skip to content

Commit 4ed68a0

Browse files
committed
Refactor left panel
1 parent 2601582 commit 4ed68a0

File tree

5 files changed

+279
-247
lines changed

5 files changed

+279
-247
lines changed

locales/en/messages.json

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3779,25 +3779,37 @@
37793779
"message": "Gyro Lowpass Filters"
37803780
},
37813781
"pidTuningGyroLowpassFrequency": {
3782-
"message": "Gyro Lowpass 1 Static Cutoff Frequency [Hz]"
3782+
"message": "Cutoff Frequency [Hz]"
3783+
},
3784+
"pidTuningGyroLowpass": {
3785+
"message": "Gyro Static Lowpass 1 Filter"
3786+
},
3787+
"pidTuningGyroLowpassDyn": {
3788+
"message": "Gyro Dynamic Lowpass 1 Filter"
3789+
},
3790+
"pidTuningGyroLowpassMode": {
3791+
"message": "Mode"
37833792
},
37843793
"pidTuningGyroLowpassType": {
37853794
"message": "Gyro Lowpass 1 Filter Type"
37863795
},
37873796
"pidTuningGyroLowpassDynMinFrequency": {
3788-
"message": "Gyro Lowpass 1 Dynamic Min Cutoff Frequency [Hz]"
3797+
"message": "Min Cutoff Frequency [Hz]"
37893798
},
37903799
"pidTuningGyroLowpassDynMaxFrequency": {
3791-
"message": "Gyro Lowpass 1 Dynamic Max Cutoff Frequency [Hz]"
3800+
"message": "Max Cutoff Frequency [Hz]"
37923801
},
37933802
"pidTuningGyroLowpassDynType": {
3794-
"message": "Gyro Lowpass 1 Dynamic Filter Type"
3803+
"message": "Filter Type"
3804+
},
3805+
"pidTuningGyroLowpass2": {
3806+
"message": "Gyro Lowpass 2"
37953807
},
37963808
"pidTuningGyroLowpass2Frequency": {
3797-
"message": "Gyro Lowpass 2 Static Cutoff Frequency [Hz]"
3809+
"message": "Cutoff Frequency [Hz]"
37983810
},
37993811
"pidTuningGyroLowpass2Type": {
3800-
"message": "Gyro Lowpass 2 Filter Type"
3812+
"message": "Filter Type"
38013813
},
38023814
"pidTuningGyroLowpassFilterHelp": {
38033815
"message": "Gyro lowpass filters attenuate higher frequency noise to keep it out of the PID loop. There are two independently configurable gyro filters; by default both are active.<br /><br />The first D lowpass can be static (fixed cutoff) or dynamic; the second D lowpass is always static. When a lowpass is in dynamic mode, filter will be stronger at low throttle, and the cutoff will go higher (less filtering) as throttle increases.<br /><br />Without RPM filtering, both PT1 filters should be enabled at default (or stronger) cutoffs, with lowpass 1 in dynamic mode.<br /><br />With RPM filtering, the gyro filter slider can often be moved some way to the right. On clean quads it can go all the way right, or alternatively a single static gyro lowpass filter at 500hz may be sufficient.<br /><br />A quad will have less propwash with the least gyro filter delay (sliders to the right, higher cutoff values).<br /><br />Always check for motor heat when shifting to less gyro filtering (sliders to the right). With minimal gyro filtering, it is essential to have enough D filtering! Take care!"
@@ -3808,6 +3820,12 @@
38083820
"pidTuningGyroNotchFiltersGroup": {
38093821
"message": "Gyro Notch Filters"
38103822
},
3823+
"pidTuningGyroNotchFilter": {
3824+
"message": "Gyro Notch Filter 1"
3825+
},
3826+
"pidTuningGyroNotchFilter2": {
3827+
"message": "Gyro Notch Filter 2"
3828+
},
38113829
"pidTuningGyroNotch1Frequency": {
38123830
"message": "Gyro Notch Filter 1 Center Frequency [Hz]"
38133831
},
@@ -3898,6 +3916,12 @@
38983916
"pidTuningFilterSettings": {
38993917
"message": "Profile dependent Filter Settings"
39003918
},
3919+
"pidTuningLowPassStatic": {
3920+
"message": "STATIC"
3921+
},
3922+
"pidTuningLowPassDynamic": {
3923+
"message": "DYN"
3924+
},
39013925
"pidTuningDTermLowpassFiltersGroup": {
39023926
"message": "D Term Lowpass Filters"
39033927
},

src/css/tabs/pid_tuning.css

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -909,10 +909,6 @@
909909
table-layout: auto;
910910
}
911911

912-
.tab-pid_tuning table.filterTable td:first-child {
913-
width: 25%;
914-
}
915-
916912
@media only screen and (max-width: 1205px) {
917913

918914
.tab-pid_tuning .subtab-pid .spacer_left {

src/js/TuningSliders.js

Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -445,55 +445,67 @@ TuningSliders.updateFilterSlidersDisplay = function() {
445445
this.GyroSliderUnavailable = !FC.TUNING_SLIDERS.slider_gyro_filter;
446446
this.DTermSliderUnavailable = !FC.TUNING_SLIDERS.slider_dterm_filter;
447447

448-
const lp1Changed = parseInt($('.pid_filter input[name="gyroLowpassDynMinFrequency"]').val()) !==
448+
const lp1DynamicMinChanged = parseInt($('.pid_filter input[name="gyroLowpassDynMinFrequency"]').val()) !==
449449
Math.floor(this.FILTER_DEFAULT.gyro_lowpass_dyn_min_hz * this.sliderGyroFilterMultiplier);
450-
const lp1StaticChanged = parseInt($('.pid_filter input[name="gyroLowpassFrequency"]').val()) !==
450+
const lp1DynamicMaxChanged = parseInt($('.pid_filter input[name="gyroLowpassDynMaxFrequency"]').val()) !==
451+
Math.floor(this.FILTER_DEFAULT.gyro_lowpass_dyn_max_hz * this.sliderGyroFilterMultiplier);
452+
const lp1Changed = parseInt($('.pid_filter input[name="gyroLowpassFrequency"]').val()) !==
451453
Math.floor(this.FILTER_DEFAULT.gyro_lowpass_hz * this.sliderGyroFilterMultiplier);
452454
const lp2Changed = parseInt($('.pid_filter input[name="gyroLowpass2Frequency"]').val()) !==
453455
Math.floor(this.FILTER_DEFAULT.gyro_lowpass2_hz * this.sliderGyroFilterMultiplier);
454-
const lp1Enabled = parseInt($('.pid_filter input[name="gyroLowpassDynMinFrequency"]').val());
455-
const lp1StaticEnabled = parseInt($('.pid_filter input[name="gyroLowpassFrequency"]').val());
456-
const lp2Enabled = parseInt($('.pid_filter input[name="gyroLowpass2Frequency"]').val());
457456

458-
const lpDynMaxChanged = parseInt($('.pid_filter input[name="gyroLowpassDynMaxFrequency"]').val()) !==
459-
Math.floor(this.FILTER_DEFAULT.gyro_lowpass_dyn_max_hz * this.sliderGyroFilterMultiplier);
460-
const lpfDynTypeChanged = parseInt($('.pid_filter select[name="gyroLowpassDynType"]').val()) !== this.FILTER_DEFAULT.gyro_lowpass_type;
461-
const lp2TypeChanged = parseInt($('.pid_filter select[name="gyroLowpass2Type"]').val()) !== this.FILTER_DEFAULT.gyro_lowpass2_type;
457+
const lp1DynamicEnabled = (parseInt($('.pid_filter input[name="gyroLowpassDynMinFrequency"]').val()) > 0 &&
458+
parseInt($('.pid_filter input[name="gyroLowpassDynMaxFrequency"]').val()) > 0);
459+
const lp1Enabled = parseInt($('.pid_filter input[name="gyroLowpassFrequency"]').val()) > 0;
460+
const lp2Enabled = parseInt($('.pid_filter input[name="gyroLowpass2Frequency"]').val()) > 0;
462461

463-
const lpxChanged = lp1Changed && lp1StaticChanged && lp2Changed;
464-
const lpxDisabled = !(lp1Enabled || lp1StaticEnabled || lp2Enabled);
462+
// const lpxChanged = (lp1DynamicEnabled && (lp1DynamicMinChanged || lp1DynamicMaxChanged)) || (lp1Enabled && lp1Changed) || (lp2Enabled && lp2Changed);
463+
// const lpxDisabled = !lp1DynamicEnabled && !lp1Enabled && !lp2Enabled;
464+
// const lpxOffOrChanged = lpxChanged || lpxDisabled;
465465

466-
const lpxOffAndChanged = lpxChanged && lpxDisabled;
466+
// console.log('Gyro lp changed:', lp1DynamicMinChanged, lp1Changed, lp2Changed);
467+
// console.log('Gyro lp disabled:', lp1DynamicEnabled, lp1Enabled, lp2Enabled);
468+
// console.log('lpxChanged, lpxDisabled, lpxOffOrChanged:', lpxChanged, lpxDisabled, lpxOffOrChanged);
467469

468-
if ((lp1Changed || lp1StaticChanged || lpDynMaxChanged || lpfDynTypeChanged || lp2Changed || lp2TypeChanged) && lpxOffAndChanged) {
470+
const lpxChanged = (lp1DynamicMinChanged || lp1DynamicMaxChanged) && lp1Changed && lp2Changed;
471+
const lpxDisabled = !(lp1DynamicEnabled || lp1Enabled || lp2Enabled);
472+
const lpxOffOrChanged = lpxChanged || lpxDisabled;
473+
474+
if (lpxOffOrChanged) {
469475
this.GyroSliderUnavailable = true;
470476
this.sliderGyroFilter = 0;
471477
} else {
472478
this.cachedGyroSliderValues = true;
473479
this.sliderGyroFilter = 1;
474480
}
475481

476-
const dlp1Changed = parseInt($('.pid_filter input[name="dtermLowpassDynMinFrequency"]').val()) !==
482+
const dlp1DynamicMinChanged = parseInt($('.pid_filter input[name="dtermLowpassDynMinFrequency"]').val()) !==
477483
Math.floor(this.FILTER_DEFAULT.dterm_lowpass_dyn_min_hz * this.sliderDTermFilterMultiplier);
484+
const dlp1DynamicMaxChanged = parseInt($('.pid_filter input[name="dtermLowpassDynMaxFrequency"]').val()) !==
485+
Math.floor(this.FILTER_DEFAULT.dterm_lowpass_dyn_max_hz * this.sliderGyroFilterMultiplier);
478486
const dlp1StaticChanged = parseInt($('.pid_filter input[name="dtermLowpassFrequency"]').val()) !==
479487
Math.floor(this.FILTER_DEFAULT.dterm_lowpass_hz * this.sliderDTermFilterMultiplier);
480488
const dlp2Changed = parseInt($('.pid_filter input[name="dtermLowpass2Frequency"]').val()) !==
481489
Math.floor(this.FILTER_DEFAULT.dterm_lowpass2_hz * this.sliderDTermFilterMultiplier);
482490

483-
const dlp1Enabled = parseInt($('.pid_filter input[name="dtermLowpassDynMinFrequency"]').val());
484-
const dlp1StaticEnabled = parseInt($('.pid_filter input[name="dtermLowpassFrequency"]').val());
485-
const dlp2Enabled = parseInt($('.pid_filter input[name="dtermLowpass2Frequency"]').val());
491+
const dlp1DynamicEnabled = (parseInt($('.pid_filter input[name="dtermLowpassDynMinFrequency"]').val()) > 0 &&
492+
parseInt($('.pid_filter input[name="dtermLowpassDynMaxFrequency"]').val()) > 0);
493+
const dlp1StaticEnabled = parseInt($('.pid_filter input[name="dtermLowpassFrequency"]').val()) > 0;
494+
const dlp2Enabled = parseInt($('.pid_filter input[name="dtermLowpass2Frequency"]').val()) > 0;
486495

487-
const dlpDynMaxChanged = Math.abs(parseInt($('.pid_filter input[name="dtermLowpassDynMaxFrequency"]').val()) -
496+
const dlpDynamicMaxEnabled = Math.abs(parseInt($('.pid_filter input[name="dtermLowpassDynMaxFrequency"]').val()) -
488497
this.FILTER_DEFAULT.dterm_lowpass_dyn_max_hz * this.sliderDTermFilterMultiplier) > 1;
489498
const dlpDynTypeChanged = parseInt($('.pid_filter select[name="dtermLowpassDynType"]').val()) !== this.FILTER_DEFAULT.dterm_lowpass_type;
490499
const dlp2TypeChanged = parseInt($('.pid_filter select[name="dtermLowpass2Type"]').val()) !== this.FILTER_DEFAULT.dterm_lowpass2_type;
491500

492-
const dlpxChanged = dlp1Changed && dlp1StaticChanged && dlp2Changed;
493-
const dlpxDisabled = !(dlp1Enabled || dlp1StaticEnabled || dlp2Enabled);
494-
const dlpxOffAndChanged = dlpxChanged && dlpxDisabled;
501+
const dlpxChanged = (dlp1DynamicMinChanged || dlp1DynamicMaxChanged) && dlp1StaticChanged && dlp2Changed;
502+
const dlpxDisabled = !(dlp1DynamicEnabled || dlp1StaticEnabled || dlp2Enabled);
503+
const dlpxOffOrChanged = dlpxChanged || dlpxDisabled;
504+
505+
// console.log('DTerm booleans:', dlp1DynamicMinChanged, dlp1StaticChanged, dlpDynamicMaxEnabled, dlpDynTypeChanged, dlp2Changed, dlp2TypeChanged, dlpxOffOrChanged, dlpxDisabled);
506+
// if ((dlp1DynamicMinChanged || dlp1StaticChanged || dlpDynamicMaxEnabled || dlpDynTypeChanged || dlp2Changed || dlp2TypeChanged) || dlpxOffOrChanged || dlpxDisabled) {
495507

496-
if ((dlp1Changed || dlp1StaticChanged || dlpDynMaxChanged || dlpDynTypeChanged || dlp2Changed || dlp2TypeChanged) && dlpxOffAndChanged) {
508+
if (dlpxOffOrChanged) {
497509
this.DTermSliderUnavailable = true;
498510
this.sliderDTermFilter = 0;
499511
} else {
@@ -518,10 +530,17 @@ TuningSliders.updateFilterSlidersDisplay = function() {
518530

519531
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
520532
$('.subtab-filter .slidersDisabled').hide();
533+
// document.querySelector (JS path from devtools)
534+
// $("#slidersFilterBox > table.sliderLabels > tbody > tr.sliderGyroFilter").toggle(!this.GyroSliderUnavailable);
535+
// $("#slidersFilterBox > table.sliderLabels > tbody > tr.sliderDtermFilter").toggle(!this.DTermSliderUnavailable);
536+
// toggle enable button for gyro or dterm slider
521537
$('.subtab-filter .sliderGyroDisabled').toggle(this.GyroSliderUnavailable);
522538
$('.subtab-filter .sliderDTermDisabled').toggle(this.DTermSliderUnavailable);
523539
} else {
540+
$('.subtab-filter .sliderGyroDisabled').hide();
541+
$('.subtab-filter .sliderDTermDisabled').hide();
524542
$('.tuningFilterSliders').toggle(!(this.GyroSliderUnavailable && this.DTermSliderUnavailable));
543+
$('.subtab-filter .slidersDisabled').toggle(this.GyroSliderUnavailable || this.DTermSliderUnavailable);
525544
}
526545
$('.subtab-filter .nonExpertModeSlidersNote').toggle((!this.GyroSliderUnavailable || !this.DTermSliderUnavailable) && !this.expertMode);
527546
this.updateFilterSlidersWarning(this.GyroSliderUnavailable, this.DTermSliderUnavailable);

0 commit comments

Comments
 (0)