1
1
import React from 'react'
2
2
import Autosuggest from 'react-autosuggest' ;
3
3
import './AutoSuggest.css'
4
+ import ListResults from './ListResults'
5
+ import axios from 'axios'
4
6
5
7
// Imagine you have a list of languages that you'd like to autosuggest.
6
8
const languages = [
@@ -15,24 +17,24 @@ const languages = [
15
17
]
16
18
17
19
// Teach Autosuggest how to calculate suggestions for any given input value.
18
- const getSuggestions = value => {
19
- const inputValue = value . trim ( ) . toLowerCase ( ) ;
20
- const inputLength = inputValue . length ;
20
+ // const getSuggestions = value => {
21
+ // const inputValue = value.trim().toLowerCase();
22
+ // const inputLength = inputValue.length;
21
23
22
- return inputLength === 0 ? [ ] : languages . filter ( lang =>
23
- lang . name . toLowerCase ( ) . slice ( 0 , inputLength ) === inputValue
24
- ) ;
25
- } ;
24
+ // return inputLength === 0 ? [] : languages.filter(lang =>
25
+ // lang.name.toLowerCase().slice(0, inputLength) === inputValue
26
+ // );
27
+ // };
26
28
27
29
// When suggestion is clicked, Autosuggest needs to populate the input
28
30
// based on the clicked suggestion. Teach Autosuggest how to calculate the
29
31
// input value for every given suggestion.
30
- const getSuggestionValue = suggestion => suggestion . name ;
32
+ const getSuggestionValue = suggestion => suggestion ;
31
33
32
34
// Use your imagination to render suggestions.
33
35
const renderSuggestion = suggestion => (
34
36
< div >
35
- { suggestion . name }
37
+ { suggestion }
36
38
</ div >
37
39
) ;
38
40
@@ -47,11 +49,52 @@ class AutoSuggest extends React.Component {
47
49
// and they are initially empty because the Autosuggest is closed.
48
50
this . state = {
49
51
value : '' ,
50
- suggestions : [ ]
52
+ suggestions : [ ] ,
53
+ showResults : false
51
54
} ;
52
55
}
53
56
54
57
onChange = ( event , { newValue } ) => {
58
+ var suggestionJson = {
59
+ "suggest" : {
60
+ "text" : "plastc crd" ,
61
+ "param" : {
62
+ "phrase" : {
63
+ "field" : "ParameterValueForSearch.trigram" ,
64
+ "size" : 5 ,
65
+ "direct_generator" : [ {
66
+ "field" : "ParameterValueForSearch.trigram" ,
67
+ "suggest_mode" : "always"
68
+ } ]
69
+ }
70
+ } ,
71
+ "name" : {
72
+ "phrase" : {
73
+ "field" : "NodeName.trigram" ,
74
+ "size" : 5 ,
75
+ "direct_generator" : [ {
76
+ "field" : "NodeName.trigram" ,
77
+ "suggest_mode" : "always"
78
+ } ]
79
+ }
80
+ } ,
81
+ "title" : {
82
+ "phrase" : {
83
+ "field" : "NodeTitle.trigram" ,
84
+ "size" : 5 ,
85
+ "direct_generator" : [ {
86
+ "field" : "NodeTitle.trigram" ,
87
+ "suggest_mode" : "always"
88
+ } ]
89
+ }
90
+ }
91
+ }
92
+ }
93
+ newValue . length > 2 ? suggestionJson . suggest . text = newValue : null
94
+ axios . post ( "http://localhost:9200/nodes/node_details/_search" , suggestionJson )
95
+ . then ( ( response ) => {
96
+ console . log ( response . data . suggest )
97
+ } )
55
98
this . setState ( {
56
99
value : newValue
57
100
} ) ;
@@ -60,8 +103,9 @@ class AutoSuggest extends React.Component {
60
103
// Autosuggest will call this function every time you need to update suggestions.
61
104
// You already implemented this logic above, so just use it.
62
105
onSuggestionsFetchRequested = ( { value } ) => {
106
+
63
107
this . setState ( {
64
- suggestions : getSuggestions ( value )
108
+ suggestions : [ 'apple' , 'ball' ]
65
109
} ) ;
66
110
} ;
67
111
@@ -76,6 +120,7 @@ class AutoSuggest extends React.Component {
76
120
// api call to get final suggestions
77
121
event . preventDefault ( )
78
122
console . log ( event , str , 'api call to be made' )
123
+ this . setState ( { showResults : true } )
79
124
}
80
125
81
126
render ( ) {
@@ -102,6 +147,11 @@ class AutoSuggest extends React.Component {
102
147
/>
103
148
< button type = 'submit' > Search</ button >
104
149
</ form >
150
+ {
151
+ this . state . showResults
152
+ ? < ListResults />
153
+ : null
154
+ }
105
155
</ div >
106
156
) ;
107
157
}
0 commit comments