var async = require('async'); var $ = require('jquery'); var React = require('react'); var Router = require('react-router'); var Modal = require('react-bootstrap/Modal'); var RetinaImage = require('react-retina-image'); var ContainerStore = require('./ContainerStore'); var Navigation = Router.Navigation; var ContainerModal = React.createClass({ mixins: [Navigation], _searchRequest: null, getInitialState: function () { return { query: '', results: [], recommended: ContainerStore.recommended() }; }, componentDidMount: function () { this.refs.searchInput.getDOMNode().focus(); }, search: function (query) { var self = this; this._searchRequest = $.get('https://registry.hub.docker.com/v1/search?q=' + query, function (result) { self._searchRequest.abort(); self._searchRequest = null; if (self.isMounted()) { self.setState(result); console.log(result); } }); }, handleChange: function (e) { var query = e.target.value; if (query === this.state.query) { return; } if (this._searchRequest) { console.log('Cancel'); this._searchRequest.abort(); this._searchRequest = null; } clearTimeout(this.timeout); var self = this; this.timeout = setTimeout(function () { self.search(query); }, 250); }, handleClick: function (event) { var name = event.target.getAttribute('name'); var self = this; ContainerStore.create(name, 'latest', function (err, containerName) { // this.transitionTo('containers', {container: containerName}); self.props.onRequestHide(); }.bind(this)); }, render: function () { var self = this; var data; if (this.state.query) { data = this.state.results.splice(0, 7); } else { data = this.state.recommended; } var results = data.map(function (r) { var name; if (r.is_official) { name = {r.name}; } else { name = {r.name}; } return (
  • {name}
    {r.star_count}
  • ); }); var title; if (this.state.query) { title =
    Results
    ; } else { title =
    Recommended
    ; } return (
    What's an image?
    {title}
      {results}
    ); } }); module.exports = ContainerModal;