UNPKG

@hawtio/react

Version:

A Hawtio reimplementation based on TypeScript + React.

902 lines (806 loc) 50.5 kB
"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