Skip to content

Commit

Permalink
add Args component to render job args (#21)
Browse files Browse the repository at this point in the history
  • Loading branch information
ajatprabha committed Jun 14, 2022
1 parent 5e8d8fc commit 44c09da
Show file tree
Hide file tree
Showing 10 changed files with 240 additions and 185 deletions.
200 changes: 24 additions & 176 deletions webui/internal/assets/assets.go

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion webui/internal/assets/build/work.js

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions webui/internal/assets/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,8 @@
"style-loader": "^0.19.0",
"url-loader": "^0.6.2",
"webpack": "^3.10.0"
},
"dependencies": {
"react-json-view": "^1.21.3"
}
}
39 changes: 39 additions & 0 deletions webui/internal/assets/src/Args.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import React from 'react';
import PropTypes from 'prop-types';
import ReactJson from 'react-json-view';

const base64regex = /^([\da-zA-Z+/]{4})*(([\da-zA-Z+/]{2}==)|([\da-zA-Z+/]{3}=))?$/;

export default class Args extends React.Component {
static propTypes = {
args: PropTypes.object.isRequired,
}

render() {
let args = this.props.args;

// If object has base64 encoded JSON property named 'payload', try to unwrap it.
if (args.hasOwnProperty('payload') && base64regex.test(args.payload)) {
try {
args.payload = JSON.parse(atob(args.payload));
if (Object.keys(args).length === 1) {
args = args.payload;
}
} catch(e) {
args.payload = {
parse_error: 'not a valid JSON',
value: args.payload
};
}
}

return (
<ReactJson src={args}
name={false}
collapsed={1}
collapseStringsAfterLength={32}
displayDataTypes={false}
/>
);
}
}
3 changes: 2 additions & 1 deletion webui/internal/assets/src/DeadJobs.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import PageList from './PageList';
import UnixTime from './UnixTime';
import styles from './bootstrap.min.css';
import cx from './cx';
import Args from './Args';

export default class DeadJobs extends React.Component {
static propTypes = {
Expand Down Expand Up @@ -144,7 +145,7 @@ export default class DeadJobs extends React.Component {
<tr key={job.id}>
<td><input type="checkbox" checked={this.checked(job)} onChange={() => this.check(job)}/></td>
<td>{job.name}</td>
<td>{JSON.stringify(job.args)}</td>
<td><Args args={job.args}/></td>
<td>{job.err}</td>
<td><UnixTime ts={job.t} /></td>
</tr>
Expand Down
3 changes: 2 additions & 1 deletion webui/internal/assets/src/Processes.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import UnixTime from './UnixTime';
import ShortList from './ShortList';
import styles from './bootstrap.min.css';
import Args from './Args';
import cx from './cx';

class BusyWorkers extends React.Component {
Expand All @@ -27,7 +28,7 @@ class BusyWorkers extends React.Component {
return (
<tr key={worker.worker_id}>
<td>{worker.job_name}</td>
<td>{worker.args_json}</td>
<td><Args args={JSON.parse(worker.args_json)}/></td>
<td><UnixTime ts={worker.started_at}/></td>
<td><UnixTime ts={worker.checkin_at}/></td>
<td>{worker.checkin}</td>
Expand Down
3 changes: 2 additions & 1 deletion webui/internal/assets/src/RetryJobs.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import PageList from './PageList';
import UnixTime from './UnixTime';
import styles from './bootstrap.min.css';
import cx from './cx';
import Args from './Args';

export default class RetryJobs extends React.Component {
static propTypes = {
Expand Down Expand Up @@ -60,7 +61,7 @@ export default class RetryJobs extends React.Component {
return (
<tr key={job.id}>
<td>{job.name}</td>
<td>{JSON.stringify(job.args)}</td>
<td><Args args={job.args}/></td>
<td>{job.err}</td>
<td><UnixTime ts={job.t} /></td>
</tr>
Expand Down
3 changes: 2 additions & 1 deletion webui/internal/assets/src/ScheduledJobs.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import PageList from './PageList';
import UnixTime from './UnixTime';
import styles from './bootstrap.min.css';
import cx from './cx';
import Args from './Args';

export default class ScheduledJobs extends React.Component {
static propTypes = {
Expand Down Expand Up @@ -59,7 +60,7 @@ export default class ScheduledJobs extends React.Component {
return (
<tr key={job.id}>
<td>{job.name}</td>
<td>{JSON.stringify(job.args)}</td>
<td><Args args={job.args}/></td>
<td><UnixTime ts={job.run_at} /></td>
</tr>
);
Expand Down
Loading

0 comments on commit 44c09da

Please sign in to comment.