mirror of
https://github.com/Unleash/unleash.git
synced 2025-01-01 00:08:27 +01:00
Adding log tab to admin
This commit is contained in:
parent
8b03422d5c
commit
3ee7beb63e
@ -1,9 +1,11 @@
|
|||||||
var React = require('react');
|
var React = require('react');
|
||||||
var TabView = require('./components/TabView');
|
var TabView = require('./components/TabView');
|
||||||
var Menu = require('./components/Menu');
|
var Menu = require('./components/Menu');
|
||||||
|
var EventsComponent = React.createFactory(require('./components/event/EventsComponent'));
|
||||||
var FeatureTogglesComponent = React.createFactory(require('./components/feature/FeatureTogglesComponent'));
|
var FeatureTogglesComponent = React.createFactory(require('./components/feature/FeatureTogglesComponent'));
|
||||||
var StrategiesComponent = React.createFactory(require('./components/strategy/StrategiesComponent'));
|
var StrategiesComponent = React.createFactory(require('./components/strategy/StrategiesComponent'));
|
||||||
|
|
||||||
|
|
||||||
var tabPanes = [
|
var tabPanes = [
|
||||||
{
|
{
|
||||||
name: "Feature Toggles",
|
name: "Feature Toggles",
|
||||||
@ -12,6 +14,10 @@ var tabPanes = [
|
|||||||
{
|
{
|
||||||
name: "Strategies",
|
name: "Strategies",
|
||||||
content: new StrategiesComponent({})
|
content: new StrategiesComponent({})
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Log",
|
||||||
|
content: new EventsComponent({})
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
19
public/js/components/event/Event.jsx
Normal file
19
public/js/components/event/Event.jsx
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
var React = require('react');
|
||||||
|
|
||||||
|
var Event = React.createClass({
|
||||||
|
propTypes: {
|
||||||
|
event: React.PropTypes.object.isRequired
|
||||||
|
},
|
||||||
|
|
||||||
|
render: function() {
|
||||||
|
return (
|
||||||
|
<tr>
|
||||||
|
<td>{this.props.event.data.name}</td>
|
||||||
|
<td>{this.props.event.type}</td>
|
||||||
|
<td>{this.props.event.createdBy}</td>
|
||||||
|
</tr>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = Event;
|
32
public/js/components/event/EventList.jsx
Normal file
32
public/js/components/event/EventList.jsx
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
var React = require('react'),
|
||||||
|
Event = require('./Event');
|
||||||
|
|
||||||
|
var EventList = React.createClass({
|
||||||
|
propTypes: {
|
||||||
|
events: React.PropTypes.array.isRequired
|
||||||
|
},
|
||||||
|
|
||||||
|
render: function() {
|
||||||
|
var eventNodes = this.props.events.map(function(event) {
|
||||||
|
return <Event event={event} key={event.name} />;
|
||||||
|
});
|
||||||
|
return (
|
||||||
|
<div className='r-margin'>
|
||||||
|
<table className='outerborder'>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Feature</th>
|
||||||
|
<th>Action</th>
|
||||||
|
<th>Author</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{eventNodes}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = EventList;
|
47
public/js/components/event/EventsComponent.jsx
Normal file
47
public/js/components/event/EventsComponent.jsx
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
var React = require('react'),
|
||||||
|
EventList = require('./EventList'),
|
||||||
|
eventStore = require('../../stores/EventStore'),
|
||||||
|
ErrorMessages = require('../ErrorMessages');
|
||||||
|
|
||||||
|
var EventsComponent = React.createClass({
|
||||||
|
getInitialState: function() {
|
||||||
|
return {
|
||||||
|
createView: false,
|
||||||
|
events: [],
|
||||||
|
errors: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
componentDidMount: function () {
|
||||||
|
eventStore.getEvents().then(function(res) {
|
||||||
|
this.setState({events: res.events});
|
||||||
|
}.bind(this), this.initError);
|
||||||
|
},
|
||||||
|
|
||||||
|
initError: function() {
|
||||||
|
this.onError("Could not load events from server");
|
||||||
|
},
|
||||||
|
|
||||||
|
clearErrors: function() {
|
||||||
|
this.setState({errors: []});
|
||||||
|
},
|
||||||
|
|
||||||
|
onError: function(error) {
|
||||||
|
var errors = this.state.errors.concat([error]);
|
||||||
|
this.setState({errors: errors});
|
||||||
|
},
|
||||||
|
|
||||||
|
render: function() {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<ErrorMessages errors={this.state.errors} onClearErrors={this.clearErrors} />
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<EventList events={this.state.events} />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = EventsComponent;
|
16
public/js/stores/EventStore.js
Normal file
16
public/js/stores/EventStore.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
var reqwest = require('reqwest');
|
||||||
|
|
||||||
|
TYPE = 'json';
|
||||||
|
CONTENT_TYPE = 'application/json';
|
||||||
|
|
||||||
|
var EventStore = {
|
||||||
|
getEvents: function () {
|
||||||
|
return reqwest({
|
||||||
|
url: 'events',
|
||||||
|
method: 'get',
|
||||||
|
type: TYPE
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = EventStore;
|
Loading…
Reference in New Issue
Block a user