Skip to content

Commit

Permalink
add setJobsView and setJobsListView methods
Browse files Browse the repository at this point in the history
  • Loading branch information
andrii-i committed Oct 7, 2022
1 parent 1fbb973 commit 31d091a
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 18 deletions.
19 changes: 14 additions & 5 deletions src/mainviews/detail-view/detail-view.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ import {
IDetailViewModel,
IJobDefinitionModel,
IJobDetailModel,
JobsView
JobsView,
ListJobsView
} from '../../model';
import { useTranslator } from '../../hooks';
import { SchedulerService } from '../../handler';
Expand All @@ -30,7 +31,8 @@ export interface IDetailViewProps {
app: JupyterFrontEnd;
model: IDetailViewModel;
setCreateJobModel: (createModel: ICreateJobModel) => void;
setView: (view: JobsView) => void;
setJobsView: (view: JobsView) => void;
setListJobsView: (view: ListJobsView) => void;
// Extension point: optional additional component
advancedOptions: React.FunctionComponent<Scheduler.IAdvancedOptionsProps>;
}
Expand Down Expand Up @@ -97,7 +99,12 @@ export function DetailView(props: IDetailViewProps): JSX.Element {
_:
| React.MouseEvent<HTMLAnchorElement, MouseEvent>
| React.MouseEvent<HTMLSpanElement, MouseEvent>
): void => props.setView('ListJobs')}
): void => {
props.setJobsView('ListJobs');
props.setListJobsView(
props.model.detailType === 'Job' ? 'Job' : 'JobDefinition'
);
}}
>
{props.model.detailType === 'Job'
? trans.__('Notebook Jobs')
Expand Down Expand Up @@ -128,7 +135,8 @@ export function DetailView(props: IDetailViewProps): JSX.Element {
model={jobModel}
handleModelChange={() => fetchJobDetailModel()}
setCreateJobModel={props.setCreateJobModel}
setView={props.setView}
setJobsView={props.setJobsView}
setListJobsView={props.setListJobsView}
// Extension point: optional additional component
advancedOptions={props.advancedOptions}
outputFormatsStrings={outputFormatStrings ?? []}
Expand All @@ -137,7 +145,8 @@ export function DetailView(props: IDetailViewProps): JSX.Element {
{props.model.detailType === 'JobDefinition' && jobDefinitionModel && (
<JobDefinition
model={jobDefinitionModel}
setView={props.setView}
setJobsView={props.setJobsView}
setListJobsView={props.setListJobsView}
refresh={fetchJobDefinitionModel}
/>
)}
Expand Down
8 changes: 5 additions & 3 deletions src/mainviews/detail-view/job-definition.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useMemo } from 'react';
import { IJobDefinitionModel, JobsView } from '../../model';
import { IJobDefinitionModel, JobsView, ListJobsView } from '../../model';
import { useTranslator } from '../../hooks';
import { TextFieldStyled, timestampLocalize } from './job-detail';
import { SchedulerService } from '../../handler';
Expand All @@ -16,7 +16,8 @@ import {
export interface IJobDefinitionProps {
model: IJobDefinitionModel;
refresh: () => void;
setView: (view: JobsView) => void;
setJobsView: (view: JobsView) => void;
setListJobsView: (view: ListJobsView) => void;
}

export function JobDefinition(props: IJobDefinitionProps): JSX.Element {
Expand All @@ -26,7 +27,8 @@ export function JobDefinition(props: IJobDefinitionProps): JSX.Element {

const handleDeleteJobDefinition = async () => {
await ss.deleteJob(props.model.definitionId ?? '');
props.setView('ListJobs');
props.setJobsView('ListJobs');
props.setListJobsView('JobDefinition');
};

const pauseJobDefinition = async () => {
Expand Down
15 changes: 11 additions & 4 deletions src/mainviews/detail-view/job-detail.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import React from 'react';

import { JupyterFrontEnd } from '@jupyterlab/application';
import { ICreateJobModel, IJobDetailModel, JobsView } from '../../model';
import {
ICreateJobModel,
IJobDetailModel,
JobsView,
ListJobsView
} from '../../model';
import { useTranslator } from '../../hooks';
import { SchedulerService } from '../../handler';
import { Scheduler as SchedulerTokens } from '../../tokens';
Expand All @@ -25,7 +30,8 @@ export interface IJobDetailProps {
model: IJobDetailModel;
handleModelChange: () => void;
setCreateJobModel: (createModel: ICreateJobModel) => void;
setView: (view: JobsView) => void;
setJobsView: (view: JobsView) => void;
setListJobsView: (view: ListJobsView) => void;
// Extension point: optional additional component
advancedOptions: React.FunctionComponent<SchedulerTokens.IAdvancedOptionsProps>;
outputFormatsStrings?: string[];
Expand Down Expand Up @@ -59,12 +65,13 @@ export function JobDetail(props: IJobDetailProps): JSX.Element {
};

props.setCreateJobModel(initialState);
props.setView('CreateJob');
props.setJobsView('CreateJob');
};

const handleDeleteJob = async () => {
await ss.deleteJob(props.model.jobId ?? '');
props.setView('ListJobs');
props.setJobsView('ListJobs');
props.setListJobsView('Job');
};

const handleStopJob = async () => {
Expand Down
6 changes: 1 addition & 5 deletions src/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,7 @@ export interface INotebookJobsListingModel {
// Revised models

// TODO: make these values enums
export type JobsView =
| 'CreateJob'
| 'ListJobs'
| 'JobDetail'
| 'JobDefinitionDetail';
export type JobsView = 'CreateJob' | 'ListJobs' | 'JobDetail';
export type ListJobsView = 'Job' | 'JobDefinition';

export type IJobParameter = {
Expand Down
5 changes: 4 additions & 1 deletion src/notebook-jobs-panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,10 @@ export class NotebookJobsPanel extends VDomRenderer<JobsModel> {
setCreateJobModel={newModel =>
(this.model.createJobModel = newModel)
}
setView={view => (this.model.jobsView = view)}
setJobsView={view => (this.model.jobsView = view)}
setListJobsView={view => {
this.model.listJobsModel.listJobsView = view;
}}
advancedOptions={this._advancedOptions}
/>
)}
Expand Down

0 comments on commit 31d091a

Please sign in to comment.