import "./cronjob-details.scss"; import React from "react"; import kebabCase from "lodash/kebabCase"; import { observer } from "mobx-react"; import { Trans } from "@lingui/macro"; import { DrawerItem, DrawerTitle } from "../drawer"; import { Badge } from "../badge/badge"; import { jobStore } from "../+workloads-jobs/job.store"; import { Link } from "react-router-dom"; import { KubeEventDetails } from "../+events/kube-event-details"; import { cronJobStore } from "./cronjob.store"; import { getDetailsUrl } from "../../navigation"; import { KubeObjectDetailsProps } from "../kube-object"; import { CronJob, cronJobApi, Job } from "../../api/endpoints"; import { apiManager } from "../../api/api-manager"; import { KubeObjectMeta } from "../kube-object/kube-object-meta"; interface Props extends KubeObjectDetailsProps { } @observer export class CronJobDetails extends React.Component { async componentDidMount() { if (!jobStore.isLoaded) { jobStore.loadAll(); } } render() { const { object: cronJob } = this.props; if (!cronJob) return null; const childJobs = jobStore.getJobsByOwner(cronJob) return (
Schedule}> {cronJob.isNeverRun() ? ( <> never ({cronJob.getSchedule()}) ) : cronJob.getSchedule()} Active}> {cronJobStore.getActiveJobsNum(cronJob)} Suspend}> {cronJob.getSuspendFlag()} Last schedule}> {cronJob.getLastScheduleTime()} {childJobs.length > 0 && <> Jobs}/> {childJobs.map((job: Job) => { const selectors = job.getSelectors() const condition = job.getCondition() return (
{job.getName()}
Condition} className="conditions" labelsOnly> {condition && ( )} Selector} labelsOnly> { selectors.map(label => ) }
)}) } }
) } } apiManager.registerViews(cronJobApi, { Details: CronJobDetails, })