nci/static/js/app/components/projects/selector/index.js

56 lines
1.3 KiB
JavaScript
Raw Normal View History

2015-06-14 11:24:31 +00:00
'use strict';
define([
2015-07-09 20:12:24 +00:00
'react', 'react-router', 'reflux', 'app/actions/project',
'app/stores/projects',
'app/components/common/scm/index',
2015-06-14 11:24:31 +00:00
'templates/app/components/projects/selector/index'
], function(React, Router, Reflux, ProjectActions, projectsStore, Scm,
template
) {
2015-07-09 20:12:24 +00:00
template = template.locals({
Link: Router.Link,
Scm: Scm
2015-07-09 20:12:24 +00:00
});
2015-06-14 11:24:31 +00:00
return React.createClass({
mixins: [Reflux.ListenerMixin, Router.Navigation],
2015-06-14 11:24:31 +00:00
componentDidMount: function() {
this.listenTo(projectsStore, this.updateItems);
},
getInitialState: function() {
return {
showSearch: false
};
},
onRunProject: function(projectName) {
ProjectActions.run(projectName)
this.setState({showSearch: false});
},
onSelectProject: function(name) {
this.transitionTo('project', {name: name});
},
2015-06-14 11:24:31 +00:00
updateItems: function(projects) {
this.setState({projects: projects});
},
onSearchProject: function() {
this.setState({showSearch: true});
},
onInputMount: function(component) {
var node = React.findDOMNode(component);
if (node) {
node.focus();
}
},
onBlurSearch: function() {
this.setState({showSearch: false});
},
onSearchChange: function(event) {
var query = event.target.value;
this.setState({searchQuery: query});
ProjectActions.readAll({nameQuery: query});
},
render: template,
});
});