From 3c111895a8b56a54ae0e5d3296bfbb8fe0bb3715 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 06 Jan 2019 00:54:00 +0000
Subject: [PATCH] JobMonitor is now embedded.
---
borgbutler-webapp/src/components/views/jobs/JobMonitorPanel.jsx | 15 +++++++++++++--
borgbutler-webapp/src/components/views/jobs/Job.jsx | 21 ++++++++++++++++++++-
borgbutler-webapp/src/components/views/archives/ArchiveView.jsx | 9 +++++----
borgbutler-webapp/src/components/views/jobs/JobMonitorView.jsx | 2 +-
borgbutler-webapp/src/components/views/repos/RepoArchiveListView.jsx | 5 +++--
borgbutler-webapp/src/components/views/jobs/JobQueue.jsx | 6 ++++++
6 files changed, 48 insertions(+), 10 deletions(-)
diff --git a/borgbutler-webapp/src/components/views/archives/ArchiveView.jsx b/borgbutler-webapp/src/components/views/archives/ArchiveView.jsx
index aa46f53..d239550 100644
--- a/borgbutler-webapp/src/components/views/archives/ArchiveView.jsx
+++ b/borgbutler-webapp/src/components/views/archives/ArchiveView.jsx
@@ -3,9 +3,10 @@
import {PageHeader} from '../../general/BootstrapComponents';
import {getRestServiceUrl, humanFileSize, humanSeconds} from '../../../utilities/global';
import ErrorAlert from '../../general/ErrorAlert';
-import {IconRefresh} from "../../general/IconComponents";
-import classNames from "classnames";
-import FileListPanel from "./FileListPanel";
+import {IconRefresh} from '../../general/IconComponents';
+import classNames from 'classnames';
+import FileListPanel from './FileListPanel';
+import JobMonitorPanel from '../jobs/JobMonitorPanel';
class ArchiveView extends React.Component {
@@ -62,7 +63,7 @@
let pageHeader = '';
if (this.state.isFetching) {
- content = <i>Loading...</i>;
+ content = <JobMonitorPanel/>;
} else if (this.state.failed) {
content = <ErrorAlert
title={'Cannot load Repositories'}
diff --git a/borgbutler-webapp/src/components/views/jobs/Job.jsx b/borgbutler-webapp/src/components/views/jobs/Job.jsx
index 2baae8a..8bcdff0 100644
--- a/borgbutler-webapp/src/components/views/jobs/Job.jsx
+++ b/borgbutler-webapp/src/components/views/jobs/Job.jsx
@@ -1,26 +1,40 @@
import React from 'react';
+import {Redirect} from 'react-router-dom';
import {Button, Card, CardBody, Collapse, Progress} from 'reactstrap';
import {IconCancel} from '../../general/IconComponents'
import {getRestServiceUrl} from "../../../utilities/global";
+import PropTypes from "prop-types";
class Job extends React.Component {
constructor(props) {
super(props);
this.toggle = this.toggle.bind(this);
this.cacnelJob = this.cancelJob.bind(this);
- this.state = {collapse: false};
+ this.state = {
+ collapse: false,
+ redirect: false
+ };
}
cancelJob = (jobId) => {
fetch(getRestServiceUrl('jobs/cancel', {
uniqueJobNumber: jobId
}));
+ this.setState({
+ redirect: true
+ })
};
toggle() {
this.setState({collapse: !this.state.collapse});
}
+ renderRedirect = () => {
+ if (this.props.embedded && this.state.redirect) {
+ return <Redirect to='/jobmonitor'/>
+ }
+ }
+
render() {
let content = undefined;
let job = this.props.job;
@@ -43,6 +57,7 @@
}
return (
<div>
+ {this.renderRedirect()}
<Button color="link" onClick={this.toggle}>{job.description}</Button>
<div>{content}
<Button color={'danger'} onClick={() => this.cancelJob(job.uniqueJobNumber)}
@@ -71,4 +86,8 @@
}
}
+Job.propTypes = {
+ embedded: PropTypes.bool
+};
+
export default Job;
diff --git a/borgbutler-webapp/src/components/views/jobs/JobMonitorPanel.jsx b/borgbutler-webapp/src/components/views/jobs/JobMonitorPanel.jsx
index 9ba856e..4f6d9c4 100644
--- a/borgbutler-webapp/src/components/views/jobs/JobMonitorPanel.jsx
+++ b/borgbutler-webapp/src/components/views/jobs/JobMonitorPanel.jsx
@@ -3,6 +3,7 @@
import {getRestServiceUrl, isDevelopmentMode} from "../../../utilities/global";
import JobQueue from "./JobQueue";
import ErrorAlert from "../archives/ArchiveView";
+import PropTypes from "prop-types";
class JobMonitorPanel extends React.Component {
state = {
@@ -71,11 +72,12 @@
content = <React.Fragment>
{this.state.queues
.map((queue) => <JobQueue
+ embedded={this.props.embedded}
queue={queue}
key={queue.repo}
/>)}
</React.Fragment>;
- } else if (isDevelopmentMode()) {
+ } else if (isDevelopmentMode() && !this.props.embedded) {
content = <React.Fragment>No jobs are running or queued.<br/><br/>
<Button color="primary" onClick={this.toggleTestMode}>Test mode</Button>
</React.Fragment>
@@ -83,7 +85,7 @@
content = <React.Fragment>No jobs are running or queued.</React.Fragment>
}
}
- if (isDevelopmentMode()) {
+ if (isDevelopmentMode() && !this.props.embedded) {
todo = <React.Fragment><br/>
<code>
<h2>To-do</h2>
@@ -118,4 +120,13 @@
}
}
+JobMonitorPanel.propTypes = {
+ embedded: PropTypes.bool
+};
+
+JobMonitorPanel.defaultProps = {
+ embedded: true
+};
+
+
export default JobMonitorPanel;
\ No newline at end of file
diff --git a/borgbutler-webapp/src/components/views/jobs/JobMonitorView.jsx b/borgbutler-webapp/src/components/views/jobs/JobMonitorView.jsx
index 57494bb..ec5efc6 100644
--- a/borgbutler-webapp/src/components/views/jobs/JobMonitorView.jsx
+++ b/borgbutler-webapp/src/components/views/jobs/JobMonitorView.jsx
@@ -9,7 +9,7 @@
<PageHeader>
Job monitor
</PageHeader>
- <JobMonitorPanel/>
+ <JobMonitorPanel embedded={false}/>
</React.Fragment>;
};
}
diff --git a/borgbutler-webapp/src/components/views/jobs/JobQueue.jsx b/borgbutler-webapp/src/components/views/jobs/JobQueue.jsx
index a847c3a..c321c11 100644
--- a/borgbutler-webapp/src/components/views/jobs/JobQueue.jsx
+++ b/borgbutler-webapp/src/components/views/jobs/JobQueue.jsx
@@ -1,6 +1,7 @@
import React from 'react';
import {Button, Card, CardBody, Collapse} from 'reactstrap';
import Job from "./Job";
+import PropTypes from "prop-types";
class JobQueue extends React.Component {
constructor(props) {
@@ -22,6 +23,7 @@
<CardBody>
{this.props.queue.jobs
.map((job, index) => <Job
+ embedded={this.props.embedded}
job={job}
key={job.commandLineAsString}
/>)}
@@ -33,4 +35,8 @@
}
}
+JobQueue.propTypes = {
+ embedded: PropTypes.bool
+};
+
export default JobQueue;
diff --git a/borgbutler-webapp/src/components/views/repos/RepoArchiveListView.jsx b/borgbutler-webapp/src/components/views/repos/RepoArchiveListView.jsx
index 776aad8..b047446 100644
--- a/borgbutler-webapp/src/components/views/repos/RepoArchiveListView.jsx
+++ b/borgbutler-webapp/src/components/views/repos/RepoArchiveListView.jsx
@@ -5,7 +5,8 @@
import {PageHeader} from '../../general/BootstrapComponents';
import {getRestServiceUrl, humanFileSize} from '../../../utilities/global';
import ErrorAlert from '../../general/ErrorAlert';
-import {IconCheck, IconRefresh} from "../../general/IconComponents";
+import {IconCheck, IconRefresh} from '../../general/IconComponents';
+import JobMonitorPanel from '../jobs/JobMonitorPanel';
class RepoArchiveListView extends React.Component {
@@ -64,7 +65,7 @@
let pageHeader = '';
if (this.state.isFetching) {
- content = <i>Loading...</i>;
+ content = <JobMonitorPanel />;
} else if (this.state.failed) {
content = <ErrorAlert
title={'Cannot load Repositories'}
--
Gitblit v1.10.0