@@ -8,11 +8,17 @@ import {parseTarget, getFeedback, formatPosForTextField} from './TargetPanelWork
8
8
import TargetFeedback from './TargetFeedback.jsx' ;
9
9
import { InputFieldView } from './InputFieldView.jsx' ;
10
10
import { fieldGroupConnector } from './FieldGroupConnector.jsx' ;
11
+ import { ListBoxInputFieldView } from './ListBoxInputField.jsx' ;
11
12
import FieldGroupUtils , { getFieldGroupState } from '../fieldGroup/FieldGroupUtils.js' ;
12
13
import { dispatchActiveTarget , getActiveTarget } from '../core/AppDataCntlr.js' ;
13
14
import { isValidPoint , parseWorldPt } from '../visualize/Point.js' ;
14
15
15
16
17
+ const TARGET = 'targetSource' ;
18
+ const RESOLVER = 'resolverSource' ;
19
+
20
+ const nedThenSimbad = 'nedthensimbad' ;
21
+ const simbadThenNed = 'simbadthenned' ;
16
22
17
23
class TargetPanelView extends Component {
18
24
@@ -22,12 +28,12 @@ class TargetPanelView extends Component {
22
28
}
23
29
24
30
render ( ) {
25
- const { showHelp, feedback, valid, message, onChange, value, labelWidth, children} = this . props ;
31
+ const { showHelp, feedback, valid, message, onChange, value, labelWidth, children, resolver } = this . props ;
26
32
var positionField = ( < InputFieldView
27
33
valid = { valid }
28
34
visible = { true }
29
35
message = { message }
30
- onChange = { onChange }
36
+ onChange = { ( ev ) => onChange ( ev . target . value , TARGET ) }
31
37
label = 'Name or Position:'
32
38
value = { value }
33
39
tooltip = 'Enter a target'
@@ -37,7 +43,20 @@ class TargetPanelView extends Component {
37
43
38
44
return (
39
45
< div >
40
- { positionField }
46
+ < div style = { { display : 'flex' } } >
47
+ { positionField }
48
+ < ListBoxInputFieldView
49
+ options = { [ { label : 'Try NED then Simbad' , value : nedThenSimbad } ,
50
+ { label : 'Try Simbad then NED' , value : simbadThenNed }
51
+ ] }
52
+ value = { resolver }
53
+ onChange = { ( ev ) => onChange ( ev . target . value , RESOLVER ) }
54
+ multiple = { false }
55
+ label = ''
56
+ labelWidth = { 3 }
57
+ wrapperStyle = { { } }
58
+ />
59
+ </ div >
41
60
< TargetFeedback showHelp = { showHelp } feedback = { feedback } />
42
61
</ div >
43
62
) ;
@@ -49,6 +68,7 @@ TargetPanelView.propTypes = {
49
68
valid : PropTypes . bool . isRequired ,
50
69
showHelp : PropTypes . bool . isRequired ,
51
70
feedback : PropTypes . string . isRequired ,
71
+ resolver : PropTypes . string . isRequired ,
52
72
message : PropTypes . string . isRequired ,
53
73
onChange : PropTypes . func . isRequired ,
54
74
value : PropTypes . string . isRequired ,
@@ -74,6 +94,7 @@ function getProps(params, fireValueChange) {
74
94
75
95
var feedback = params . feedback || '' ;
76
96
var value = params . displayValue ;
97
+ var resolver = params . resolver || nedThenSimbad ;
77
98
var showHelp = get ( params , 'showHelp' , true ) ;
78
99
const wpStr = params . value ;
79
100
const wp = parseWorldPt ( wpStr ) ;
@@ -87,11 +108,12 @@ function getProps(params, fireValueChange) {
87
108
return Object . assign ( { } , params ,
88
109
{
89
110
visible : true ,
90
- onChange : ( ev ) => handleOnChange ( ev , params , fireValueChange ) ,
111
+ onChange : ( value , source ) => handleOnChange ( value , source , params , fireValueChange ) ,
91
112
label : 'Name or Position:' ,
92
113
tooltip : 'Enter a target' ,
93
114
value,
94
115
feedback,
116
+ resolver,
95
117
showHelp,
96
118
onUnmountCB : didUnmount
97
119
} ) ;
@@ -100,21 +122,36 @@ function getProps(params, fireValueChange) {
100
122
101
123
102
124
103
- function handleOnChange ( ev , params , fireValueChange ) {
104
- var displayValue = ev . target . value ;
125
+ function handleOnChange ( value , source , params , fireValueChange ) {
126
+ console . log ( { value, source } ) ;
105
127
var { parseResults= { } } = params ;
106
128
129
+ var displayValue ;
130
+ var resolver ;
131
+
132
+ if ( source === TARGET ) {
133
+ resolver = params . resolver || nedThenSimbad ;
134
+ displayValue = value ;
135
+ }
136
+ else if ( source === RESOLVER ) {
137
+ resolver = value ;
138
+ displayValue = params . displayValue || '' ;
139
+ }
140
+ else {
141
+ console . error ( 'should never be here' ) ;
142
+ }
107
143
108
- parseResults = parseTarget ( displayValue , parseResults ) ;
144
+ parseResults = parseTarget ( displayValue , parseResults , resolver ) ;
109
145
var { resolvePromise} = parseResults ;
110
146
111
147
const targetResolve = ( asyncParseResults ) => {
112
- return asyncParseResults ? makePayloadAndUpdateActive ( displayValue , asyncParseResults ) : null ;
148
+ return asyncParseResults ? makePayloadAndUpdateActive ( displayValue , asyncParseResults , null , resolver ) : null ;
113
149
} ;
114
150
115
151
resolvePromise = resolvePromise ? resolvePromise . then ( targetResolve ) : null ;
116
152
117
- fireValueChange ( makePayloadAndUpdateActive ( displayValue , parseResults , resolvePromise ) ) ;
153
+ fireValueChange ( makePayloadAndUpdateActive ( displayValue , parseResults , resolvePromise , resolver ) ) ;
154
+
118
155
}
119
156
120
157
/**
@@ -125,11 +162,11 @@ function handleOnChange(ev, params, fireValueChange) {
125
162
* @param resolvePromise
126
163
* @return {{message: string, displayValue: *, wpt: (*|null), value: null, valid: *, showHelp: (*|boolean), feedback: (string|*|string), parseResults: *} }
127
164
*/
128
- function makePayloadAndUpdateActive ( displayValue , parseResults , resolvePromise ) {
165
+ function makePayloadAndUpdateActive ( displayValue , parseResults , resolvePromise , resolver ) {
129
166
const { wpt} = parseResults ;
130
167
const wpStr = parseResults && wpt ? wpt . toString ( ) : null ;
131
168
132
- return {
169
+ const payload = {
133
170
message : 'Could not resolve object: Enter valid object' ,
134
171
displayValue,
135
172
wpt,
@@ -139,6 +176,8 @@ function makePayloadAndUpdateActive(displayValue, parseResults, resolvePromise)
139
176
feedback : parseResults . feedback ,
140
177
parseResults
141
178
} ;
179
+ if ( resolver ) payload . resolver = resolver ;
180
+ return payload ;
142
181
}
143
182
144
183
const connectorDefaultProps = {
0 commit comments