@jbrowse/plugin-jobs-management 2.6.3 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/JobsListWidget/components/CurrentJobCard.d.ts +3 -4
- package/dist/JobsListWidget/components/CurrentJobCard.js +4 -3
- package/dist/JobsListWidget/components/JobCard.d.ts +3 -4
- package/dist/JobsListWidget/components/JobCard.js +7 -4
- package/dist/JobsListWidget/components/JobsListWidget.d.ts +3 -4
- package/dist/JobsListWidget/components/JobsListWidget.js +14 -20
- package/dist/JobsListWidget/model.d.ts +34 -1
- package/dist/JobsListWidget/model.js +7 -2
- package/dist/index.js +2 -1
- package/esm/JobsListWidget/components/CurrentJobCard.d.ts +3 -4
- package/esm/JobsListWidget/components/CurrentJobCard.js +4 -3
- package/esm/JobsListWidget/components/JobCard.d.ts +3 -4
- package/esm/JobsListWidget/components/JobCard.js +7 -4
- package/esm/JobsListWidget/components/JobsListWidget.d.ts +3 -4
- package/esm/JobsListWidget/components/JobsListWidget.js +14 -20
- package/esm/JobsListWidget/model.d.ts +34 -1
- package/esm/JobsListWidget/model.js +7 -2
- package/esm/index.js +2 -1
- package/package.json +4 -4
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { NewJob } from '../model';
|
|
3
|
-
declare
|
|
3
|
+
declare const CurrentJobCard: ({ job, }: {
|
|
4
4
|
job: NewJob;
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
export default _default;
|
|
5
|
+
}) => React.JSX.Element;
|
|
6
|
+
export default CurrentJobCard;
|
|
@@ -26,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
const react_1 = __importStar(require("react"));
|
|
27
27
|
const mobx_react_1 = require("mobx-react");
|
|
28
28
|
const material_1 = require("@mui/material");
|
|
29
|
-
function CurrentJobCard({ job }) {
|
|
29
|
+
const CurrentJobCard = (0, mobx_react_1.observer)(function CurrentJobCard({ job, }) {
|
|
30
30
|
const [clicked, setClicked] = (0, react_1.useState)(false);
|
|
31
31
|
return (react_1.default.createElement(material_1.Card, { variant: "outlined" },
|
|
32
32
|
react_1.default.createElement(material_1.CardContent, null,
|
|
@@ -50,8 +50,9 @@ function CurrentJobCard({ job }) {
|
|
|
50
50
|
react_1.default.createElement(material_1.Typography, null, `${Math.round(job.progressPct || 0)}%`)))))),
|
|
51
51
|
job.cancelCallback ? (react_1.default.createElement(material_1.CardActions, null,
|
|
52
52
|
react_1.default.createElement(material_1.Button, { variant: "contained", color: "inherit", disabled: clicked || job.progressPct === 0, onClick: () => {
|
|
53
|
+
job.setStatusMessage('Aborted via cancel button');
|
|
53
54
|
job.cancelCallback && job.cancelCallback();
|
|
54
55
|
setClicked(true);
|
|
55
56
|
} }, "Cancel"))) : null));
|
|
56
|
-
}
|
|
57
|
-
exports.default =
|
|
57
|
+
});
|
|
58
|
+
exports.default = CurrentJobCard;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { NewJob } from '../model';
|
|
3
|
-
declare
|
|
3
|
+
declare const JobCard: ({ job }: {
|
|
4
4
|
job: NewJob;
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
export default _default;
|
|
5
|
+
}) => React.JSX.Element;
|
|
6
|
+
export default JobCard;
|
|
@@ -6,11 +6,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
7
|
const mobx_react_1 = require("mobx-react");
|
|
8
8
|
const material_1 = require("@mui/material");
|
|
9
|
-
function JobCard({ job }) {
|
|
9
|
+
const JobCard = (0, mobx_react_1.observer)(function JobCard({ job }) {
|
|
10
10
|
return (react_1.default.createElement(material_1.Card, { variant: "outlined" },
|
|
11
11
|
react_1.default.createElement(material_1.CardContent, null,
|
|
12
12
|
react_1.default.createElement(material_1.Typography, { variant: "body1" },
|
|
13
13
|
react_1.default.createElement("strong", null, 'Name: '),
|
|
14
|
-
job.name)
|
|
15
|
-
}
|
|
16
|
-
|
|
14
|
+
job.name),
|
|
15
|
+
job.statusMessage ? (react_1.default.createElement(material_1.Typography, { variant: "body1" },
|
|
16
|
+
react_1.default.createElement("strong", null, 'Message: '),
|
|
17
|
+
job.statusMessage)) : null)));
|
|
18
|
+
});
|
|
19
|
+
exports.default = JobCard;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { JobsListModel } from '../model';
|
|
3
|
-
declare
|
|
3
|
+
declare const JobsListWidget: ({ model }: {
|
|
4
4
|
model: JobsListModel;
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
export default _default;
|
|
5
|
+
}) => React.JSX.Element;
|
|
6
|
+
export default JobsListWidget;
|
|
@@ -18,29 +18,17 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
|
18
18
|
expandIcon: {
|
|
19
19
|
color: theme.palette.tertiary.contrastText,
|
|
20
20
|
},
|
|
21
|
-
button: {
|
|
22
|
-
marginTop: theme.spacing(1),
|
|
23
|
-
marginRight: theme.spacing(1),
|
|
24
|
-
},
|
|
25
|
-
adminBadge: {
|
|
26
|
-
margin: '0.5em',
|
|
27
|
-
borderRadius: 3,
|
|
28
|
-
backgroundColor: theme.palette.quaternary.main,
|
|
29
|
-
padding: '1em',
|
|
30
|
-
display: 'flex',
|
|
31
|
-
alignContent: 'center',
|
|
32
|
-
},
|
|
33
21
|
}));
|
|
34
|
-
|
|
22
|
+
const JobsListWidget = (0, mobx_react_1.observer)(function ({ model }) {
|
|
35
23
|
const { classes } = useStyles();
|
|
36
|
-
const { jobs, finished, queued } = model;
|
|
24
|
+
const { jobs, finished, queued, aborted } = model;
|
|
37
25
|
return (react_1.default.createElement("div", { className: classes.root },
|
|
38
26
|
react_1.default.createElement(material_1.Accordion, { defaultExpanded: true },
|
|
39
27
|
react_1.default.createElement(material_1.AccordionSummary, { expandIcon: react_1.default.createElement(ExpandMore_1.default, { className: classes.expandIcon }) },
|
|
40
|
-
react_1.default.createElement(material_1.Typography, { variant: "h5" }, "
|
|
28
|
+
react_1.default.createElement(material_1.Typography, { variant: "h5" }, "Running jobs")),
|
|
41
29
|
jobs.length ? (jobs.map((job, index) => (react_1.default.createElement(CurrentJobCard_1.default, { job: job, key: `${JSON.stringify(job)}-${index}` })))) : (react_1.default.createElement(material_1.Card, { variant: "outlined" },
|
|
42
30
|
react_1.default.createElement(material_1.CardContent, null,
|
|
43
|
-
react_1.default.createElement(material_1.Typography, { variant: "body1" }, "No jobs"))))),
|
|
31
|
+
react_1.default.createElement(material_1.Typography, { variant: "body1" }, "No running jobs"))))),
|
|
44
32
|
react_1.default.createElement(material_1.Accordion, { defaultExpanded: true },
|
|
45
33
|
react_1.default.createElement(material_1.AccordionSummary, { expandIcon: react_1.default.createElement(ExpandMore_1.default, { className: classes.expandIcon }) },
|
|
46
34
|
react_1.default.createElement(material_1.Typography, { variant: "h5" }, "Queued jobs")),
|
|
@@ -49,9 +37,15 @@ function JobsListWidget({ model }) {
|
|
|
49
37
|
react_1.default.createElement(material_1.Typography, { variant: "body1" }, "No queued jobs"))))),
|
|
50
38
|
react_1.default.createElement(material_1.Accordion, { defaultExpanded: true },
|
|
51
39
|
react_1.default.createElement(material_1.AccordionSummary, { expandIcon: react_1.default.createElement(ExpandMore_1.default, { className: classes.expandIcon }) },
|
|
52
|
-
react_1.default.createElement(material_1.Typography, { variant: "h5" }, "
|
|
40
|
+
react_1.default.createElement(material_1.Typography, { variant: "h5" }, "Completed jobs")),
|
|
53
41
|
finished.length ? (finished.map((job, index) => (react_1.default.createElement(JobCard_1.default, { key: `${JSON.stringify(job)}-${index}`, job: job })))) : (react_1.default.createElement(material_1.Card, { variant: "outlined" },
|
|
54
42
|
react_1.default.createElement(material_1.CardContent, null,
|
|
55
|
-
react_1.default.createElement(material_1.Typography, { variant: "body1" }, "No jobs
|
|
56
|
-
}
|
|
57
|
-
|
|
43
|
+
react_1.default.createElement(material_1.Typography, { variant: "body1" }, "No completed jobs"))))),
|
|
44
|
+
react_1.default.createElement(material_1.Accordion, { defaultExpanded: true },
|
|
45
|
+
react_1.default.createElement(material_1.AccordionSummary, { expandIcon: react_1.default.createElement(ExpandMore_1.default, { className: classes.expandIcon }) },
|
|
46
|
+
react_1.default.createElement(material_1.Typography, { variant: "h5" }, "Aborted jobs")),
|
|
47
|
+
aborted.length ? (aborted.map((job, index) => (react_1.default.createElement(JobCard_1.default, { key: `${JSON.stringify(job)}-${index}`, job: job })))) : (react_1.default.createElement(material_1.Card, { variant: "outlined" },
|
|
48
|
+
react_1.default.createElement(material_1.CardContent, null,
|
|
49
|
+
react_1.default.createElement(material_1.Typography, { variant: "body1" }, "No aborted jobs")))))));
|
|
50
|
+
});
|
|
51
|
+
exports.default = JobsListWidget;
|
|
@@ -13,8 +13,9 @@ export declare const Job: import("mobx-state-tree").IModelType<{
|
|
|
13
13
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
14
14
|
export interface NewJob extends SnapshotIn<typeof Job> {
|
|
15
15
|
cancelCallback(): void;
|
|
16
|
+
setStatusMessage(msg?: string): void;
|
|
16
17
|
}
|
|
17
|
-
export default function f(
|
|
18
|
+
export default function f(_pluginManager: PluginManager): import("mobx-state-tree").IModelType<{
|
|
18
19
|
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
19
20
|
type: import("mobx-state-tree").ISimpleType<"JobsListWidget">;
|
|
20
21
|
jobs: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
|
|
@@ -50,6 +51,17 @@ export default function f(pluginManager: PluginManager): import("mobx-state-tree
|
|
|
50
51
|
setStatusMessage(message?: string | undefined): void;
|
|
51
52
|
setProgressPct(pct: number): void;
|
|
52
53
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
54
|
+
aborted: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
|
|
55
|
+
name: import("mobx-state-tree").ISimpleType<string>;
|
|
56
|
+
statusMessage: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
57
|
+
progressPct: import("mobx-state-tree").ISimpleType<number>;
|
|
58
|
+
}, {
|
|
59
|
+
cancelCallback(): void;
|
|
60
|
+
} & {
|
|
61
|
+
setCancelCallback(cancelCallback: () => void): void;
|
|
62
|
+
setStatusMessage(message?: string | undefined): void;
|
|
63
|
+
setProgressPct(pct: number): void;
|
|
64
|
+
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
53
65
|
}, {
|
|
54
66
|
addJob(job: NewJob): {
|
|
55
67
|
name: string;
|
|
@@ -135,6 +147,27 @@ export default function f(pluginManager: PluginManager): import("mobx-state-tree
|
|
|
135
147
|
setStatusMessage(message?: string | undefined): void;
|
|
136
148
|
setProgressPct(pct: number): void;
|
|
137
149
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>>;
|
|
150
|
+
addAbortedJob(job: NewJob): import("mobx-state-tree").IMSTArray<import("mobx-state-tree").IModelType<{
|
|
151
|
+
name: import("mobx-state-tree").ISimpleType<string>;
|
|
152
|
+
statusMessage: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
153
|
+
progressPct: import("mobx-state-tree").ISimpleType<number>;
|
|
154
|
+
}, {
|
|
155
|
+
cancelCallback(): void;
|
|
156
|
+
} & {
|
|
157
|
+
setCancelCallback(cancelCallback: () => void): void;
|
|
158
|
+
setStatusMessage(message?: string | undefined): void;
|
|
159
|
+
setProgressPct(pct: number): void;
|
|
160
|
+
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>> & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
|
|
161
|
+
name: import("mobx-state-tree").ISimpleType<string>;
|
|
162
|
+
statusMessage: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
163
|
+
progressPct: import("mobx-state-tree").ISimpleType<number>;
|
|
164
|
+
}, {
|
|
165
|
+
cancelCallback(): void;
|
|
166
|
+
} & {
|
|
167
|
+
setCancelCallback(cancelCallback: () => void): void;
|
|
168
|
+
setStatusMessage(message?: string | undefined): void;
|
|
169
|
+
setProgressPct(pct: number): void;
|
|
170
|
+
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>>;
|
|
138
171
|
removeQueuedJob(jobName: string): {
|
|
139
172
|
name: string;
|
|
140
173
|
statusMessage: string | undefined;
|
|
@@ -9,7 +9,7 @@ exports.Job = mobx_state_tree_1.types
|
|
|
9
9
|
statusMessage: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
|
|
10
10
|
progressPct: mobx_state_tree_1.types.number,
|
|
11
11
|
})
|
|
12
|
-
.volatile(
|
|
12
|
+
.volatile(() => ({
|
|
13
13
|
cancelCallback() { },
|
|
14
14
|
}))
|
|
15
15
|
.actions(self => ({
|
|
@@ -23,7 +23,7 @@ exports.Job = mobx_state_tree_1.types
|
|
|
23
23
|
self.progressPct = pct;
|
|
24
24
|
},
|
|
25
25
|
}));
|
|
26
|
-
function f(
|
|
26
|
+
function f(_pluginManager) {
|
|
27
27
|
return mobx_state_tree_1.types
|
|
28
28
|
.model('JobsListModel', {
|
|
29
29
|
id: mst_1.ElementId,
|
|
@@ -31,6 +31,7 @@ function f(pluginManager) {
|
|
|
31
31
|
jobs: mobx_state_tree_1.types.array(exports.Job),
|
|
32
32
|
finished: mobx_state_tree_1.types.array(exports.Job),
|
|
33
33
|
queued: mobx_state_tree_1.types.array(exports.Job),
|
|
34
|
+
aborted: mobx_state_tree_1.types.array(exports.Job),
|
|
34
35
|
})
|
|
35
36
|
.actions(self => ({
|
|
36
37
|
addJob(job) {
|
|
@@ -54,6 +55,10 @@ function f(pluginManager) {
|
|
|
54
55
|
self.queued.push(job);
|
|
55
56
|
return self.finished;
|
|
56
57
|
},
|
|
58
|
+
addAbortedJob(job) {
|
|
59
|
+
self.aborted.push(job);
|
|
60
|
+
return self.aborted;
|
|
61
|
+
},
|
|
57
62
|
removeQueuedJob(jobName) {
|
|
58
63
|
const indx = self.queued.findIndex(job => job.name === jobName);
|
|
59
64
|
const removed = self.queued[indx];
|
package/dist/index.js
CHANGED
|
@@ -42,7 +42,7 @@ class default_1 extends Plugin_1.default {
|
|
|
42
42
|
pluginManager.addWidgetType(() => {
|
|
43
43
|
return new WidgetType_1.default({
|
|
44
44
|
name: 'JobsListWidget',
|
|
45
|
-
heading: '
|
|
45
|
+
heading: 'Jobs list',
|
|
46
46
|
configSchema: JobsListWidget_1.configSchema,
|
|
47
47
|
stateModel: (0, JobsListWidget_1.stateModelFactory)(pluginManager),
|
|
48
48
|
ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../../jobs-management/src/JobsListWidget/components/JobsListWidget')))),
|
|
@@ -60,6 +60,7 @@ class default_1 extends Plugin_1.default {
|
|
|
60
60
|
let jobStatusWidget = widgets.get('JobsList');
|
|
61
61
|
if (!jobStatusWidget) {
|
|
62
62
|
jobStatusWidget = session.addWidget('JobsListWidget', 'JobsList');
|
|
63
|
+
session.showWidget(jobStatusWidget);
|
|
63
64
|
}
|
|
64
65
|
else {
|
|
65
66
|
session.showWidget(jobStatusWidget);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { NewJob } from '../model';
|
|
3
|
-
declare
|
|
3
|
+
declare const CurrentJobCard: ({ job, }: {
|
|
4
4
|
job: NewJob;
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
export default _default;
|
|
5
|
+
}) => React.JSX.Element;
|
|
6
|
+
export default CurrentJobCard;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
2
|
import { observer } from 'mobx-react';
|
|
3
3
|
import { Box, Button, Card, CardActions, CardContent, LinearProgress, Typography, } from '@mui/material';
|
|
4
|
-
function CurrentJobCard({ job }) {
|
|
4
|
+
const CurrentJobCard = observer(function CurrentJobCard({ job, }) {
|
|
5
5
|
const [clicked, setClicked] = useState(false);
|
|
6
6
|
return (React.createElement(Card, { variant: "outlined" },
|
|
7
7
|
React.createElement(CardContent, null,
|
|
@@ -25,8 +25,9 @@ function CurrentJobCard({ job }) {
|
|
|
25
25
|
React.createElement(Typography, null, `${Math.round(job.progressPct || 0)}%`)))))),
|
|
26
26
|
job.cancelCallback ? (React.createElement(CardActions, null,
|
|
27
27
|
React.createElement(Button, { variant: "contained", color: "inherit", disabled: clicked || job.progressPct === 0, onClick: () => {
|
|
28
|
+
job.setStatusMessage('Aborted via cancel button');
|
|
28
29
|
job.cancelCallback && job.cancelCallback();
|
|
29
30
|
setClicked(true);
|
|
30
31
|
} }, "Cancel"))) : null));
|
|
31
|
-
}
|
|
32
|
-
export default
|
|
32
|
+
});
|
|
33
|
+
export default CurrentJobCard;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { NewJob } from '../model';
|
|
3
|
-
declare
|
|
3
|
+
declare const JobCard: ({ job }: {
|
|
4
4
|
job: NewJob;
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
export default _default;
|
|
5
|
+
}) => React.JSX.Element;
|
|
6
|
+
export default JobCard;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { observer } from 'mobx-react';
|
|
3
3
|
import { Card, CardContent, Typography } from '@mui/material';
|
|
4
|
-
function JobCard({ job }) {
|
|
4
|
+
const JobCard = observer(function JobCard({ job }) {
|
|
5
5
|
return (React.createElement(Card, { variant: "outlined" },
|
|
6
6
|
React.createElement(CardContent, null,
|
|
7
7
|
React.createElement(Typography, { variant: "body1" },
|
|
8
8
|
React.createElement("strong", null, 'Name: '),
|
|
9
|
-
job.name)
|
|
10
|
-
}
|
|
11
|
-
|
|
9
|
+
job.name),
|
|
10
|
+
job.statusMessage ? (React.createElement(Typography, { variant: "body1" },
|
|
11
|
+
React.createElement("strong", null, 'Message: '),
|
|
12
|
+
job.statusMessage)) : null)));
|
|
13
|
+
});
|
|
14
|
+
export default JobCard;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { JobsListModel } from '../model';
|
|
3
|
-
declare
|
|
3
|
+
declare const JobsListWidget: ({ model }: {
|
|
4
4
|
model: JobsListModel;
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
export default _default;
|
|
5
|
+
}) => React.JSX.Element;
|
|
6
|
+
export default JobsListWidget;
|
|
@@ -13,29 +13,17 @@ const useStyles = makeStyles()(theme => ({
|
|
|
13
13
|
expandIcon: {
|
|
14
14
|
color: theme.palette.tertiary.contrastText,
|
|
15
15
|
},
|
|
16
|
-
button: {
|
|
17
|
-
marginTop: theme.spacing(1),
|
|
18
|
-
marginRight: theme.spacing(1),
|
|
19
|
-
},
|
|
20
|
-
adminBadge: {
|
|
21
|
-
margin: '0.5em',
|
|
22
|
-
borderRadius: 3,
|
|
23
|
-
backgroundColor: theme.palette.quaternary.main,
|
|
24
|
-
padding: '1em',
|
|
25
|
-
display: 'flex',
|
|
26
|
-
alignContent: 'center',
|
|
27
|
-
},
|
|
28
16
|
}));
|
|
29
|
-
|
|
17
|
+
const JobsListWidget = observer(function ({ model }) {
|
|
30
18
|
const { classes } = useStyles();
|
|
31
|
-
const { jobs, finished, queued } = model;
|
|
19
|
+
const { jobs, finished, queued, aborted } = model;
|
|
32
20
|
return (React.createElement("div", { className: classes.root },
|
|
33
21
|
React.createElement(Accordion, { defaultExpanded: true },
|
|
34
22
|
React.createElement(AccordionSummary, { expandIcon: React.createElement(ExpandMoreIcon, { className: classes.expandIcon }) },
|
|
35
|
-
React.createElement(Typography, { variant: "h5" }, "
|
|
23
|
+
React.createElement(Typography, { variant: "h5" }, "Running jobs")),
|
|
36
24
|
jobs.length ? (jobs.map((job, index) => (React.createElement(CurrentJobCard, { job: job, key: `${JSON.stringify(job)}-${index}` })))) : (React.createElement(Card, { variant: "outlined" },
|
|
37
25
|
React.createElement(CardContent, null,
|
|
38
|
-
React.createElement(Typography, { variant: "body1" }, "No jobs"))))),
|
|
26
|
+
React.createElement(Typography, { variant: "body1" }, "No running jobs"))))),
|
|
39
27
|
React.createElement(Accordion, { defaultExpanded: true },
|
|
40
28
|
React.createElement(AccordionSummary, { expandIcon: React.createElement(ExpandMoreIcon, { className: classes.expandIcon }) },
|
|
41
29
|
React.createElement(Typography, { variant: "h5" }, "Queued jobs")),
|
|
@@ -44,9 +32,15 @@ function JobsListWidget({ model }) {
|
|
|
44
32
|
React.createElement(Typography, { variant: "body1" }, "No queued jobs"))))),
|
|
45
33
|
React.createElement(Accordion, { defaultExpanded: true },
|
|
46
34
|
React.createElement(AccordionSummary, { expandIcon: React.createElement(ExpandMoreIcon, { className: classes.expandIcon }) },
|
|
47
|
-
React.createElement(Typography, { variant: "h5" }, "
|
|
35
|
+
React.createElement(Typography, { variant: "h5" }, "Completed jobs")),
|
|
48
36
|
finished.length ? (finished.map((job, index) => (React.createElement(JobCard, { key: `${JSON.stringify(job)}-${index}`, job: job })))) : (React.createElement(Card, { variant: "outlined" },
|
|
49
37
|
React.createElement(CardContent, null,
|
|
50
|
-
React.createElement(Typography, { variant: "body1" }, "No jobs
|
|
51
|
-
}
|
|
52
|
-
|
|
38
|
+
React.createElement(Typography, { variant: "body1" }, "No completed jobs"))))),
|
|
39
|
+
React.createElement(Accordion, { defaultExpanded: true },
|
|
40
|
+
React.createElement(AccordionSummary, { expandIcon: React.createElement(ExpandMoreIcon, { className: classes.expandIcon }) },
|
|
41
|
+
React.createElement(Typography, { variant: "h5" }, "Aborted jobs")),
|
|
42
|
+
aborted.length ? (aborted.map((job, index) => (React.createElement(JobCard, { key: `${JSON.stringify(job)}-${index}`, job: job })))) : (React.createElement(Card, { variant: "outlined" },
|
|
43
|
+
React.createElement(CardContent, null,
|
|
44
|
+
React.createElement(Typography, { variant: "body1" }, "No aborted jobs")))))));
|
|
45
|
+
});
|
|
46
|
+
export default JobsListWidget;
|
|
@@ -13,8 +13,9 @@ export declare const Job: import("mobx-state-tree").IModelType<{
|
|
|
13
13
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
14
14
|
export interface NewJob extends SnapshotIn<typeof Job> {
|
|
15
15
|
cancelCallback(): void;
|
|
16
|
+
setStatusMessage(msg?: string): void;
|
|
16
17
|
}
|
|
17
|
-
export default function f(
|
|
18
|
+
export default function f(_pluginManager: PluginManager): import("mobx-state-tree").IModelType<{
|
|
18
19
|
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
19
20
|
type: import("mobx-state-tree").ISimpleType<"JobsListWidget">;
|
|
20
21
|
jobs: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
|
|
@@ -50,6 +51,17 @@ export default function f(pluginManager: PluginManager): import("mobx-state-tree
|
|
|
50
51
|
setStatusMessage(message?: string | undefined): void;
|
|
51
52
|
setProgressPct(pct: number): void;
|
|
52
53
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
54
|
+
aborted: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
|
|
55
|
+
name: import("mobx-state-tree").ISimpleType<string>;
|
|
56
|
+
statusMessage: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
57
|
+
progressPct: import("mobx-state-tree").ISimpleType<number>;
|
|
58
|
+
}, {
|
|
59
|
+
cancelCallback(): void;
|
|
60
|
+
} & {
|
|
61
|
+
setCancelCallback(cancelCallback: () => void): void;
|
|
62
|
+
setStatusMessage(message?: string | undefined): void;
|
|
63
|
+
setProgressPct(pct: number): void;
|
|
64
|
+
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
53
65
|
}, {
|
|
54
66
|
addJob(job: NewJob): {
|
|
55
67
|
name: string;
|
|
@@ -135,6 +147,27 @@ export default function f(pluginManager: PluginManager): import("mobx-state-tree
|
|
|
135
147
|
setStatusMessage(message?: string | undefined): void;
|
|
136
148
|
setProgressPct(pct: number): void;
|
|
137
149
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>>;
|
|
150
|
+
addAbortedJob(job: NewJob): import("mobx-state-tree").IMSTArray<import("mobx-state-tree").IModelType<{
|
|
151
|
+
name: import("mobx-state-tree").ISimpleType<string>;
|
|
152
|
+
statusMessage: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
153
|
+
progressPct: import("mobx-state-tree").ISimpleType<number>;
|
|
154
|
+
}, {
|
|
155
|
+
cancelCallback(): void;
|
|
156
|
+
} & {
|
|
157
|
+
setCancelCallback(cancelCallback: () => void): void;
|
|
158
|
+
setStatusMessage(message?: string | undefined): void;
|
|
159
|
+
setProgressPct(pct: number): void;
|
|
160
|
+
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>> & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
|
|
161
|
+
name: import("mobx-state-tree").ISimpleType<string>;
|
|
162
|
+
statusMessage: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
163
|
+
progressPct: import("mobx-state-tree").ISimpleType<number>;
|
|
164
|
+
}, {
|
|
165
|
+
cancelCallback(): void;
|
|
166
|
+
} & {
|
|
167
|
+
setCancelCallback(cancelCallback: () => void): void;
|
|
168
|
+
setStatusMessage(message?: string | undefined): void;
|
|
169
|
+
setProgressPct(pct: number): void;
|
|
170
|
+
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>>;
|
|
138
171
|
removeQueuedJob(jobName: string): {
|
|
139
172
|
name: string;
|
|
140
173
|
statusMessage: string | undefined;
|
|
@@ -6,7 +6,7 @@ export const Job = types
|
|
|
6
6
|
statusMessage: types.maybe(types.string),
|
|
7
7
|
progressPct: types.number,
|
|
8
8
|
})
|
|
9
|
-
.volatile(
|
|
9
|
+
.volatile(() => ({
|
|
10
10
|
cancelCallback() { },
|
|
11
11
|
}))
|
|
12
12
|
.actions(self => ({
|
|
@@ -20,7 +20,7 @@ export const Job = types
|
|
|
20
20
|
self.progressPct = pct;
|
|
21
21
|
},
|
|
22
22
|
}));
|
|
23
|
-
export default function f(
|
|
23
|
+
export default function f(_pluginManager) {
|
|
24
24
|
return types
|
|
25
25
|
.model('JobsListModel', {
|
|
26
26
|
id: ElementId,
|
|
@@ -28,6 +28,7 @@ export default function f(pluginManager) {
|
|
|
28
28
|
jobs: types.array(Job),
|
|
29
29
|
finished: types.array(Job),
|
|
30
30
|
queued: types.array(Job),
|
|
31
|
+
aborted: types.array(Job),
|
|
31
32
|
})
|
|
32
33
|
.actions(self => ({
|
|
33
34
|
addJob(job) {
|
|
@@ -51,6 +52,10 @@ export default function f(pluginManager) {
|
|
|
51
52
|
self.queued.push(job);
|
|
52
53
|
return self.finished;
|
|
53
54
|
},
|
|
55
|
+
addAbortedJob(job) {
|
|
56
|
+
self.aborted.push(job);
|
|
57
|
+
return self.aborted;
|
|
58
|
+
},
|
|
54
59
|
removeQueuedJob(jobName) {
|
|
55
60
|
const indx = self.queued.findIndex(job => job.name === jobName);
|
|
56
61
|
const removed = self.queued[indx];
|
package/esm/index.js
CHANGED
|
@@ -14,7 +14,7 @@ export default class extends Plugin {
|
|
|
14
14
|
pluginManager.addWidgetType(() => {
|
|
15
15
|
return new WidgetType({
|
|
16
16
|
name: 'JobsListWidget',
|
|
17
|
-
heading: '
|
|
17
|
+
heading: 'Jobs list',
|
|
18
18
|
configSchema: JobsListConfigSchema,
|
|
19
19
|
stateModel: JobsListStateModelFactory(pluginManager),
|
|
20
20
|
ReactComponent: lazy(() => import('../../jobs-management/src/JobsListWidget/components/JobsListWidget')),
|
|
@@ -32,6 +32,7 @@ export default class extends Plugin {
|
|
|
32
32
|
let jobStatusWidget = widgets.get('JobsList');
|
|
33
33
|
if (!jobStatusWidget) {
|
|
34
34
|
jobStatusWidget = session.addWidget('JobsListWidget', 'JobsList');
|
|
35
|
+
session.showWidget(jobStatusWidget);
|
|
35
36
|
}
|
|
36
37
|
else {
|
|
37
38
|
session.showWidget(jobStatusWidget);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-jobs-management",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.0",
|
|
4
4
|
"description": "JBrowse 2 jobs management",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -36,14 +36,14 @@
|
|
|
36
36
|
"clean": "rimraf dist esm *.tsbuildinfo"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@jbrowse/text-indexing": "^2.
|
|
39
|
+
"@jbrowse/text-indexing": "^2.7.0",
|
|
40
40
|
"@mui/icons-material": "^5.0.0"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
43
43
|
"@jbrowse/core": "^2.0.0",
|
|
44
44
|
"@mui/material": "^5.0.0",
|
|
45
45
|
"mobx": "^6.0.0",
|
|
46
|
-
"mobx-react": "^
|
|
46
|
+
"mobx-react": "^9.0.0",
|
|
47
47
|
"mobx-state-tree": "^5.0.0",
|
|
48
48
|
"react": ">=16.8.0",
|
|
49
49
|
"tss-react": "^4.0.0"
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"publishConfig": {
|
|
55
55
|
"access": "public"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "dbe7fb1af01fc89f833d2744635eb44a17365b41"
|
|
58
58
|
}
|