@hawtio/react
Version:
A Hawtio reimplementation based on TypeScript + React.
902 lines (806 loc) • 50.5 kB
JavaScript
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
var _chunkOJIIWKORjs = require('./chunk-OJIIWKOR.js');
var _chunkHS42NURZjs = require('./chunk-HS42NURZ.js');
require('./chunk-BLJGIIMV.js');
require('./chunk-WYFZRJ4C.js');
var _chunkBJ6TSPQKjs = require('./chunk-BJ6TSPQK.js');
var _chunkBHIEXRGKjs = require('./chunk-BHIEXRGK.js');
// src/plugins/quartz/Quartz.tsx
var _reactcore = require('@patternfly/react-core');
var _reactsplit = require('react-split'); var _reactsplit2 = _interopRequireDefault(_reactsplit);
// src/plugins/quartz/QuartzContent.tsx
var _cubesicon = require('@patternfly/react-icons/dist/esm/icons/cubes-icon');
var _react = require('react'); var _react2 = _interopRequireDefault(_react);
var _reactrouterdom = require('react-router-dom');
// src/plugins/quartz/context.ts
// src/plugins/quartz/icons/quartz.png
var quartz_default = "data:image/png;base64,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";
// src/plugins/quartz/icons/index.tsx
var _jsxruntime = require('react/jsx-runtime');
var QuartzIcon = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "img", { src: quartz_default, alt: "quartz" });
// src/plugins/quartz/context.ts
function useQuartz() {
const [tree, setTree] = _react.useState.call(void 0, _chunkBJ6TSPQKjs.MBeanTree.createEmpty(_chunkHS42NURZjs.pluginName3));
const { selectedNode, setSelectedNode } = _react.useContext.call(void 0, _chunkBJ6TSPQKjs.PluginNodeSelectionContext);
const [loaded, setLoaded] = _react.useState.call(void 0, false);
const selectedNodeRef = _react.useRef.call(void 0, selectedNode);
const populateTree = async () => {
_chunkHS42NURZjs.log3.debug("Populate Quartz tree");
const schedulers = (await _chunkHS42NURZjs.quartzService.searchSchedulers()).map((node) => {
const scheduler = node.copyTo(_nullishCoalesce(node.getProperty("name"), () => ( node.name)));
scheduler.icon = QuartzIcon;
return scheduler;
});
_chunkHS42NURZjs.log3.debug("Found schedulers:", schedulers);
const newTree = _chunkBJ6TSPQKjs.MBeanTree.createFromNodes(_chunkHS42NURZjs.pluginName3, schedulers);
setTree(newTree);
if (!selectedNodeRef.current) {
selectedNodeRef.current = _nullishCoalesce(schedulers[0], () => ( null));
}
let newSelected = null;
newTree.forEach(_nullishCoalesce(_optionalChain([selectedNodeRef, 'access', _ => _.current, 'optionalAccess', _2 => _2.path, 'call', _3 => _3()]), () => ( [])), (node) => {
node.defaultExpanded = true;
newSelected = node;
});
setSelectedNode(newSelected);
};
_react.useEffect.call(void 0, () => {
const loadTree = async () => {
await populateTree();
setLoaded(true);
};
const listener = () => {
setLoaded(false);
loadTree();
};
_chunkBHIEXRGKjs.eventService.onRefresh(listener);
loadTree();
return () => _chunkBHIEXRGKjs.eventService.removeListener(_chunkBHIEXRGKjs.EVENT_REFRESH, listener);
}, []);
return { tree, loaded, selectedNode, setSelectedNode };
}
var QuartzContext = _react.createContext.call(void 0, {
tree: _chunkBJ6TSPQKjs.MBeanTree.createEmpty(_chunkHS42NURZjs.pluginName3),
selectedNode: null,
setSelectedNode: () => {
}
});
// src/plugins/quartz/jobs/Jobs.tsx
var _deprecated = require('@patternfly/react-core/deprecated');
var _reacttable = require('@patternfly/react-table');
var Jobs = () => {
const { selectedNode } = _react.useContext.call(void 0, QuartzContext);
const [jobs, setJobs] = _react.useState.call(void 0, []);
const [isReading, setIsReading] = _react.useState.call(void 0, true);
const [isDetailOpen, setIsDetailOpen] = _react.useState.call(void 0, false);
const [selectedJob, setSelectedJob] = _react.useState.call(void 0, null);
_react.useEffect.call(void 0, () => {
if (!selectedNode || !selectedNode.mbean || !selectedNode.objectName) {
return;
}
setIsReading(true);
const { objectName } = selectedNode;
const loadJobs = async () => {
const jobs2 = await _chunkHS42NURZjs.quartzService.loadJobs(objectName);
setJobs(jobs2);
setIsReading(false);
};
loadJobs();
_chunkHS42NURZjs.quartzService.registerJobsLoad(objectName, (jobs2) => {
setJobs(jobs2);
});
return () => _chunkHS42NURZjs.quartzService.unregisterAll();
}, [selectedNode]);
if (!selectedNode || !selectedNode.mbean || !selectedNode.objectName) {
return null;
}
if (isReading) {
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBJ6TSPQKjs.HawtioLoadingCard, {});
}
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react2.default.Fragment, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_chunkOJIIWKORjs.FilteredTable,
{
classPrefix: "quartz-jobs",
rows: jobs,
highlightSearch: true,
tableColumns: [
{
name: "Group",
key: "group",
percentageWidth: 20
},
{
name: "Name",
key: "name",
percentageWidth: 10
},
{
name: "Durable",
key: "durability",
percentageWidth: 10
},
{
name: "Recover",
key: "shouldRecover",
percentageWidth: 10
},
{
name: "Job Class Name",
key: "jobClass",
percentageWidth: 20
},
{
name: "Description",
key: "description",
percentageWidth: 20,
hideValues: ["null"]
}
],
fixedSearchCategories: [
{
name: "Durable",
key: "durability",
values: ["true", "false"]
},
{
name: "Recover",
key: "shouldRecover",
values: ["true", "false"]
}
],
searchCategories: [
{
name: "Group",
key: "group"
},
{
name: "Name",
key: "name"
},
{
name: "Job Class",
key: "jobClass"
},
{
name: "Description",
key: "description"
}
],
onClick: (row) => {
setSelectedJob(row);
setIsDetailOpen(true);
}
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
JobDetailModal,
{
isOpen: isDetailOpen,
onClose: () => {
setIsDetailOpen(false);
setSelectedJob(null);
},
input: selectedJob
}
)
] });
};
var JobDetailModal = ({ isOpen, onClose, input }) => {
if (!input) {
return null;
}
const { group, name, jobDataMap } = input;
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_deprecated.Modal,
{
id: "quartz-jobs-detail-modal",
variant: "medium",
title: `Job Detail: ${group}/${name}`,
isOpen,
onClose,
actions: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Button, { variant: "primary", onClick: onClose, children: "Close" }, "close")
],
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reacttable.Table, { id: "quartz-jobs-detail-table", variant: "compact", "aria-label": "Job Detail Table", isStriped: true, children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reacttable.Thead, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reacttable.Tr, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reacttable.Th, { children: "Key" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reacttable.Th, { children: "Value" })
] }) }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reacttable.Tbody, { children: Object.entries(jobDataMap).map(([key, value], index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reacttable.Tr, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reacttable.Td, { children: key }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reacttable.Td, { children: value })
] }, index)) })
] })
}
);
};
// src/plugins/quartz/scheduler/Scheduler.tsx
var _checkcircleicon = require('@patternfly/react-icons/dist/esm/icons/check-circle-icon');
var _pausecircleicon = require('@patternfly/react-icons/dist/esm/icons/pause-circle-icon');
var _jolokiajs = require('jolokia.js'); var _jolokiajs2 = _interopRequireDefault(_jolokiajs);
var Scheduler = () => {
const { selectedNode } = _react.useContext.call(void 0, QuartzContext);
const [attributes, setAttributes] = _react.useState.call(void 0, {});
const [isReading, setIsReading] = _react.useState.call(void 0, true);
const [reload, setReload] = _react.useState.call(void 0, false);
_react.useEffect.call(void 0, () => {
if (!selectedNode || !selectedNode.objectName) {
return;
}
setIsReading(true);
const { objectName: objectName2 } = selectedNode;
_chunkBJ6TSPQKjs.attributeService.readWithCallback(objectName2, (attrs) => {
setAttributes(attrs);
setIsReading(false);
});
_chunkBJ6TSPQKjs.attributeService.register({ type: "read", mbean: objectName2 }, (response) => {
if (_jolokiajs2.default.isResponseFetchError(response)) {
_chunkHS42NURZjs.log3.warn("Scheduler - Attributes (fetch error):", response);
return;
}
if (_jolokiajs2.default.isError(response)) {
_chunkHS42NURZjs.log3.warn("Scheduler - Attributes (Jolokia error):", response.error);
return;
}
_chunkHS42NURZjs.log3.debug("Scheduler - Attributes:", response.value);
setAttributes(response.value);
});
return () => _chunkBJ6TSPQKjs.attributeService.unregisterAll();
}, [selectedNode]);
_react.useEffect.call(void 0, () => {
if (!selectedNode || !selectedNode.objectName || !reload) {
return;
}
_chunkHS42NURZjs.log3.debug("Reload scheduler attributes");
setIsReading(true);
const { objectName: objectName2 } = selectedNode;
_chunkBJ6TSPQKjs.attributeService.readWithCallback(objectName2, (attrs) => {
setAttributes(attrs);
setIsReading(false);
});
setReload(false);
}, [selectedNode, reload]);
if (!selectedNode || !selectedNode.objectName) {
return null;
}
if (isReading) {
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBJ6TSPQKjs.HawtioLoadingCard, {});
}
const { name, objectName } = selectedNode;
const canStartPauseScheduler = () => {
return selectedNode.hasInvokeRights(_chunkHS42NURZjs.QUARTZ_OPERATIONS.start, _chunkHS42NURZjs.QUARTZ_OPERATIONS.standby);
};
const handleSchedulerSwitchChange = async (start) => {
await (start ? _chunkHS42NURZjs.quartzService.start(name, objectName) : _chunkHS42NURZjs.quartzService.pause(name, objectName));
setReload(true);
};
const canUpdateSampleStatisticsEnabled = () => {
return selectedNode.hasInvokeRights(_chunkHS42NURZjs.QUARTZ_OPERATIONS.start, _chunkHS42NURZjs.QUARTZ_OPERATIONS.standby);
};
const handleSampledStatisticsSwitchChange = async (value) => {
await _chunkHS42NURZjs.quartzService.updateSampleStatisticsEnabled(name, objectName, value);
setReload(true);
};
const scheduler = {
// scheduler
started: attributes["Started"],
name: attributes["SchedulerName"],
instance: attributes["SchedulerInstanceId"],
version: attributes["Version"],
jobStoreClassName: attributes["JobStoreClassName"],
threadPoolClassName: attributes["ThreadPoolClassName"],
threadPoolSize: attributes["ThreadPoolSize"],
// sampled statistics
sampledStatisticsEnabled: attributes["SampledStatisticsEnabled"],
jobsCompleted: attributes["JobsCompletedMostRecentSample"],
jobsExecuted: attributes["JobsExecutedMostRecentSample"],
jobsScheduled: attributes["JobsScheduledMostRecentSample"]
};
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.Stack, { id: "quartz-scheduler", hasGutter: true, children: [
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.Card, { id: "quartz-scheduler-main", isPlain: true, children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.CardHeader,
{
actions: {
actions: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.Switch,
{
id: "quartz-scheduler-main-switch",
label: "Started",
isChecked: scheduler.started,
isDisabled: !canStartPauseScheduler(),
onChange: (_event, start) => handleSchedulerSwitchChange(start),
isReversed: true
}
),
hasNoOffset: false
},
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.CardTitle, { children: [
scheduler.started ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Icon, { status: "success", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _checkcircleicon.CheckCircleIcon, {}) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Icon, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _pausecircleicon.PauseCircleIcon, {}) }),
"Scheduler"
] })
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.CardBody, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionList, { isCompact: true, isHorizontal: true, children: [
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "Name" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: scheduler.name })
] }),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "Instance" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: scheduler.instance })
] }),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "Version" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: scheduler.version })
] }),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "Job store class name" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: scheduler.jobStoreClassName })
] }),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "Thread pool class name" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: scheduler.threadPoolClassName })
] }),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "Thread pool size" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: scheduler.threadPoolSize })
] })
] }) })
] }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Divider, {}),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.Card, { id: "quartz-scheduler-statistics", isPlain: true, children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.CardHeader,
{
actions: {
actions: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.Switch,
{
id: "quartz-scheduler-statistics-switch",
label: "Enabled",
isChecked: scheduler.sampledStatisticsEnabled,
isDisabled: !canUpdateSampleStatisticsEnabled(),
onChange: (_event, value) => handleSampledStatisticsSwitchChange(value),
isReversed: true
}
),
hasNoOffset: false,
className: void 0
},
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.CardTitle, { children: [
scheduler.sampledStatisticsEnabled ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Icon, { status: "success", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _checkcircleicon.CheckCircleIcon, {}) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Icon, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _pausecircleicon.PauseCircleIcon, {}) }),
"Sampled Statistics (Most Recent Samples)"
] })
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.CardBody, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionList, { isCompact: true, isHorizontal: true, children: [
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "Jobs completed" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: scheduler.jobsCompleted })
] }),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "Jobs executed" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: scheduler.jobsExecuted })
] }),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "Jobs scheduled" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: scheduler.jobsScheduled })
] })
] }) })
] })
] });
};
// src/plugins/quartz/triggers/Triggers.tsx
// src/plugins/quartz/triggers/TriggersManualModal.tsx
var TriggersManualModal = ({ isOpen, onClose, input }) => {
const { selectedNode } = _react.useContext.call(void 0, QuartzContext);
const [parameters, setParameters] = _react.useState.call(void 0, "{}");
if (!selectedNode || !selectedNode.objectName) {
return null;
}
const { objectName } = selectedNode;
const { name, group, jobName, jobGroup } = input;
const fireTrigger = () => {
_chunkHS42NURZjs.log3.info("Manually fire trigger:", objectName, input, parameters);
_chunkHS42NURZjs.quartzService.triggerJob(objectName, jobName, jobGroup, parameters);
clear();
};
const clear = () => {
setParameters("{}");
onClose();
};
const manualTriggerButtons = [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Button, { variant: "danger", form: "quartz-triggers-manual-modal-form", onClick: fireTrigger, children: "Fire now" }, "fire"),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Button, { variant: "link", onClick: clear, children: "Cancel" }, "cancel")
];
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_deprecated.Modal,
{
id: "quartz-triggers-manual-modal",
variant: "medium",
title: `Manually Fire Trigger: ${group}/${name}`,
isOpen,
onClose: clear,
actions: manualTriggerButtons,
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.Form, { id: "quartz-triggers-manual-modal-form", isHorizontal: true, children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.FormGroup, { label: "Name", fieldId: "quartz-triggers-manual-modal-form-name", children: name }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.FormGroup, { label: "Group", fieldId: "quartz-triggers-manual-modal-form-group", children: group }),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.FormGroup, { label: "Parameters", fieldId: "quartz-triggers-manual-modal-form-parameters", children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.TextArea,
{
id: "quartz-triggers-manual-modal-form-parameters-input",
"aria-label": "quartz triggers manual modal form parameters",
resizeOrientation: "vertical",
value: parameters,
onChange: (_event, value) => setParameters(value)
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.FormHelperText, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.HelperText, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.HelperTextItem, { children: ["Parameters if any (", /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "code", { children: "java.util.Map" }, 1), " in JSON syntax)"] }) }) })
] })
] })
}
);
};
// src/plugins/quartz/triggers/TriggersUpdateModal.tsx
var TriggersUpdateModal = ({ isOpen, onClose, input, reload }) => {
const { selectedNode } = _react.useContext.call(void 0, QuartzContext);
const [trigger, setTrigger] = _react.useState.call(void 0, input);
if (!selectedNode || !selectedNode.objectName) {
return null;
}
const { objectName } = selectedNode;
const isCron = input.type === "cron";
const isSimple = input.type === "simple";
const updateTrigger = async () => {
_chunkHS42NURZjs.log3.info("Update trigger:", objectName, trigger);
await _chunkHS42NURZjs.quartzService.updateTrigger(objectName, trigger);
reload();
onClose();
};
const clear = () => {
setTrigger(input);
onClose();
};
const updateTriggerButtons = [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Button, { variant: "primary", form: "quartz-triggers-update-modal-form", onClick: updateTrigger, children: "Update" }, "update"),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Button, { variant: "link", onClick: clear, children: "Cancel" }, "cancel")
];
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_deprecated.Modal,
{
id: "quartz-triggers-update-modal",
variant: "medium",
title: `Update Trigger: ${input.group}/${input.name}`,
isOpen,
onClose: clear,
actions: updateTriggerButtons,
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.Form, { id: "quartz-triggers-update-modal-form", isHorizontal: true, children: [
isCron && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.FormGroup, { label: "Cron expression", isRequired: true, fieldId: "quartz-triggers-update-modal-form-cron", children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.TextInput,
{
id: "quartz-triggers-update-modal-form-cron",
name: "quartz-triggers-update-modal-form-cron",
isRequired: true,
value: trigger.expression,
onChange: (_event, value) => setTrigger({ ...trigger, expression: value })
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.FormHelperText, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.HelperText, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.HelperTextItem, { children: "Specify a cron expression for the trigger" }) }) })
] }),
isSimple && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react2.default.Fragment, { children: [
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.FormGroup, { label: "Repeat count", isRequired: true, fieldId: "quartz-triggers-update-modal-form-repeat-count", children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.TextInput,
{
id: "quartz-triggers-update-modal-form-repeat-count",
name: "quartz-triggers-update-modal-form-repeat-count",
isRequired: true,
type: "number",
value: trigger.repeatCount,
onChange: (_event, value) => setTrigger({ ...trigger, repeatCount: parseInt(value) })
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.FormHelperText, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.HelperText, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.HelperTextItem, { children: "Number of times to repeat. Use -1 for forever" }) }) })
] }),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.FormGroup, { label: "Repeat interval", isRequired: true, fieldId: "quartz-triggers-update-modal-form-repeat-interval", children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.TextInput,
{
id: "quartz-triggers-update-modal-form-repeat-interval",
name: "quartz-triggers-update-modal-form-repeat-interval",
isRequired: true,
type: "number",
value: trigger.repeatInterval,
onChange: (_event, value) => setTrigger({ ...trigger, repeatInterval: parseInt(value) })
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.FormHelperText, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.HelperText, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.HelperTextItem, { children: "Elapsed time in millis between triggering" }) }) })
] })
] }),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.FormGroup, { label: "Misfire Instruction", isRequired: true, fieldId: "quartz-triggers-update-modal-form-misfire", children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.FormSelect,
{
id: "quartz-triggers-update-modal-form-misfire-select",
"aria-label": "Select Misfire Instruction",
value: trigger.misfireInstruction,
onChange: (_event, value) => setTrigger({ ...trigger, misfireInstruction: parseInt(value) }),
children: _chunkHS42NURZjs.misfireInstructions.map(({ value, label }, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.FormSelectOption, { value, label }, index))
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.FormHelperText, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.HelperText, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.HelperTextItem, { children: "What to do when misfiring happens" }) }) })
] })
] })
}
);
};
// src/plugins/quartz/triggers/Triggers.tsx
var Triggers = () => {
const { selectedNode } = _react.useContext.call(void 0, QuartzContext);
const [triggers, setTriggers] = _react.useState.call(void 0, []);
const [isReading, setIsReading] = _react.useState.call(void 0, true);
const [reload, setReload] = _react.useState.call(void 0, false);
const [isUpdateOpen, setIsUpdateOpen] = _react.useState.call(void 0, false);
const [isManualOpen, setIsManualOpen] = _react.useState.call(void 0, false);
_react.useEffect.call(void 0, () => {
if (!selectedNode || !selectedNode.objectName) {
return;
}
setIsReading(true);
const { objectName: objectName2 } = selectedNode;
const loadTriggers = async () => {
const triggers2 = await _chunkHS42NURZjs.quartzService.loadTriggers(objectName2);
setTriggers(triggers2);
setIsReading(false);
};
loadTriggers();
_chunkHS42NURZjs.quartzService.registerTriggersLoad(objectName2, (triggers2) => {
setTriggers(triggers2);
});
return () => _chunkHS42NURZjs.quartzService.unregisterAll();
}, [selectedNode]);
_react.useEffect.call(void 0, () => {
if (!selectedNode || !selectedNode.objectName || !reload) {
return;
}
_chunkHS42NURZjs.log3.debug("Reload triggers");
const { objectName: objectName2 } = selectedNode;
const loadTriggers = async () => {
const triggers2 = await _chunkHS42NURZjs.quartzService.loadTriggers(objectName2);
setTriggers(triggers2);
};
loadTriggers();
setReload(false);
}, [selectedNode, reload]);
if (!selectedNode || !selectedNode.objectName) {
return null;
}
if (isReading) {
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBJ6TSPQKjs.HawtioLoadingCard, {});
}
const triggerStates = ["NORMAL", "PAUSED"];
const { objectName } = selectedNode;
const triggerReload = () => setReload(true);
const canUpdateTrigger = () => {
return selectedNode.hasInvokeRights(
_chunkHS42NURZjs.QUARTZ_FACADE_OPERATIONS.updateCronTrigger,
_chunkHS42NURZjs.QUARTZ_FACADE_OPERATIONS.updateSimpleTrigger
);
};
const handleUpdateToggle = () => {
setIsUpdateOpen(!isUpdateOpen);
};
const canTriggerJob = () => {
return selectedNode.hasInvokeRights(_chunkHS42NURZjs.QUARTZ_OPERATIONS.triggerJob);
};
const handleManualToggle = () => {
setIsManualOpen(!isManualOpen);
};
const canPauseTrigger = () => {
return selectedNode.hasInvokeRights(_chunkHS42NURZjs.QUARTZ_OPERATIONS.pauseTrigger);
};
const pauseTrigger = async (trigger) => {
await _chunkHS42NURZjs.quartzService.pauseTrigger(objectName, trigger.name, trigger.group);
triggerReload();
};
const canResumeTrigger = () => {
return selectedNode.hasInvokeRights(_chunkHS42NURZjs.QUARTZ_OPERATIONS.resumeTrigger);
};
const resumeTrigger = async (trigger) => {
await _chunkHS42NURZjs.quartzService.resumeTrigger(objectName, trigger.name, trigger.group);
triggerReload();
};
const toMisfireText = (misfireInstruction) => {
return _nullishCoalesce(_optionalChain([_chunkHS42NURZjs.misfireInstructions, 'access', _4 => _4.find, 'call', _5 => _5(({ value }) => misfireInstruction === value), 'optionalAccess', _6 => _6.label]), () => ( "Unknown"));
};
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_chunkOJIIWKORjs.FilteredTable,
{
rows: triggers,
highlightSearch: true,
tableColumns: [
{
name: "State",
key: "state",
percentageWidth: 10,
renderer: ({ state }) => _optionalChain([state, 'optionalAccess', _7 => _7.toLowerCase, 'call', _8 => _8()]) === "normal" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Icon, { status: "success", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _checkcircleicon.CheckCircleIcon, {}) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Icon, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _pausecircleicon.PauseCircleIcon, {}) })
},
{
name: "Group",
key: "group",
percentageWidth: 10
},
{
name: "Name",
key: "name",
percentageWidth: 10
},
{
name: "Type",
key: "type",
percentageWidth: 10
},
{
name: "Expression",
key: "expression",
percentageWidth: 20
},
{
name: "Misfire Instruction",
key: "misfireInstruction",
percentageWidth: 15,
renderer: ({ misfireInstruction }) => toMisfireText(misfireInstruction)
},
{
name: "Previous Execution",
key: "previousFireTime",
percentageWidth: 15
},
{
name: "Next Execution",
key: "nextFireTime",
percentageWidth: 15
},
{
name: "Final execution",
key: "finalFireTime",
percentageWidth: 10,
hideValues: ["null"]
},
{
name: "Action",
percentageWidth: 10,
renderer: (row) => _optionalChain([row, 'access', _9 => _9.state, 'optionalAccess', _10 => _10.toLowerCase, 'call', _11 => _11()]) === "normal" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Button, { variant: "danger", size: "sm", onClick: () => pauseTrigger(row), isDisabled: !canPauseTrigger(), children: "Pause" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Button, { variant: "primary", size: "sm", onClick: () => resumeTrigger(row), isDisabled: !canResumeTrigger(), children: "Resume" })
},
{
isAction: true,
percentageWidth: 10,
renderer: (row) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reacttable.ActionsColumn,
{
items: [
{
title: "Update Trigger",
isDisabled: !canUpdateTrigger(),
onClick: handleUpdateToggle
},
{
title: "Trigger Manually",
isDisabled: !canTriggerJob(),
onClick: handleManualToggle
}
]
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
TriggersUpdateModal,
{
isOpen: isUpdateOpen,
onClose: handleUpdateToggle,
input: row,
reload: triggerReload
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, TriggersManualModal, { isOpen: isManualOpen, onClose: handleManualToggle, input: row })
] })
}
],
fixedSearchCategories: [
{
name: "State",
key: "state",
values: triggerStates
}
],
searchCategories: [
{
name: "Group",
key: "group"
},
{
name: "Name",
key: "name"
},
{
name: "Type",
key: "type"
}
]
}
);
};
// src/plugins/quartz/QuartzContent.tsx
var QuartzContent = () => {
const { tree, selectedNode } = _react.useContext.call(void 0, QuartzContext);
const { pathname, search } = _reactrouterdom.useLocation.call(void 0, );
if (tree.isEmpty()) {
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.PageSection, { hasBodyWrapper: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.EmptyState, { headingLevel: "h1", icon: _cubesicon.CubesIcon, titleText: "No Quartz schedulers found", variant: "full" }) });
}
if (!selectedNode) {
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.PageSection, { hasBodyWrapper: false, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.EmptyState, { headingLevel: "h1", icon: _cubesicon.CubesIcon, titleText: "No scheduler selected", variant: "full", children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.EmptyStateBody, { children: "The Quartz plugin allows you to see details about running Quartz Schedulers, and their associated triggers and jobs." }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.EmptyStateFooter, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.EmptyStateBody, { children: "Select a Quartz Scheduler in the tree to continue." }) })
] }) });
}
const navItems = [
{ id: "scheduler", title: "Scheduler", component: Scheduler },
{ id: "triggers", title: "Triggers", component: Triggers },
{ id: "jobs", title: "Jobs", component: Jobs },
{ id: "attributes", title: "Attributes", component: _chunkBJ6TSPQKjs.Attributes },
{ id: "operations", title: "Operations", component: _chunkBJ6TSPQKjs.Operations }
];
const nav = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Nav, { "aria-label": "Quartz Nav", variant: "horizontal-subnav", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.NavList, { children: navItems.map((nav2) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.NavItem, { isActive: pathname === `${_chunkHS42NURZjs.pluginPath3}/${nav2.id}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactrouterdom.NavLink, { to: { pathname: nav2.id, search }, children: nav2.title }) }, nav2.id)) }) });
const routes = navItems.map((nav2) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactrouterdom.Route, { path: nav2.id, element: _react2.default.createElement(nav2.component) }, nav2.id));
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.PageGroup, { id: "quartz-content", children: [
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.PageSection, { id: "quartz-content-header", hasBodyWrapper: false, children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Title, { headingLevel: "h1", children: selectedNode.name }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Content, { component: "small", children: selectedNode.objectName })
] }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.PageSection, { hasBodyWrapper: false, type: "tabs", children: nav }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.PageSection,
{
id: "quartz-content-main",
padding: { default: "noPadding" },
hasOverflowScroll: true,
"aria-label": "quartz-content-main",
hasBodyWrapper: false,
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactrouterdom.Routes, { children: [
routes,
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactrouterdom.Route, { path: "/", element: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate, { to: _nullishCoalesce(_optionalChain([navItems, 'access', _12 => _12[0], 'optionalAccess', _13 => _13.id]), () => ( "")) }) }, "root")
] })
}
)
] });
};
// src/plugins/quartz/QuartzTreeView.tsx
var QuartzTreeView = () => {
const { tree, selectedNode, setSelectedNode } = _react.useContext.call(void 0, QuartzContext);
const onSelect = (_event, item) => {
setSelectedNode(item);
};
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.TreeView,
{
id: "quartz-tree-view",
data: tree.getTree(),
hasGuides: true,
hasSelectableNodes: true,
activeItems: selectedNode ? [selectedNode] : [],
onSelect
}
);
};
// src/plugins/quartz/Quartz.tsx
var Quartz = () => {
const { tree, loaded, selectedNode, setSelectedNode } = useQuartz();
if (!loaded) {
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.PageSection, { hasBodyWrapper: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Spinner, { "aria-label": "Loading Quartz schedulers" }) });
}
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, QuartzContext.Provider, { value: { tree, selectedNode, setSelectedNode }, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactsplit2.default, { className: "quartz-split", sizes: [20, 80], minSize: 100, gutterSize: 5, children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { children: /* @__PURE__ */ _jsxruntime.jsx.c