1
0
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:
Drew Larson 2016-06-01 23:18:33 -06:00
parent 45ea1d27d7
commit 1e6d809893

View File

@ -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>
)
} }
} }