|
@@ -1,7 +1,13 @@ |
|
|
import { h, Component } from 'preact';
|
|
|
import { h, Component } from 'preact';
|
|
|
import makeArvadosRequest from 'make-arvados-request';
|
|
|
import makeArvadosRequest from 'make-arvados-request';
|
|
|
|
|
|
import WBPagination from 'wb-pagination';
|
|
|
|
|
|
|
|
|
class WBLiveLogs extends Component {
|
|
|
class WBLiveLogs extends Component {
|
|
|
|
|
|
constructor(...args) {
|
|
|
|
|
|
super(...args);
|
|
|
|
|
|
this.state.page = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
componentDidMount() {
|
|
|
componentDidMount() {
|
|
|
this.fetchData();
|
|
|
this.fetchData();
|
|
|
}
|
|
|
}
|
|
@@ -10,32 +16,41 @@ class WBLiveLogs extends Component { |
|
|
if (nextProps.uuid === this.props.uuid);
|
|
|
if (nextProps.uuid === this.props.uuid);
|
|
|
return;
|
|
|
return;
|
|
|
this.props = nextProps;
|
|
|
this.props = nextProps;
|
|
|
|
|
|
this.state.page = 0;
|
|
|
this.fetchData();
|
|
|
this.fetchData();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
fetchData() {
|
|
|
fetchData() {
|
|
|
const { uuid, app } = this.props;
|
|
|
|
|
|
|
|
|
const { uuid, app, itemsPerPage } = this.props;
|
|
|
|
|
|
const { page } = this.state;
|
|
|
const { arvHost, arvToken } = app.state;
|
|
|
const { arvHost, arvToken } = app.state;
|
|
|
const filters = [
|
|
|
const filters = [
|
|
|
[ 'object_uuid', '=', uuid ]
|
|
|
[ 'object_uuid', '=', uuid ]
|
|
|
];
|
|
|
];
|
|
|
let prom = makeArvadosRequest(arvHost, arvToken,
|
|
|
let prom = makeArvadosRequest(arvHost, arvToken,
|
|
|
'/arvados/v1/logs?filters=' + encodeURIComponent(JSON.stringify(filters)));
|
|
|
|
|
|
|
|
|
'/arvados/v1/logs?filters=' + encodeURIComponent(JSON.stringify(filters)) +
|
|
|
|
|
|
'&offset=' + (itemsPerPage * page) +
|
|
|
|
|
|
'&limit=' + itemsPerPage);
|
|
|
prom = prom.then(xhr => {
|
|
|
prom = prom.then(xhr => {
|
|
|
const { items } = xhr.response;
|
|
|
const { items } = xhr.response;
|
|
|
this.setState({
|
|
|
this.setState({
|
|
|
content: items.filter(a => ('text' in a.properties)).map(a => a.properties.text.trim()).join('\n')
|
|
|
|
|
|
|
|
|
content: items
|
|
|
|
|
|
.filter(a => ('text' in a.properties))
|
|
|
|
|
|
.map(a => a.properties.text.trim()).join('\n'),
|
|
|
|
|
|
numPages: Math.ceil(xhr.response.items_available / itemsPerPage)
|
|
|
});
|
|
|
});
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
render({}, { content }) {
|
|
|
|
|
|
|
|
|
render({}, { content, page, numPages }) {
|
|
|
return (
|
|
|
return (
|
|
|
<div>
|
|
|
<div>
|
|
|
<a href="#" onclick={ e => {
|
|
|
<a href="#" onclick={ e => {
|
|
|
e.preventDefault();
|
|
|
e.preventDefault();
|
|
|
this.fetchData();
|
|
|
this.fetchData();
|
|
|
} }>Refresh</a>
|
|
|
} }>Refresh</a>
|
|
|
|
|
|
<WBPagination activePage={ page } numPages={ numPages }
|
|
|
|
|
|
onPageChanged={ page => { this.state.page = page; this.fetchData(); } } />
|
|
|
<pre class="word-warp terminal">
|
|
|
<pre class="word-warp terminal">
|
|
|
{ content }
|
|
|
{ content }
|
|
|
</pre>
|
|
|
</pre>
|
|
@@ -44,4 +59,8 @@ class WBLiveLogs extends Component { |
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
WBLiveLogs.defaultProps = {
|
|
|
|
|
|
itemsPerPage: 100
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
export default WBLiveLogs;
|
|
|
export default WBLiveLogs;
|