cleanup Lens repo with tighter linting

Signed-off-by: Sebastian Malton <smalton@mirantis.com>
This commit is contained in:
Sebastian Malton committed 2020-07-09 17:00:23 -04:00
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";