Skip to content

Commit 70f2820

Browse files
authored
Merge pull request #178 from Caltech-IPAC/dm-7610-resolve
DM-7610: Target panel resolve selection now working
2 parents 043a8b8 + 2392390 commit 70f2820

File tree

6 files changed

+63
-57
lines changed

6 files changed

+63
-57
lines changed

src/firefly/js/ui/CatalogSearchMethodType.jsx

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -219,18 +219,7 @@ function renderTargetPanel(groupKey, searchType) {
219219
const visible = searchType === SpatialMethod.Cone.value || searchType === SpatialMethod.Box.value || searchType === SpatialMethod.Elliptical.value;
220220
return (
221221
visible && <div className='intarget'>
222-
<TargetPanel labelWidth={100} groupKey={groupKey}>
223-
<ListBoxInputField
224-
fieldKey='targettry'
225-
options={[{label: 'Try NED then Simbad', value: 'NED'},
226-
{label: 'Try Simbad then NED', value: 'simbad'}
227-
]}
228-
multiple={false}
229-
label=''
230-
labelWidth={3}
231-
wrapperStyle={{display: 'inline-block'}}
232-
/>
233-
</TargetPanel>
222+
<TargetPanel labelWidth={100} groupKey={groupKey}/>
234223
</div>
235224
);
236225

src/firefly/js/ui/TargetFeedback.jsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ var TargetFeedback = React.createClass(
88

99
render() {
1010
var topDivStyle= {
11-
paddingTop: '5px',
11+
paddingTop: 5,
1212
position: 'relative',
13-
height : '50px'
13+
height : 50,
14+
textAlign : 'center'
1415
};
1516
var exDivStyle= {
1617
display : 'inline-block'

src/firefly/js/ui/TargetPanel.jsx

Lines changed: 50 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,17 @@ import {parseTarget, getFeedback, formatPosForTextField} from './TargetPanelWork
88
import TargetFeedback from './TargetFeedback.jsx';
99
import {InputFieldView} from './InputFieldView.jsx';
1010
import {fieldGroupConnector} from './FieldGroupConnector.jsx';
11+
import {ListBoxInputFieldView} from './ListBoxInputField.jsx';
1112
import FieldGroupUtils, {getFieldGroupState} from '../fieldGroup/FieldGroupUtils.js';
1213
import {dispatchActiveTarget, getActiveTarget} from '../core/AppDataCntlr.js';
1314
import {isValidPoint, parseWorldPt} from '../visualize/Point.js';
1415

1516

17+
const TARGET= 'targetSource';
18+
const RESOLVER= 'resolverSource';
19+
20+
const nedThenSimbad= 'nedthensimbad';
21+
const simbadThenNed= 'simbadthenned';
1622

1723
class TargetPanelView extends Component {
1824

@@ -22,12 +28,12 @@ class TargetPanelView extends Component {
2228
}
2329

2430
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;
2632
var positionField = (<InputFieldView
2733
valid={valid}
2834
visible= {true}
2935
message={message}
30-
onChange={onChange}
36+
onChange={(ev) => onChange(ev.target.value, TARGET)}
3137
label='Name or Position:'
3238
value={value}
3339
tooltip='Enter a target'
@@ -37,7 +43,20 @@ class TargetPanelView extends Component {
3743

3844
return (
3945
<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>
4160
<TargetFeedback showHelp={showHelp} feedback={feedback}/>
4261
</div>
4362
);
@@ -49,6 +68,7 @@ TargetPanelView.propTypes = {
4968
valid : PropTypes.bool.isRequired,
5069
showHelp : PropTypes.bool.isRequired,
5170
feedback: PropTypes.string.isRequired,
71+
resolver: PropTypes.string.isRequired,
5272
message: PropTypes.string.isRequired,
5373
onChange: PropTypes.func.isRequired,
5474
value : PropTypes.string.isRequired,
@@ -74,6 +94,7 @@ function getProps(params, fireValueChange) {
7494

7595
var feedback= params.feedback|| '';
7696
var value= params.displayValue;
97+
var resolver= params.resolver || nedThenSimbad;
7798
var showHelp= get(params,'showHelp', true);
7899
const wpStr= params.value;
79100
const wp= parseWorldPt(wpStr);
@@ -87,11 +108,12 @@ function getProps(params, fireValueChange) {
87108
return Object.assign({}, params,
88109
{
89110
visible: true,
90-
onChange: (ev) => handleOnChange(ev,params, fireValueChange),
111+
onChange: (value,source) => handleOnChange(value,source,params, fireValueChange),
91112
label: 'Name or Position:',
92113
tooltip: 'Enter a target',
93114
value,
94115
feedback,
116+
resolver,
95117
showHelp,
96118
onUnmountCB: didUnmount
97119
});
@@ -100,21 +122,36 @@ function getProps(params, fireValueChange) {
100122

101123

102124

103-
function handleOnChange(ev, params, fireValueChange) {
104-
var displayValue= ev.target.value;
125+
function handleOnChange(value, source, params, fireValueChange) {
126+
console.log({value,source});
105127
var {parseResults={}}= params;
106128

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+
}
107143

108-
parseResults= parseTarget(displayValue, parseResults);
144+
parseResults= parseTarget(displayValue, parseResults, resolver);
109145
var {resolvePromise}= parseResults;
110146

111147
const targetResolve= (asyncParseResults) => {
112-
return asyncParseResults ? makePayloadAndUpdateActive(displayValue, asyncParseResults) : null;
148+
return asyncParseResults ? makePayloadAndUpdateActive(displayValue, asyncParseResults, null, resolver) : null;
113149
};
114150

115151
resolvePromise= resolvePromise ? resolvePromise.then(targetResolve) : null;
116152

117-
fireValueChange(makePayloadAndUpdateActive(displayValue,parseResults, resolvePromise));
153+
fireValueChange(makePayloadAndUpdateActive(displayValue,parseResults, resolvePromise, resolver));
154+
118155
}
119156

120157
/**
@@ -125,11 +162,11 @@ function handleOnChange(ev, params, fireValueChange) {
125162
* @param resolvePromise
126163
* @return {{message: string, displayValue: *, wpt: (*|null), value: null, valid: *, showHelp: (*|boolean), feedback: (string|*|string), parseResults: *}}
127164
*/
128-
function makePayloadAndUpdateActive(displayValue, parseResults, resolvePromise) {
165+
function makePayloadAndUpdateActive(displayValue, parseResults, resolvePromise, resolver) {
129166
const {wpt}= parseResults;
130167
const wpStr= parseResults && wpt ? wpt.toString() : null;
131168

132-
return {
169+
const payload= {
133170
message : 'Could not resolve object: Enter valid object',
134171
displayValue,
135172
wpt,
@@ -139,6 +176,8 @@ function makePayloadAndUpdateActive(displayValue, parseResults, resolvePromise)
139176
feedback : parseResults.feedback,
140177
parseResults
141178
};
179+
if (resolver) payload.resolver= resolver;
180+
return payload;
142181
}
143182

144183
const connectorDefaultProps = {

src/firefly/js/ui/TargetPanelWorker.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export {formatPosForTextField} from '../data/form/PositionFieldDef.js';
2222
// showHelp, boolean
2323
// return parse results
2424

25-
var makeResolverPromise= function(objName) {
25+
var makeResolverPromise= function(objName, resolver) {
2626
var ignoreSearchResults= null;
2727
var aborted= false;
2828

@@ -38,7 +38,7 @@ var makeResolverPromise= function(objName) {
3838
reject();
3939
}
4040
else {
41-
var {p, rejectFunc}= makeSearchPromise(objName);
41+
var {p, rejectFunc}= makeSearchPromise(objName, resolver);
4242
ignoreSearchResults= rejectFunc;
4343
resolve(p);
4444
}
@@ -53,9 +53,9 @@ var makeResolverPromise= function(objName) {
5353

5454

5555

56-
function makeSearchPromise(objName) {
56+
function makeSearchPromise(objName, resolver= 'nedthensimbad') {
5757
var rejectFunc= null;
58-
var url= `sticky/CmdSrv?objName=${objName}&resolver=nedthensimbad&cmd=CmdResolveName`;
58+
var url= `sticky/CmdSrv?objName=${objName}&resolver=${resolver}&cmd=CmdResolveName`;
5959
var searchPromise= new Promise(
6060
function(resolve, reject) {
6161
fetchUrl(url).then( (response) => {
@@ -75,7 +75,7 @@ function makeSearchPromise(objName) {
7575

7676

7777

78-
export var parseTarget= function(inStr, lastResults) {
78+
export var parseTarget= function(inStr, lastResults, resolver) {
7979
var wpt= null;
8080
var valid= false;
8181
var targetInput= inStr;
@@ -103,7 +103,7 @@ export var parseTarget= function(inStr, lastResults) {
103103
if (posFieldDef.getObjectName()) {
104104
showHelp= false;
105105
feedback= `<i>Resolving:</i> ${posFieldDef.getObjectName()}`;
106-
resolveData= resolveObject(posFieldDef);
106+
resolveData= resolveObject(posFieldDef, resolver);
107107
}
108108
else {
109109
showHelp= true;
@@ -127,7 +127,7 @@ export function getFeedback(wpt) {
127127
return posFieldDef.formatTargetForHelp(wpt);
128128
}
129129

130-
var resolveObject = function(posFieldDef) {
130+
var resolveObject = function(posFieldDef, resolver) {
131131
var objName= posFieldDef.getObjectName();
132132
if (!objName) {
133133
return {
@@ -137,7 +137,7 @@ var resolveObject = function(posFieldDef) {
137137
};
138138
}
139139

140-
var {p,aborter}= makeResolverPromise(objName);
140+
var {p,aborter}= makeResolverPromise(objName, resolver);
141141
p= p.then( (results) =>
142142
{
143143
if (results) {

src/firefly/js/ui/VoSearchPanel.jsx

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -64,22 +64,7 @@ export class VoSearchPanel extends React.Component {
6464
function targetPanelArea() {
6565
return (
6666
<div >
67-
<TargetPanel groupKey={gkey} labelWidth={100}>
68-
<ListBoxInputField
69-
fieldKey='targettry'
70-
initialState={{
71-
fieldKey:'targettry',
72-
label : '',
73-
labelWidth: 0
74-
}}
75-
label={''}
76-
options={[
77-
{label: 'Try NED then Simbad', value: 'NED'},
78-
{label: 'Try Simbad then NED', value: 'simbad'}
79-
]}
80-
multiple={false}
81-
/>
82-
</TargetPanel>
67+
<TargetPanel groupKey={gkey} labelWidth={100}/>
8368
</div>
8469
);
8570
}

src/firefly/js/visualize/ui/ImageSelectPanel.jsx

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -513,14 +513,6 @@ function TargetPanelSetView({plotMode, displayEntry}) {
513513
return (
514514
<div className={'intarget'}>
515515
<TargetPanel groupKey={panelKey}/>
516-
<ListBoxInputField
517-
fieldKey={keyMap['targettry']}
518-
options={[{label: 'Try NED then Simbad', value: 'NED'},
519-
{label: 'Try Simbad then NED', value: 'simbad'}
520-
]}
521-
multiple={false}
522-
labelWidth={3}
523-
/>
524516
</div>
525517
);
526518
}

0 commit comments

Comments
 (0)