Skip to content

Commit 7c1bf82

Browse files
committed
Remove numOfTask from live service, inject TaskService on demo view instead of grid component
1 parent fe3155b commit 7c1bf82

4 files changed

Lines changed: 75 additions & 65 deletions

File tree

packages/playground/src/demo/display/task-list/task-list-demo.tsx

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,45 @@ import { Slider } from "@fluentui/react/lib/Slider";
66
import { Stack } from "@fluentui/react/lib/Stack";
77
import React from "react";
88
import { DemoPane } from "../../../layout/demo-pane";
9+
import { PagedAsyncIterableIterator } from "@azure/core-paging";
10+
import { BatchTaskOutput } from "@batch/ui-service/src/batch-models";
911

1012
export const TaskListDemo: React.FC = () => {
1113
const [taskNumberSlider, setTaskNumberSlider] = React.useState(0);
14+
const [items, setItems] = React.useState<
15+
PagedAsyncIterableIterator<BatchTaskOutput>
16+
>([]);
1217
const taskNumberSliderOnChange = (value: number) => {
1318
setTaskNumberSlider(value);
1419
};
15-
16-
const taskService: FakeTaskService = inject(
17-
BatchDependencyName.TaskService
20+
const [accountEndpoint, setAccountEndpoint] = React.useState<string>(
21+
"mercury.eastus.batch.azure.com"
1822
);
23+
const [jobId, setJobId] = React.useState<string>("faketestjob1");
24+
25+
React.useEffect(() => {
26+
let isMounted = true;
27+
28+
const taskService: FakeTaskService = inject(
29+
BatchDependencyName.TaskService
30+
);
31+
32+
const fetchTaskList = async () => {
33+
if (!isMounted) return;
34+
35+
const tasks = await taskService.listTasks(accountEndpoint, jobId);
36+
37+
setItems(tasks);
38+
};
39+
40+
fetchTaskList().catch((e) => {
41+
console.log("Error: ", e);
42+
});
43+
44+
return () => {
45+
isMounted = false;
46+
};
47+
}, [accountEndpoint, jobId]);
1948

2049
return (
2150
<DemoPane title="Task List Demo">
@@ -36,10 +65,7 @@ export const TaskListDemo: React.FC = () => {
3665
/>
3766
</Stack.Item>
3867
</Stack>
39-
<TaskList
40-
accountEndpoint={"mercury.eastus.batch.azure.com"}
41-
jobId={"faketestjob1"}
42-
/>
68+
<TaskList pagedTasks={items} />
4369
</DemoPane>
4470
);
4571
};

packages/react/src/task/task-list.tsx

Lines changed: 16 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,12 @@ import {
55
DataGridColumn,
66
} from "@azure/bonito-ui/lib/components/data-grid";
77
import { BatchTaskOutput } from "@batch/ui-service/lib/batch-models";
8-
import { inject } from "@azure/bonito-core/lib/environment";
9-
import { BatchDependencyName } from "@batch/ui-service/lib/environment";
10-
import { TaskService } from "@batch/ui-service/lib/task/task-service";
118
import { CiCircleChevDown } from "react-icons/ci";
129
import { IconButton } from "@fluentui/react/lib/Button";
10+
import { PagedAsyncIterableIterator } from "@azure/core-paging";
1311

1412
interface TaskListProps {
15-
accountEndpoint: string;
16-
jobId: string;
13+
pagedTasks: PagedAsyncIterableIterator<BatchTaskOutput>;
1714
}
1815

1916
interface taskRow extends BatchTaskOutput {
@@ -23,44 +20,25 @@ interface taskRow extends BatchTaskOutput {
2320
}
2421

2522
export const TaskList = (props: TaskListProps) => {
26-
const { accountEndpoint, jobId } = props;
27-
const [isCompact] = React.useState<boolean>(false);
23+
const { pagedTasks } = props;
2824
const [items, setItems] = React.useState<taskRow[]>([]);
25+
const [isCompact] = React.useState<boolean>(false);
2926

3027
React.useEffect(() => {
31-
let isMounted = true;
32-
33-
const taskService: TaskService = inject(
34-
BatchDependencyName.TaskService
35-
);
36-
37-
const fetchTaskList = async () => {
38-
if (!isMounted) return;
39-
40-
const tasks = await taskService.listTasks(accountEndpoint, jobId);
41-
42-
const items = [];
43-
for await (const task of tasks) {
44-
items.push({
45-
url: task.url,
46-
id: task.id,
47-
state: task.state,
48-
creationTime: task.creationTime,
49-
executionInfo: task.executionInfo,
50-
});
51-
}
52-
53-
setItems(items);
54-
};
28+
const taskArray = [];
5529

56-
fetchTaskList().catch((e) => {
57-
console.log("Error: ", e);
58-
});
30+
for await (const task of pagedTasks) {
31+
taskArray.push({
32+
url: task.url,
33+
id: task.id,
34+
state: task.state,
35+
creationTime: task.creationTime,
36+
executionInfo: task.executionInfo,
37+
});
38+
}
5939

60-
return () => {
61-
isMounted = false;
62-
};
63-
}, [accountEndpoint, jobId]);
40+
setItems(taskArray);
41+
}, [pagedTasks]);
6442

6543
return (
6644
<DataGrid

packages/service/src/task/fake-task-service.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,11 @@ export class FakeTaskService implements TaskService {
2121

2222
async listTasks(
2323
accountEndpoint: string,
24-
jobId: string
24+
jobId: string,
25+
numOfTasks?: number
2526
): Promise<PagedAsyncIterableIterator<BatchTaskOutput>> {
26-
return createPagedArray(this.fakeSet.listTasks(accountEndpoint, jobId));
27+
return createPagedArray(
28+
this.fakeSet.listTasks(accountEndpoint, jobId, numOfTasks)
29+
);
2730
}
2831
}

packages/service/src/test-util/fakes.ts

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -112,15 +112,11 @@ export interface BatchFakeSet extends FakeSet {
112112
* @param accountEndpoint
113113
* @param jobId
114114
*/
115-
listTasks(accountEndpoint: string, jobId: string): BatchTaskOutput[];
116-
117-
/**
118-
* Generate tasks
119-
*
120-
* @param accountEndpoint
121-
* @param jobId
122-
*/
123-
generateTasks(accountEndpoint: string, jobId: string): BatchTaskOutput[];
115+
listTasks(
116+
accountEndpoint: string,
117+
jobId: string,
118+
numOfTasks?: number
119+
): BatchTaskOutput[];
124120

125121
/**
126122
* List hardcoded tasks in fakes
@@ -257,7 +253,11 @@ export abstract class AbstractBatchFakeSet
257253
];
258254
}
259255

260-
generateTasks(accountEndPoint: string, jobId: string): BatchTaskOutput[] {
256+
generateTasks(
257+
accountEndPoint: string,
258+
jobId: string,
259+
numOfTasks: number
260+
): BatchTaskOutput[] {
261261
/*
262262
function getRandomDateTime(): string {
263263
const year = Math.floor(Math.random() * 50) + 2020;
@@ -306,7 +306,7 @@ export abstract class AbstractBatchFakeSet
306306

307307
const baseTaskUrl = `https://${accountEndPoint}/jobs/${jobId}/tasks/`;
308308

309-
for (let i = 0; i < 3; i++) {
309+
for (let i = 0; i < numOfTasks; i++) {
310310
/*
311311
const seed = Math.random();
312312
const seedStr = seed.toString().substring(2);
@@ -340,17 +340,20 @@ export abstract class AbstractBatchFakeSet
340340
return taskOutput;
341341
}
342342

343-
listTasks(accountEndpoint: string, jobId: string): BatchTaskOutput[] {
343+
listTasks(
344+
accountEndpoint: string,
345+
jobId: string,
346+
numOfTasks?: number
347+
): BatchTaskOutput[] {
344348
if (!jobId) {
345349
return [];
346350
}
347351

348-
const tasks: BatchTaskOutput[] = this.generateTasks(
349-
accountEndpoint,
350-
jobId
351-
);
352-
353-
return tasks;
352+
if (numOfTasks) {
353+
return this.generateTasks(accountEndpoint, jobId, numOfTasks);
354+
} else {
355+
return this.listHardcodedTask(accountEndpoint, jobId);
356+
}
354357
}
355358

356359
listHardcodedTask(

0 commit comments

Comments
 (0)