Skip to content

Commit 8726ca6

Browse files
ghallidaykunalaswani
authored andcommitted
HPCC-31542 List Workunits Functionality
List ECL and DFU Workunits in Sasha functionality added. Signed-off-by: Kunal Aswani <[email protected]>
2 parents bbc482e + 06e0b2a commit 8726ca6

File tree

2 files changed

+187
-40
lines changed

2 files changed

+187
-40
lines changed

esp/src/src-react/components/Sasha.tsx

+185-38
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,32 @@
11
import * as React from "react";
2-
import { Dropdown, TextField, PrimaryButton } from "@fluentui/react";
2+
import { Dropdown, TextField, PrimaryButton, Stack, Checkbox } from "@fluentui/react";
33
import nlsHPCC from "src/nlsHPCC";
4-
import { SashaService } from "@hpcc-js/comms";
4+
import { scopedLogger } from "@hpcc-js/util";
5+
import { SashaService, WsSasha } from "@hpcc-js/comms";
56

6-
interface SashaProps {}
7+
const logger = scopedLogger("src-react/components/Sasha.tsx");
8+
9+
interface SashaProps { }
710

811
export const Sasha: React.FunctionComponent<SashaProps> = () => {
912
const [selectedOption, setSelectedOption] = React.useState("");
1013
const [wuid, setWuid] = React.useState("");
14+
const [cluster, setCluster] = React.useState("");
15+
const [owner, setOwner] = React.useState("");
16+
const [jobName, setJobName] = React.useState("");
17+
const [stateFilter, setStateFilter] = React.useState("");
18+
const [fromDate, setFromDate] = React.useState("");
19+
const [toDate, setToDate] = React.useState("");
20+
const [beforeWU, setBeforeWU] = React.useState("");
21+
const [afterWU, setAfterWU] = React.useState("");
22+
const [outputFields, setOutputFields] = React.useState("");
23+
const [archived, setArchived] = React.useState(false);
24+
const [online, setOnline] = React.useState(false);
25+
const [includeDT, setIncludeDT] = React.useState(false);
26+
const [descending, setDescending] = React.useState(false);
27+
1128
const [result, setResult] = React.useState("");
1229

13-
// Create an instance of SashaService (adjust baseUrl if needed)
1430
const sashaService = new SashaService({ baseUrl: "" });
1531

1632
const handleOptionChange = (event: React.FormEvent<HTMLDivElement>, option: any) => {
@@ -46,11 +62,53 @@ export const Sasha: React.FunctionComponent<SashaProps> = () => {
4662
case "archiveDFUWorkUnit":
4763
// Implement archiveDFUWorkUnit function call
4864
break;
49-
case "backupECLWorkUnit":
50-
// Implement backupECLWorkUnit function call
65+
case "listECLWorkunit":
66+
sashaService.ListWU({
67+
WUType: WsSasha.WUTypes.ECL,
68+
Wuid: wuid,
69+
Cluster: cluster,
70+
Owner: owner,
71+
JobName: jobName,
72+
State: stateFilter,
73+
FromDate: fromDate,
74+
ToDate: toDate,
75+
Archived: archived,
76+
Online: online,
77+
IncludeDT: includeDT,
78+
BeforeWU: beforeWU,
79+
AfterWU: afterWU,
80+
MaxNumberWUs: 500,
81+
Descending: descending,
82+
OutputFields: outputFields
83+
})
84+
.then(response => {
85+
setResult(response.Result);
86+
})
87+
.catch(err => logger.error(err));
5188
break;
52-
case "backupDFUWorkUnit":
53-
// Implement backupDFUWorkUnit function call
89+
case "listDFUWorkunit":
90+
sashaService.ListWU({
91+
WUType: WsSasha.WUTypes.DFU,
92+
Wuid: wuid,
93+
Cluster: cluster,
94+
Owner: owner,
95+
JobName: jobName,
96+
State: stateFilter,
97+
FromDate: fromDate,
98+
ToDate: toDate,
99+
Archived: archived,
100+
Online: online,
101+
IncludeDT: includeDT,
102+
BeforeWU: beforeWU,
103+
AfterWU: afterWU,
104+
MaxNumberWUs: 500,
105+
Descending: descending,
106+
OutputFields: outputFields
107+
})
108+
.then(response => {
109+
setResult(response.Result);
110+
})
111+
.catch(err => logger.error(err));
54112
break;
55113
default:
56114
console.log("Invalid option selected");
@@ -62,36 +120,125 @@ export const Sasha: React.FunctionComponent<SashaProps> = () => {
62120
return (
63121
<div>
64122
<form onSubmit={handleSubmit}>
65-
<Dropdown
66-
placeholder={nlsHPCC.SelectAnOption}
67-
selectedKey={selectedOption}
68-
onChange={handleOptionChange}
69-
options={[
70-
{ key: "", text: nlsHPCC.SelectAnOption },
71-
{ key: "getVersion", text: nlsHPCC.GetVersion },
72-
{ key: "getLastServerMessage", text: nlsHPCC.GetLastServerMessage },
73-
{ key: "restoreECLWorkUnit", text: nlsHPCC.RestoreECLWorkunit },
74-
{ key: "restoreDFUWorkUnit", text: nlsHPCC.RestoreDFUWorkunit },
75-
{ key: "archiveECLWorkUnit", text: nlsHPCC.ArchiveECLWorkunit },
76-
{ key: "archiveDFUWorkUnit", text: nlsHPCC.ArchiveDFUWorkunit },
77-
{ key: "backupECLWorkUnit", text: nlsHPCC.BackupECLWorkunit },
78-
{ key: "backupDFUWorkUnit", text: nlsHPCC.BackupDFUWorkunit }
79-
]}
80-
styles={{ dropdown: { width: 400 } }}
81-
/>
82-
{["restoreECLWorkUnit", "restoreDFUWorkUnit", "archiveECLWorkUnit", "archiveDFUWorkUnit", "backupECLWorkUnit", "backupDFUWorkUnit"].includes(selectedOption) && (
83-
<div>
84-
<TextField
85-
label={nlsHPCC.WUID}
86-
value={wuid}
87-
onChange={(event: React.FormEvent<HTMLInputElement>, newValue?: string) => setWuid(newValue || "")}
88-
styles={{ fieldGroup: { width: 400 } }}
89-
/>
90-
</div>
91-
)}
92-
<PrimaryButton type="submit">{nlsHPCC.Submit}</PrimaryButton>
93-
{defaultValue}
94-
{result && <div>{nlsHPCC.Results}: {result}</div>}
123+
<Stack tokens={{ childrenGap: 15, padding: 10 }}>
124+
<Dropdown
125+
placeholder={nlsHPCC.SelectAnOption}
126+
selectedKey={selectedOption}
127+
onChange={handleOptionChange}
128+
options={[
129+
{ key: "", text: nlsHPCC.SelectAnOption },
130+
{ key: "getVersion", text: nlsHPCC.GetVersion },
131+
{ key: "getLastServerMessage", text: nlsHPCC.GetLastServerMessage },
132+
{ key: "restoreECLWorkUnit", text: nlsHPCC.RestoreECLWorkunit },
133+
{ key: "restoreDFUWorkUnit", text: nlsHPCC.RestoreDFUWorkunit },
134+
{ key: "archiveECLWorkUnit", text: nlsHPCC.ArchiveECLWorkunit },
135+
{ key: "archiveDFUWorkUnit", text: nlsHPCC.ArchiveDFUWorkunit },
136+
{ key: "listECLWorkunit", text: nlsHPCC.ListECLWorkunit },
137+
{ key: "listDFUWorkunit", text: nlsHPCC.ListDFUWorkunit }
138+
]}
139+
styles={{ dropdown: { width: 400 } }}
140+
/>
141+
142+
{["listECLWorkunit", "listDFUWorkunit"].includes(selectedOption) ? (
143+
<Stack tokens={{ childrenGap: 10 }}>
144+
<TextField
145+
label={nlsHPCC.WUID}
146+
value={wuid}
147+
onChange={(event, newValue?: string) => setWuid(newValue || "")}
148+
styles={{ fieldGroup: { width: 400 } }}
149+
/>
150+
<TextField
151+
label="Cluster"
152+
value={cluster}
153+
onChange={(event, newValue?: string) => setCluster(newValue || "")}
154+
styles={{ fieldGroup: { width: 400 } }}
155+
/>
156+
<TextField
157+
label="Owner"
158+
value={owner}
159+
onChange={(event, newValue?: string) => setOwner(newValue || "")}
160+
styles={{ fieldGroup: { width: 400 } }}
161+
/>
162+
<TextField
163+
label="Job Name"
164+
value={jobName}
165+
onChange={(event, newValue?: string) => setJobName(newValue || "")}
166+
styles={{ fieldGroup: { width: 400 } }}
167+
/>
168+
<TextField
169+
label="State"
170+
value={stateFilter}
171+
onChange={(event, newValue?: string) => setStateFilter(newValue || "")}
172+
styles={{ fieldGroup: { width: 400 } }}
173+
/>
174+
<TextField
175+
label="From Date"
176+
value={fromDate}
177+
onChange={(event, newValue?: string) => setFromDate(newValue || "")}
178+
styles={{ fieldGroup: { width: 400 } }}
179+
/>
180+
<TextField
181+
label="To Date"
182+
value={toDate}
183+
onChange={(event, newValue?: string) => setToDate(newValue || "")}
184+
styles={{ fieldGroup: { width: 400 } }}
185+
/>
186+
<TextField
187+
label="Before WU"
188+
value={beforeWU}
189+
onChange={(event, newValue?: string) => setBeforeWU(newValue || "")}
190+
styles={{ fieldGroup: { width: 400 } }}
191+
/>
192+
<TextField
193+
label="After WU"
194+
value={afterWU}
195+
onChange={(event, newValue?: string) => setAfterWU(newValue || "")}
196+
styles={{ fieldGroup: { width: 400 } }}
197+
/>
198+
<TextField
199+
label="Output Fields"
200+
value={outputFields}
201+
onChange={(event, newValue?: string) => setOutputFields(newValue || "")}
202+
styles={{ fieldGroup: { width: 400 } }}
203+
/>
204+
<Stack horizontal tokens={{ childrenGap: 20 }}>
205+
<Checkbox
206+
label="Archived"
207+
checked={archived}
208+
onChange={(e, checked) => setArchived(!!checked)}
209+
/>
210+
<Checkbox
211+
label="Online"
212+
checked={online}
213+
onChange={(e, checked) => setOnline(!!checked)}
214+
/>
215+
<Checkbox
216+
label="Include DT"
217+
checked={includeDT}
218+
onChange={(e, checked) => setIncludeDT(!!checked)}
219+
/>
220+
<Checkbox
221+
label="Descending"
222+
checked={descending}
223+
onChange={(e, checked) => setDescending(!!checked)}
224+
/>
225+
</Stack>
226+
</Stack>
227+
) : (
228+
(["restoreECLWorkUnit", "restoreDFUWorkUnit", "archiveECLWorkUnit", "archiveDFUWorkUnit"].includes(selectedOption)) && (
229+
<TextField
230+
label={nlsHPCC.WUID}
231+
value={wuid}
232+
onChange={(event, newValue?: string) => setWuid(newValue || "")}
233+
styles={{ fieldGroup: { width: 400 } }}
234+
/>
235+
)
236+
)}
237+
238+
<PrimaryButton type="submit">{nlsHPCC.Submit}</PrimaryButton>
239+
{defaultValue}
240+
{result && <div>{nlsHPCC.Results}: {result}</div>}
241+
</Stack>
95242
</form>
96243
</div>
97244
);

esp/src/src/nls/hpcc.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,6 @@ export = {
7575
AutoRefreshIncrement: "Auto Refresh Increment",
7676
AutoRefreshEvery: "Auto refresh every x minutes",
7777
Back: "Back",
78-
BackupECLWorkunit: "Backup ECL Workunit",
79-
BackupDFUWorkunit: "Backup DFU Workunit",
8078
BannerColor: "Banner Color",
8179
BannerColorTooltip: "Change the background color of the top navigation",
8280
BannerMessage: "Banner Message",
@@ -488,6 +486,8 @@ export = {
488486
Line: "Line",
489487
LineTerminators: "Line Terminators",
490488
Links: "Links",
489+
ListECLWorkunit: "List ECL Workunit",
490+
ListDFUWorkunit: "List DFU Workunit",
491491
LoadPackageContentHere: "(Load package content here)",
492492
LoadPackageFromFile: "Load Package from a file",
493493
Loading: "Loading...",

0 commit comments

Comments
 (0)