@@ -8,6 +8,12 @@ import { gui_log } from "../gui_log";
8
8
import $ from "jquery" ;
9
9
10
10
const servos = { } ;
11
+
12
+ // Add clamp function to Number prototype
13
+ Number . prototype . clamp = function ( min , max ) {
14
+ return Math . min ( Math . max ( this , min ) , max ) ;
15
+ } ;
16
+
11
17
servos . initialize = function ( callback ) {
12
18
if ( GUI . active_tab !== "servos" ) {
13
19
GUI . active_tab = "servos" ;
@@ -42,20 +48,22 @@ servos.initialize = function (callback) {
42
48
43
49
$ ( ".tab-servos" ) . addClass ( "supported" ) ;
44
50
45
- let servoCheckbox = "" ;
51
+ // setup header
46
52
let servoHeader = "" ;
47
53
for ( let i = 0 ; i < FC . RC . active_channels - 4 ; i ++ ) {
48
54
servoHeader += `<th>A${ i + 1 } </th>` ;
49
55
}
56
+
50
57
servoHeader += '<th style="width: 110px" i18n="servosRateAndDirection"></th>' ;
51
- servoHeader += '<th style="width: 110px" i18n="servosReverse"></th>' ;
52
58
59
+ $ ( "div.tab-servos table.fields tr.main" ) . append ( servoHeader ) ;
60
+
61
+ // setup checkboxes
62
+ let servoCheckbox = "" ;
53
63
for ( let i = 0 ; i < FC . RC . active_channels ; i ++ ) {
54
- servoCheckbox += `<td class="channel"><input type="checkbox"/></td>` ;
64
+ servoCheckbox += `<td class="channel" id="channel ${ i } " ><input type="checkbox"/></td>` ;
55
65
}
56
66
57
- $ ( "div.tab-servos table.fields tr.main" ) . append ( servoHeader ) ;
58
-
59
67
/*
60
68
* function: void process_servos(string, object)
61
69
*/
@@ -69,8 +77,7 @@ servos.initialize = function (callback) {
69
77
element += `<td class="min">${ subElement } ${ FC . SERVO_CONFIG [ obj ] . min } " /></td>` ;
70
78
element += `<td class="middle">${ subElement } ${ FC . SERVO_CONFIG [ obj ] . middle } " /></td>` ;
71
79
element += `<td class="max">${ subElement } ${ FC . SERVO_CONFIG [ obj ] . max } " /></td>` ;
72
- element += `${ servoCheckbox } <td class="direction"></td>` ;
73
- element += `<td class="reverse"></td></tr>` ;
80
+ element += `${ servoCheckbox } <td class="direction"></td></tr>` ;
74
81
75
82
$ ( "div.tab-servos table.fields" ) . append ( element ) ;
76
83
@@ -95,17 +102,18 @@ servos.initialize = function (callback) {
95
102
96
103
$ ( "div.tab-servos table.fields tr:last" ) . data ( "info" , { obj : obj } ) ;
97
104
98
- // adding select box for servo reverse
99
- $ ( "div.tab-servos table.fields tr:last td.reverse" ) . append (
100
- '<select class="reverse" name="reverse"></select>' ,
101
- ) ;
102
-
103
- const reverse = $ ( "div.tab-servos table.fields tr:last td.reverse select" ) ;
104
-
105
- reverse . append ( `<option value="0">${ i18n . getMessage ( "servosNormal" ) } </option>` ) ;
106
- reverse . append ( `<option value="1">${ i18n . getMessage ( "servosReverse" ) } </option>` ) ;
107
-
108
- reverse . val ( FC . SERVO_CONFIG [ obj ] . reversedInputSources ) ;
105
+ // check if input sources are reversed
106
+ for ( let i = 0 ; i < FC . SERVO_RULES . length ; i ++ ) {
107
+ const inputSource = FC . SERVO_RULES [ i ] . inputSource ;
108
+ const reversed = FC . SERVO_CONFIG [ obj ] . reversedInputSources & ( 1 << inputSource ) ;
109
+ if ( reversed ) {
110
+ FC . SERVO_CONFIG [ obj ] . reversedInputSources |= 1 << inputSource ;
111
+ const inputSourceElement = $ ( `#channel${ inputSource } ` ) . find ( "input" ) ;
112
+ if ( inputSourceElement ) {
113
+ inputSourceElement . prop ( "checked" , true ) . parent ( ) . css ( "background-color" , "red" ) ;
114
+ }
115
+ }
116
+ }
109
117
110
118
// UI hooks
111
119
@@ -138,7 +146,6 @@ servos.initialize = function (callback) {
138
146
FC . SERVO_CONFIG [ info . obj ] . max = parseInt ( $ ( ".max input" , this ) . val ( ) ) ;
139
147
140
148
FC . SERVO_CONFIG [ info . obj ] . rate = parseInt ( $ ( ".direction select" , this ) . val ( ) ) ;
141
- FC . SERVO_CONFIG [ info . obj ] . reversedInputSources = parseInt ( $ ( ".reverse select" , this ) . val ( ) ) ;
142
149
} ) ;
143
150
144
151
//
0 commit comments