Browse Source

Autocomplete fetches members.

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

100
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' import getMuiTheme from 'material-ui/styles/getMuiTheme';
}; import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import AutoComplete from 'material-ui/AutoComplete';
class AutocompleteTest extends React.Component { import { polyFill } from 'es6-promise';
state = { import fetch from 'isomorphic-fetch';
countries: ['ES-es', 'TH-th']
}; class MemberAutoComplete extends React.Component {
handleChange = (value) => { constructor (props) {
this.setState({countries: value}); super(props);
}; this.state = {members: [], error: '' };
this.handleUpdate = this.handleUpdate.bind(this);
render () { this.signIn = this.signIn.bind(this);
return ( // this.filter = this.filter.bind(this);
<Autocomplete
direction="down"
selectedPosition="above"
label="Choose countries"
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…
Cancel
Save