mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
cleanup Lens repo with tighter linting
Signed-off-by: Sebastian Malton <smalton@mirantis.com>
This commit is contained in:
1 parent
e468105143
commit
b1ff34879a
470 files changed
+8447
-7443
No files matched your search
@@ -21,16 +21,18 @@ interface Props extends KubeObjectDetailsProps<CronJob> {
|
||||
|
||||
@observer
|
||||
export class CronJobDetails extends React.Component<Props> {
|
||||
async componentDidMount() {
|
||||
async componentDidMount(): Promise<void> {
|
||||
if (!jobStore.isLoaded) {
|
||||
jobStore.loadAll();
|
||||
return jobStore.loadAll();
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
render(): JSX.Element {
|
||||
const { object: cronJob } = this.props;
|
||||
if (!cronJob) return null;
|
||||
const childJobs = jobStore.getJobsByOwner(cronJob)
|
||||
if (!cronJob) {
|
||||
return null;
|
||||
}
|
||||
const childJobs = jobStore.getJobsByOwner(cronJob);
|
||||
return (
|
||||
<div className="CronJobDetails">
|
||||
<KubeObjectMeta object={cronJob}/>
|
||||
@@ -54,8 +56,8 @@ export class CronJobDetails extends React.Component<Props> {
|
||||
<>
|
||||
<DrawerTitle title={<Trans>Jobs</Trans>}/>
|
||||
{childJobs.map((job: Job) => {
|
||||
const selectors = job.getSelectors()
|
||||
const condition = job.getCondition()
|
||||
const selectors = job.getSelectors();
|
||||
const condition = job.getCondition();
|
||||
return (
|
||||
<div className="job" key={job.getId()}>
|
||||
<div className="title">
|
||||
@@ -77,16 +79,17 @@ export class CronJobDetails extends React.Component<Props> {
|
||||
}
|
||||
</DrawerItem>
|
||||
</div>
|
||||
)})
|
||||
);
|
||||
})
|
||||
}
|
||||
</>
|
||||
}
|
||||
<KubeEventDetails object={cronJob}/>
|
||||
</div>
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
apiManager.registerViews(cronJobApi, {
|
||||
Details: CronJobDetails,
|
||||
})
|
||||
});
|
||||
@@ -3,28 +3,30 @@ import { autobind } from "../../utils";
|
||||
import { CronJob, cronJobApi } from "../../api/endpoints/cron-job.api";
|
||||
import { jobStore } from "../+workloads-jobs/job.store";
|
||||
import { apiManager } from "../../api/api-manager";
|
||||
import { Dictionary } from "lodash";
|
||||
|
||||
@autobind()
|
||||
export class CronJobStore extends KubeObjectStore<CronJob> {
|
||||
api = cronJobApi
|
||||
|
||||
getStatuses(cronJobs?: CronJob[]) {
|
||||
const status = { failed: 0, running: 0 }
|
||||
getStatuses(cronJobs?: CronJob[]): Dictionary<number> {
|
||||
const status = { failed: 0, running: 0 };
|
||||
cronJobs.forEach(cronJob => {
|
||||
if (cronJob.spec.suspend) {
|
||||
status.failed++
|
||||
status.failed++;
|
||||
} else {
|
||||
status.running++;
|
||||
}
|
||||
else {
|
||||
status.running++
|
||||
}
|
||||
})
|
||||
return status
|
||||
});
|
||||
return status;
|
||||
}
|
||||
|
||||
getActiveJobsNum(cronJob: CronJob) {
|
||||
getActiveJobsNum(cronJob: CronJob): number {
|
||||
// Active jobs are jobs without any condition 'Complete' nor 'Failed'
|
||||
const jobs = jobStore.getJobsByOwner(cronJob);
|
||||
if (!jobs.length) return 0;
|
||||
if (!jobs.length) {
|
||||
return 0;
|
||||
}
|
||||
return jobs.filter(job => !job.getCondition()).length;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,10 +9,11 @@ import { cronJobStore } from "./cronjob.store";
|
||||
import { jobStore } from "../+workloads-jobs/job.store";
|
||||
import { eventStore } from "../+events/event.store";
|
||||
import { KubeObjectMenu, KubeObjectMenuProps } from "../kube-object/kube-object-menu";
|
||||
import { ICronJobsRouteParams } from "../+workloads";
|
||||
import { CronJobsRouteParams } from "../+workloads";
|
||||
import { KubeObjectListLayout } from "../kube-object";
|
||||
import { KubeEventIcon } from "../+events/kube-event-icon";
|
||||
import { apiManager } from "../../api/api-manager";
|
||||
import { KubeEvent } from "client/api/endpoints/events.api";
|
||||
|
||||
enum sortBy {
|
||||
name = "name",
|
||||
@@ -23,27 +24,27 @@ enum sortBy {
|
||||
age = "age",
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<ICronJobsRouteParams> {
|
||||
interface Props extends RouteComponentProps<CronJobsRouteParams> {
|
||||
}
|
||||
|
||||
@observer
|
||||
export class CronJobs extends React.Component<Props> {
|
||||
render() {
|
||||
render(): JSX.Element {
|
||||
return (
|
||||
<KubeObjectListLayout
|
||||
className="CronJobs" store={cronJobStore}
|
||||
dependentStores={[jobStore, eventStore]}
|
||||
sortingCallbacks={{
|
||||
[sortBy.name]: (cronJob: CronJob) => cronJob.getName(),
|
||||
[sortBy.namespace]: (cronJob: CronJob) => cronJob.getNs(),
|
||||
[sortBy.suspend]: (cronJob: CronJob) => cronJob.getSuspendFlag(),
|
||||
[sortBy.active]: (cronJob: CronJob) => cronJobStore.getActiveJobsNum(cronJob),
|
||||
[sortBy.lastSchedule]: (cronJob: CronJob) => cronJob.getLastScheduleTime(),
|
||||
[sortBy.age]: (cronJob: CronJob) => cronJob.metadata.creationTimestamp,
|
||||
[sortBy.name]: (cronJob: CronJob): string => cronJob.getName(),
|
||||
[sortBy.namespace]: (cronJob: CronJob): string => cronJob.getNs(),
|
||||
[sortBy.suspend]: (cronJob: CronJob): string => cronJob.getSuspendFlag(),
|
||||
[sortBy.active]: (cronJob: CronJob): number => cronJobStore.getActiveJobsNum(cronJob),
|
||||
[sortBy.lastSchedule]: (cronJob: CronJob): string => cronJob.getLastScheduleTime(),
|
||||
[sortBy.age]: (cronJob: CronJob): string => cronJob.metadata.creationTimestamp,
|
||||
}}
|
||||
searchFilters={[
|
||||
(cronJob: CronJob) => cronJob.getSearchFields(),
|
||||
(cronJob: CronJob) => cronJob.getSchedule(),
|
||||
(cronJob: CronJob): string[] => cronJob.getSearchFields(),
|
||||
(cronJob: CronJob): string => cronJob.getSchedule(),
|
||||
]}
|
||||
renderHeaderTitle={<Trans>Cron Jobs</Trans>}
|
||||
renderTableHeader={[
|
||||
@@ -56,10 +57,12 @@ export class CronJobs extends React.Component<Props> {
|
||||
{ title: <Trans>Last schedule</Trans>, className: "last-schedule", sortBy: sortBy.lastSchedule },
|
||||
{ title: <Trans>Age</Trans>, className: "age", sortBy: sortBy.age },
|
||||
]}
|
||||
renderTableContents={(cronJob: CronJob) => [
|
||||
renderTableContents={(cronJob: CronJob): (string | number | JSX.Element)[] => [
|
||||
cronJob.getName(),
|
||||
<KubeEventIcon object={cronJob} filterEvents={events => {
|
||||
if (!cronJob.isNeverRun()) return events;
|
||||
<KubeEventIcon key="events" object={cronJob} filterEvents={(events): KubeEvent[] => {
|
||||
if (!cronJob.isNeverRun()) {
|
||||
return events;
|
||||
}
|
||||
return events.filter(event => event.reason != "FailedNeedsStart");
|
||||
}
|
||||
}/>,
|
||||
@@ -70,20 +73,20 @@ export class CronJobs extends React.Component<Props> {
|
||||
cronJob.getLastScheduleTime(),
|
||||
cronJob.getAge(),
|
||||
]}
|
||||
renderItemMenu={(item: CronJob) => {
|
||||
return <CronJobMenu object={item}/>
|
||||
renderItemMenu={(item: CronJob): JSX.Element => {
|
||||
return <CronJobMenu object={item}/>;
|
||||
}}
|
||||
/>
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export function CronJobMenu(props: KubeObjectMenuProps<CronJob>) {
|
||||
export function CronJobMenu(props: KubeObjectMenuProps<CronJob>): JSX.Element {
|
||||
return (
|
||||
<KubeObjectMenu {...props}/>
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
apiManager.registerViews(cronJobApi, {
|
||||
Menu: CronJobMenu,
|
||||
})
|
||||
});
|
||||
@@ -1,2 +1,2 @@
|
||||
export * from "./cronjobs"
|
||||
export * from "./cronjob-details"
|
||||
export * from "./cronjobs";
|
||||
export * from "./cronjob-details";
|
||||
Reference in new issue
Block a user