Browse Source

Autocomplete fetches members.

feature/python-error-tracking
Drew Larson 9 years ago
parent
commit
1e6d809893
  1. 88
      bikeshop_project/assets/js/index.jsx

88
bikeshop_project/assets/js/index.jsx

@ -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});
}; constructor (props) {
super(props);
this.state = {members: [], error: '' };
this.handleUpdate = this.handleUpdate.bind(this);
this.signIn = this.signIn.bind(this);
// this.filter = this.filter.bind(this);
}
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 () { render () {
return ( return <AutoComplete
<Autocomplete dataSource={this.state.members}
direction="down" onUpdateInput={this.handleUpdate}
selectedPosition="above" openOnFocus={true}
label="Choose countries" filter={AutoComplete.noFilter}
onChange={this.handleChange} onNewRequest={this.signIn}
source={source} errorText={this.state.error}
value={this.state.countries}
/> />
);
} }
} }
class App extends React.Component { class App extends React.Component {
render () { render () {
return (<AutocompleteTest />) return (
<MuiThemeProvider muiTheme={getMuiTheme()}>
<MemberAutoComplete />
</MuiThemeProvider>
)
} }
} }

Loading…
Cancel
Save