@@ -46,6 +46,8 @@ const categoryTable = [
4646 { name : 'VTX' , buildKey : [ 'vtx' ] , modes : [ 'STICK COMMANDS DISABLE' , 'VTX CONTROL DISABLE' , 'VTX PIT MODE' ] } ,
4747] ;
4848
49+ let notSorted = true ;
50+ let hideUnusedModes = false ;
4951let modeList = [ ] ;
5052
5153function inBuildMap ( map , name ) {
@@ -65,8 +67,8 @@ function inBuildMap(map, name) {
6567}
6668
6769function isSelectedMode ( mList , modeName ) {
68- for ( let value of mList ) {
69- if ( value . includes ( modeName ) ) {
70+ for ( let i = 0 ; i < mList . length ; i ++ ) { // for (let value of mList) don't break on first hit
71+ if ( mList [ i ] . includes ( modeName ) ) {
7072 return true ;
7173 }
7274 }
@@ -91,6 +93,7 @@ function updateSearchResults() {
9193 const categoryNameList = categorySelect . multipleSelect ( "getSelects" , "text" ) ;
9294 setConfig ( { auxiliaryCategoryNameList : categoryNameList } ) ; // save as users choise
9395 modeList = resolveCategoryName ( categoryTable , categoryNameList ) ;
96+ updateModes ( ) ; // update UI
9497}
9598
9699function getCategoryNames ( table , buildKey ) {
@@ -144,16 +147,83 @@ function createCategorySelect(table, map) {
144147 ellipsis : true ,
145148 openOnHover : true , // open when muse over
146149 placeholder : i18n . getMessage ( "dropDownFilterDisabled" ) ,
150+ onClear : ( ) => { updateSearchResults ( ) ; } ,
147151 onClick : ( ) => { updateSearchResults ( ) ; } ,
152+ onFilter : ( ) => { updateSearchResults ( ) ; } ,
148153 onCheckAll : ( ) => { updateSearchResults ( ) ; } ,
149154 onUncheckAll : ( ) => { updateSearchResults ( ) ; } ,
150155 formatSelectAll ( ) { return i18n . getMessage ( "dropDownSelectAll" ) ; } ,
151156 formatAllSelected ( ) { return i18n . getMessage ( "dropDownAll" ) ; } ,
152157 } ) ;
153158}
159+ function updateModes ( ) {
160+ let hasUsedMode = false ;
161+
162+ for ( let i = 0 ; i < FC . AUX_CONFIG . length ; i ++ ) {
163+ let modeElement = $ ( `#mode-${ i } ` ) ;
164+
165+ if ( modeElement . find ( ' .range' ) . length == 0 && modeElement . find ( ' .link' ) . length == 0 ) {
166+ // if the mode is unused, skip it
167+ modeElement . removeClass ( 'off' ) . removeClass ( 'on' ) . removeClass ( 'disabled' ) ;
168+ continue ;
169+ }
170+
171+ if ( bit_check ( FC . CONFIG . mode , i ) ) {
172+ $ ( '.mode .name' ) . eq ( i ) . data ( 'modeElement' ) . addClass ( 'on' ) . removeClass ( 'off' ) . removeClass ( 'disabled' ) ;
173+
174+ // ARM mode is a special case
175+ if ( i == 0 ) {
176+ $ ( '.mode .name' ) . eq ( i ) . html ( FC . AUX_CONFIG [ i ] ) ;
177+ }
178+ } else {
179+
180+ // ARM mode is a special case
181+ if ( i == 0 ) {
182+ let armSwitchActive = false ;
183+
184+ if ( FC . CONFIG . armingDisableCount > 0 ) {
185+ // check the highest bit of the armingDisableFlags. This will be the ARMING_DISABLED_ARMSWITCH flag.
186+ const armSwitchMask = 1 << ( FC . CONFIG . armingDisableCount - 1 ) ;
187+ if ( ( FC . CONFIG . armingDisableFlags & armSwitchMask ) > 0 ) {
188+ armSwitchActive = true ;
189+ }
190+ }
191+
192+ // If the ARMING_DISABLED_ARMSWITCH flag is set then that means that arming is disabled
193+ // and the arm switch is in a valid arming range. Highlight the mode in red to indicate
194+ // that arming is disabled.
195+ if ( armSwitchActive ) {
196+ $ ( '.mode .name' ) . eq ( i ) . data ( 'modeElement' ) . removeClass ( 'on' ) . removeClass ( 'off' ) . addClass ( 'disabled' ) ;
197+ $ ( '.mode .name' ) . eq ( i ) . html ( `${ FC . AUX_CONFIG [ i ] } <br>${ i18n . getMessage ( 'auxiliaryDisabled' ) } ` ) ;
198+ } else {
199+ $ ( '.mode .name' ) . eq ( i ) . data ( 'modeElement' ) . removeClass ( 'on' ) . removeClass ( 'disabled' ) . addClass ( 'off' ) ;
200+ $ ( '.mode .name' ) . eq ( i ) . html ( FC . AUX_CONFIG [ i ] ) ;
201+ }
202+ } else {
203+ $ ( '.mode .name' ) . eq ( i ) . data ( 'modeElement' ) . removeClass ( 'on' ) . removeClass ( 'disabled' ) . addClass ( 'off' ) ;
204+ }
205+ }
206+ hasUsedMode = true ;
207+ }
208+
209+ let hideUnused = hideUnusedModes && hasUsedMode ;
210+
211+ for ( let i = 1 ; i < FC . AUX_CONFIG . length ; i ++ ) { // ARM has index 0
212+ let modeElement = $ ( `#mode-${ i } ` ) ;
213+
214+ if ( ! isSelectedMode ( modeList , FC . AUX_CONFIG [ i ] ) ) {
215+ modeElement . toggle ( false ) ;
216+ }
217+ else {
218+ modeElement . toggle ( true ) ;
219+ if ( modeElement . find ( ' .range' ) . length == 0 && modeElement . find ( ' .link' ) . length == 0 ) {
220+ modeElement . toggle ( ! hideUnused ) ; // unused mode
221+ }
222+ }
223+ }
224+ }
154225
155226auxiliary . initialize = function ( callback ) {
156- GUI . active_tab_ref = this ;
157227 GUI . active_tab = 'auxiliary' ;
158228 let prevChannelsValues = null ;
159229
@@ -412,9 +482,9 @@ auxiliary.initialize = function (callback) {
412482
413483 const modeTableBodyElement = $ ( '.tab-auxiliary .modes' ) ;
414484 for ( let modeIndex = 0 ; modeIndex < FC . AUX_CONFIG . length ; modeIndex ++ ) {
415-
416485 const modeId = FC . AUX_CONFIG_IDS [ modeIndex ] ;
417486 const newMode = createMode ( modeIndex , modeId ) ;
487+
418488 modeTableBodyElement . append ( newMode ) ;
419489
420490 // generate ranges from the supplied AUX names and MODE_RANGES[_EXTRA] data
@@ -578,69 +648,7 @@ auxiliary.initialize = function (callback) {
578648 }
579649
580650 function update_ui ( ) {
581- let hasUsedMode = false ;
582- for ( let i = 0 ; i < FC . AUX_CONFIG . length ; i ++ ) {
583- let modeElement = $ ( `#mode-${ i } ` ) ;
584- if ( modeElement . find ( ' .range' ) . length == 0 && modeElement . find ( ' .link' ) . length == 0 ) {
585- // if the mode is unused, skip it
586- modeElement . removeClass ( 'off' ) . removeClass ( 'on' ) . removeClass ( 'disabled' ) ;
587- continue ;
588- }
589-
590- if ( bit_check ( FC . CONFIG . mode , i ) ) {
591- $ ( '.mode .name' ) . eq ( i ) . data ( 'modeElement' ) . addClass ( 'on' ) . removeClass ( 'off' ) . removeClass ( 'disabled' ) ;
592-
593- // ARM mode is a special case
594- if ( i == 0 ) {
595- $ ( '.mode .name' ) . eq ( i ) . html ( FC . AUX_CONFIG [ i ] ) ;
596- }
597- } else {
598-
599- // ARM mode is a special case
600- if ( i == 0 ) {
601- let armSwitchActive = false ;
602-
603- if ( FC . CONFIG . armingDisableCount > 0 ) {
604- // check the highest bit of the armingDisableFlags. This will be the ARMING_DISABLED_ARMSWITCH flag.
605- const armSwitchMask = 1 << ( FC . CONFIG . armingDisableCount - 1 ) ;
606- if ( ( FC . CONFIG . armingDisableFlags & armSwitchMask ) > 0 ) {
607- armSwitchActive = true ;
608- }
609- }
610-
611- // If the ARMING_DISABLED_ARMSWITCH flag is set then that means that arming is disabled
612- // and the arm switch is in a valid arming range. Highlight the mode in red to indicate
613- // that arming is disabled.
614- if ( armSwitchActive ) {
615- $ ( '.mode .name' ) . eq ( i ) . data ( 'modeElement' ) . removeClass ( 'on' ) . removeClass ( 'off' ) . addClass ( 'disabled' ) ;
616- $ ( '.mode .name' ) . eq ( i ) . html ( `${ FC . AUX_CONFIG [ i ] } <br>${ i18n . getMessage ( 'auxiliaryDisabled' ) } ` ) ;
617- } else {
618- $ ( '.mode .name' ) . eq ( i ) . data ( 'modeElement' ) . removeClass ( 'on' ) . removeClass ( 'disabled' ) . addClass ( 'off' ) ;
619- $ ( '.mode .name' ) . eq ( i ) . html ( FC . AUX_CONFIG [ i ] ) ;
620- }
621- } else {
622- $ ( '.mode .name' ) . eq ( i ) . data ( 'modeElement' ) . removeClass ( 'on' ) . removeClass ( 'disabled' ) . addClass ( 'off' ) ;
623- }
624- }
625- hasUsedMode = true ;
626- }
627-
628- // setup categoryList to reflect changes when aux change
629- updateSearchResults ( ) ;
630-
631- let hideUnused = hideUnusedModes && hasUsedMode ;
632-
633- for ( let i = 1 ; i < FC . AUX_CONFIG . length ; i ++ ) { // ARM has index 0
634- let modeElement = $ ( `#mode-${ i } ` ) ;
635-
636- if ( ! isSelectedMode ( modeList , FC . AUX_CONFIG [ i ] ) ) {
637- modeElement . toggle ( false ) ;
638- }
639- else if ( modeElement . find ( ' .range' ) . length == 0 && modeElement . find ( ' .link' ) . length == 0 ) {
640- // unused mode
641- modeElement . toggle ( ! hideUnused ) ;
642- }
643- }
651+ updateSearchResults ( ) ; // setup categoryList and show selected Modes
644652
645653 auto_select_channel ( FC . RC . channels , FC . RC . active_channels , FC . RSSI_CONFIG . channel ) ;
646654
@@ -691,22 +699,15 @@ auxiliary.initialize = function (callback) {
691699 return fillPrevChannelsValues ( ) ;
692700 }
693701
694- let hideUnusedModes = false ;
695-
696702 // get or save hide unused modes
697703 const configUnusedModes = getConfig ( 'hideUnusedModes' ) ;
698- $ ( "input#switch-toggle-unused" )
699- . change ( function ( ) {
700- hideUnusedModes = $ ( this ) . prop ( "checked" ) ;
701- setConfig ( { hideUnusedModes : hideUnusedModes } ) ;
702- update_ui ( ) ;
703- } )
704+ $ ( "input#switch-toggle-unused" ) . change ( function ( ) {
705+ hideUnusedModes = $ ( this ) . prop ( "checked" ) ;
706+ setConfig ( { hideUnusedModes : hideUnusedModes } ) ;
707+ update_ui ( ) ; } )
704708 . prop ( "checked" , ! ! configUnusedModes . hideUnusedModes )
705709 . change ( ) ;
706710
707- // setup categoryList
708- updateSearchResults ( ) ;
709-
710711 // update ui instantly on first load
711712 update_ui ( ) ;
712713
0 commit comments