mirror of
https://gitlab.silvrtree.co.uk/martind2000/nci.git
synced 2025-02-10 17:49:17 +00:00
55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
var React = require('react'),
|
|
ReactDOM = require('react-dom'),
|
|
Router = require('react-router'),
|
|
Reflux = require('reflux'),
|
|
ProjectActions = require('../../../actions/project'),
|
|
projectsStore = require('../../../stores/projects'),
|
|
template = require('./index.jade'),
|
|
Scm = require('../../common/scm');
|
|
|
|
module.exports = React.createClass({
|
|
mixins: [Reflux.ListenerMixin, Router.Navigation],
|
|
componentDidMount: function() {
|
|
this.listenTo(projectsStore, this.updateItems);
|
|
},
|
|
getInitialState: function() {
|
|
return {
|
|
showSearch: false,
|
|
projects: []
|
|
};
|
|
},
|
|
onRunProject: function(projectName) {
|
|
ProjectActions.run(projectName);
|
|
this.setState({showSearch: false});
|
|
},
|
|
onSelectProject: function(name) {
|
|
this.transitionTo('project', {name: name});
|
|
},
|
|
updateItems: function(projects) {
|
|
this.setState({projects: projects});
|
|
},
|
|
onSearchProject: function() {
|
|
this.setState({showSearch: true});
|
|
},
|
|
onInputMount: function(component) {
|
|
var node = ReactDOM.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.locals({
|
|
Link: Router.Link,
|
|
Scm: Scm
|
|
})
|
|
});
|