mirror of
https://github.com/fspc/workstand.git
synced 2025-02-23 09:13:23 -05:00
Autocomplete fetches members.
This commit is contained in:
parent
45ea1d27d7
commit
1e6d809893
@ -1,40 +1,80 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom';
|
||||||
import Autocomplete from 'react-toolbox/lib/autocomplete';
|
import injectTapEventPlugin from 'react-tap-event-plugin';
|
||||||
|
|
||||||
const source = {
|
// Needed for onTouchTap
|
||||||
'ES-es': 'Spain',
|
// http://stackoverflow.com/a/34015469/988941
|
||||||
'TH-th': 'Thailand',
|
injectTapEventPlugin();
|
||||||
'EN-gb': 'England',
|
|
||||||
'EN-en': 'USA'
|
|
||||||
};
|
|
||||||
|
|
||||||
class AutocompleteTest extends React.Component {
|
import getMuiTheme from 'material-ui/styles/getMuiTheme';
|
||||||
state = {
|
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
|
||||||
countries: ['ES-es', 'TH-th']
|
import AutoComplete from 'material-ui/AutoComplete';
|
||||||
};
|
import { polyFill } from 'es6-promise';
|
||||||
|
import fetch from 'isomorphic-fetch';
|
||||||
|
|
||||||
handleChange = (value) => {
|
class MemberAutoComplete extends React.Component {
|
||||||
this.setState({countries: value});
|
|
||||||
};
|
|
||||||
|
|
||||||
render () {
|
constructor (props) {
|
||||||
return (
|
super(props);
|
||||||
<Autocomplete
|
this.state = {members: [], error: '' };
|
||||||
direction="down"
|
this.handleUpdate = this.handleUpdate.bind(this);
|
||||||
selectedPosition="above"
|
this.signIn = this.signIn.bind(this);
|
||||||
label="Choose countries"
|
// this.filter = this.filter.bind(this);
|
||||||
onChange={this.handleChange}
|
|
||||||
source={source}
|
|
||||||
value={this.state.countries}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleUpdate (text, dataSource) {
|
||||||
|
let self = this;
|
||||||
|
fetch(`//bikeshop.local/member/search/${text}/`)
|
||||||
|
.then((response) => {
|
||||||
|
if (response.status === 200)
|
||||||
|
return response.json();
|
||||||
|
})
|
||||||
|
.then((data) => {
|
||||||
|
console.log(data.results);
|
||||||
|
if (data.results.length > 0) {
|
||||||
|
self.setState({
|
||||||
|
error: '',
|
||||||
|
members: data.results.map((result) => {
|
||||||
|
return {text: `${result.name}`, value: `${result.name} <${result.email}>`, id: result.id}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
self.setState({error: 'Member not found.'})
|
||||||
|
}
|
||||||
|
// self.setState({members: data.results})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
handleFilter (searchText, key) {
|
||||||
|
console.log(searchText);
|
||||||
|
console.log(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
signIn (chosenRequest, idx) {
|
||||||
|
console.log(chosenRequest)
|
||||||
|
console.log(this.state.members[idx])
|
||||||
|
}
|
||||||
|
|
||||||
|
render () {
|
||||||
|
return <AutoComplete
|
||||||
|
dataSource={this.state.members}
|
||||||
|
onUpdateInput={this.handleUpdate}
|
||||||
|
openOnFocus={true}
|
||||||
|
filter={AutoComplete.noFilter}
|
||||||
|
onNewRequest={this.signIn}
|
||||||
|
errorText={this.state.error}
|
||||||
|
/>
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class App extends React.Component {
|
class App extends React.Component {
|
||||||
render () {
|
render () {
|
||||||
return (<AutocompleteTest />)
|
return (
|
||||||
|
<MuiThemeProvider muiTheme={getMuiTheme()}>
|
||||||
|
<MemberAutoComplete />
|
||||||
|
</MuiThemeProvider>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user