Fixed UI bugs in workflow run table in analytics (#3074)
Signed-off-by: Saranya-jena <saranya@chaosnative.com>
This commit is contained in:
parent
74c817834e
commit
ddc03c450f
|
|
@ -113,6 +113,7 @@ export type WorkflowStatus =
|
|||
| 'Failed'
|
||||
| 'Running'
|
||||
| 'Succeeded'
|
||||
| 'Terminated'
|
||||
| undefined;
|
||||
|
||||
export interface WorkflowRunFilterInput {
|
||||
|
|
|
|||
|
|
@ -105,13 +105,15 @@ const InfoSection: React.FC<InfoSectionProps> = ({
|
|||
</Typography>
|
||||
<Typography>
|
||||
Next Run :{' '}
|
||||
{data.ListWorkflow.workflows[0].cronSyntax !== undefined && (
|
||||
{data.ListWorkflow.workflows[0].cronSyntax ? (
|
||||
<span className={classes.infoHint}>
|
||||
{parser
|
||||
.parseExpression(data.ListWorkflow.workflows[0].cronSyntax)
|
||||
.next()
|
||||
.toString()}
|
||||
</span>
|
||||
) : (
|
||||
<span className={classes.infoHint}>Non cron workflow</span>
|
||||
)}
|
||||
</Typography>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -172,36 +172,38 @@ const WorkflowRunTable: React.FC<WorkflowRunTableProps> = ({
|
|||
);
|
||||
const { nodes } = executionData;
|
||||
let index: number = 1;
|
||||
for (const key of Object.keys(nodes)) {
|
||||
const node = nodes[key];
|
||||
if (node.chaosData) {
|
||||
const { chaosData } = node;
|
||||
const weightageMap: WeightageMap[] = weightageDetail
|
||||
? weightageDetail?.ListWorkflow.workflows[0]?.weightages
|
||||
: [];
|
||||
/* eslint-disable no-loop-func */
|
||||
weightageMap.forEach((weightage) => {
|
||||
if (weightage.experiment_name === node.name) {
|
||||
workflowTestsArray.push({
|
||||
test_id: index,
|
||||
test_name: node.name,
|
||||
exp_name: chaosData.experimentName,
|
||||
test_result: chaosData.experimentVerdict,
|
||||
test_weight: weightage.weightage,
|
||||
resulting_points:
|
||||
chaosData.experimentVerdict === 'Pass' ||
|
||||
chaosData.experimentVerdict === 'Fail'
|
||||
? (weightage.weightage *
|
||||
parseInt(chaosData.probeSuccessPercentage, 10)) /
|
||||
100
|
||||
: 0,
|
||||
last_updated: chaosData.lastUpdatedAt,
|
||||
context: chaosData.engineContext,
|
||||
});
|
||||
}
|
||||
});
|
||||
if (executionData.finishedAt !== '') {
|
||||
for (const key of Object.keys(nodes)) {
|
||||
const node = nodes[key];
|
||||
if (node.chaosData) {
|
||||
const { chaosData } = node;
|
||||
const weightageMap: WeightageMap[] = weightageDetail
|
||||
? weightageDetail?.ListWorkflow.workflows[0]?.weightages
|
||||
: [];
|
||||
/* eslint-disable no-loop-func */
|
||||
weightageMap.forEach((weightage) => {
|
||||
if (weightage.experiment_name === node.name) {
|
||||
workflowTestsArray.push({
|
||||
test_id: index,
|
||||
test_name: node.name,
|
||||
exp_name: chaosData.experimentName,
|
||||
test_result: chaosData.experimentVerdict,
|
||||
test_weight: weightage.weightage,
|
||||
resulting_points:
|
||||
chaosData.experimentVerdict === 'Pass' ||
|
||||
chaosData.experimentVerdict === 'Fail'
|
||||
? (weightage.weightage *
|
||||
parseInt(chaosData.probeSuccessPercentage, 10)) /
|
||||
100
|
||||
: 0,
|
||||
last_updated: chaosData.lastUpdatedAt,
|
||||
context: chaosData.engineContext,
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
index += 1;
|
||||
}
|
||||
index += 1;
|
||||
}
|
||||
}
|
||||
setWfRunData(workflowTestsArray);
|
||||
|
|
|
|||
|
|
@ -46,7 +46,8 @@ const TestCalendarHeatmapTooltip = ({
|
|||
{tooltipData?.data?.bin?.bin.value ?? 0}% Average Resiliency
|
||||
</div>
|
||||
<div>
|
||||
{tooltipData?.data?.bin?.bin.workflowRunDetail.no_of_runs ?? 0} runs on{' '}
|
||||
{tooltipData?.data?.bin?.bin.workflowRunDetail.no_of_runs ?? 0}{' '}
|
||||
completed runs on{' '}
|
||||
{formatDate(tooltipData?.data?.bin?.bin.workflowRunDetail.date_stamp) ??
|
||||
''}
|
||||
</div>
|
||||
|
|
@ -100,7 +101,7 @@ const WorkflowInfoStats: React.FC = () => {
|
|||
);
|
||||
|
||||
const workflowRunID =
|
||||
workflowRunData?.getWorkflowRuns.workflow_runs[0].workflow_run_id ?? '';
|
||||
workflowRunData?.getWorkflowRuns?.workflow_runs[0]?.workflow_run_id ?? '';
|
||||
|
||||
const presentYear = new Date().getFullYear();
|
||||
const [showTable, setShowTable] = useState<boolean>(false);
|
||||
|
|
@ -178,14 +179,16 @@ const WorkflowInfoStats: React.FC = () => {
|
|||
</div>
|
||||
|
||||
{/* Information and stats */}
|
||||
{data && workflowRunData?.getWorkflowRuns.total_no_of_workflow_runs && (
|
||||
<InfoSection
|
||||
data={data}
|
||||
workflowRunLength={
|
||||
workflowRunData.getWorkflowRuns.total_no_of_workflow_runs
|
||||
}
|
||||
/>
|
||||
)}
|
||||
{data &&
|
||||
workflowRunData &&
|
||||
workflowRunData.getWorkflowRuns.total_no_of_workflow_runs > 0 && (
|
||||
<InfoSection
|
||||
data={data}
|
||||
workflowRunLength={
|
||||
workflowRunData.getWorkflowRuns.total_no_of_workflow_runs
|
||||
}
|
||||
/>
|
||||
)}
|
||||
|
||||
{/* Visulization Area */}
|
||||
{/* Check for cron workflow OR single workflow which has been re-run */}
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ const WorkflowComparisonTable = () => {
|
|||
let totalValidRuns: number = 0;
|
||||
const totalValidWorkflowRuns: WorkflowDataForExport[] = [];
|
||||
const timeSeriesArray: DatedResilienceScore[][] = [];
|
||||
const runs = data?.getWorkflowRuns.workflow_runs;
|
||||
const runs = data?.getWorkflowRuns?.workflow_runs;
|
||||
const workflowTimeSeriesData: DatedResilienceScore[] = [];
|
||||
let isWorkflowValid: boolean = false;
|
||||
selectedWorkflows.forEach((workflowID) => {
|
||||
|
|
@ -287,7 +287,7 @@ const WorkflowComparisonTable = () => {
|
|||
}
|
||||
});
|
||||
if (isWorkflowValid) {
|
||||
plotData.labels.push(selectedRuns[0].workflow_name ?? '');
|
||||
plotData.labels.push(selectedRuns[0]?.workflow_name ?? '');
|
||||
plotData.colors.push(`#${randomColor()}`);
|
||||
timeSeriesArray.push(workflowTimeSeriesData);
|
||||
}
|
||||
|
|
@ -433,7 +433,7 @@ const WorkflowComparisonTable = () => {
|
|||
selectedWorkflows.forEach((workflow) => {
|
||||
displayData.forEach((displayWorkflow, i) => {
|
||||
if (displayWorkflow.workflow_id === workflow && data) {
|
||||
payload.push(data?.ListWorkflow.workflows[i]);
|
||||
payload.push(data && data.ListWorkflow.workflows[i]);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -191,7 +191,9 @@ github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfc
|
|||
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||
github.com/coreos/prometheus-operator v0.34.0/go.mod h1:Li6rMllG/hYIyXfMuvUwhyC+hqwJVHdsDdP21hypT1M=
|
||||
github.com/coreos/rkt v1.30.0/go.mod h1:O634mlH6U7qk87poQifK6M2rsFNt+FyUTWNMnP1hF1U=
|
||||
github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk=
|
||||
github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
|
|
@ -648,6 +650,7 @@ github.com/litmuschaos/chaos-operator v0.0.0-20210224131102-ca6a465ed348/go.mod
|
|||
github.com/litmuschaos/chaos-scheduler v0.0.0-20210607090343-9952190ad032 h1:Nza94oOqOsao8eFWC19iFviS8XsxS2eVk7Q0a9WDKBE=
|
||||
github.com/litmuschaos/chaos-scheduler v0.0.0-20210607090343-9952190ad032/go.mod h1:7EO6kbZKeJGKzkchgQepCxywvqNFNvNHW0G+u9923AY=
|
||||
github.com/litmuschaos/elves v0.0.0-20201107015738-552d74669e3c/go.mod h1:DsbHGNUq/78NZozWVVI9Q6eBei4I+JjlkkD5aibJ3MQ=
|
||||
github.com/litmuschaos/litmus v0.0.0-20210730112417-d105c54842cd h1:728JpHuykgg0TZ68YPyDMA48DIcPRhXgughZfO7u88Q=
|
||||
github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
|
||||
github.com/lpabon/godbc v0.1.1/go.mod h1:Jo9QV0cf3U6jZABgiJ2skINAXb9j8m51r07g4KI92ZA=
|
||||
github.com/lucas-clemente/aes12 v0.0.0-20171027163421-cd47fb39b79f/go.mod h1:JpH9J1c9oX6otFSgdUHwUBUizmKlrMjxWnIAjff4m04=
|
||||
|
|
@ -889,7 +892,9 @@ github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
|
|||
github.com/rubenv/sql-migrate v0.0.0-20191025130928-9355dd04f4b3/go.mod h1:WS0rl9eEliYI8DPnr3TOwz4439pay+qNgzJoVya/DmY=
|
||||
github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto=
|
||||
github.com/russross/blackfriday v0.0.0-20170610170232-067529f716f4/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||
github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=
|
||||
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
|
||||
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||
github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
|
||||
|
|
@ -903,6 +908,7 @@ github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
|
|||
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
|
||||
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
|
||||
github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||
github.com/shurcooL/vfsgen v0.0.0-20180121065927-ffb13db8def0/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw=
|
||||
github.com/sirupsen/logrus v1.0.5/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
|
||||
|
|
@ -973,7 +979,9 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1
|
|||
github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
|
||||
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
|
||||
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
|
||||
github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY=
|
||||
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
||||
github.com/urfave/cli/v2 v2.1.1 h1:Qt8FeAtxE/vfdrLmR3rxR6JRE0RoVmbXu8+6kZtYU4k=
|
||||
github.com/urfave/cli/v2 v2.1.1/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ=
|
||||
github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4=
|
||||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||
|
|
@ -1103,6 +1111,7 @@ golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKG
|
|||
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
|
||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ=
|
||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180112015858-5ccada7d0a7b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
|
|
@ -1301,6 +1310,7 @@ golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapK
|
|||
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200317043434-63da46f3035e/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
|
||||
golang.org/x/tools v0.0.0-20200428211428-0c9eba77bc32 h1:Xvf3ZQTm5bjXPxhI7g+dwqsCqadK1rcNtwtszuatetk=
|
||||
golang.org/x/tools v0.0.0-20200428211428-0c9eba77bc32/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
|
|
|
|||
|
|
@ -5219,9 +5219,11 @@ type Mutation {
|
|||
|
||||
reRunChaosWorkFlow(workflowID: String!): String! @authorized
|
||||
|
||||
# removes workflow from cluster and db
|
||||
deleteChaosWorkflow(workflowid: String, workflow_run_id: String): Boolean!
|
||||
@authorized
|
||||
|
||||
# removes workflow run from the cluster only
|
||||
terminateChaosWorkflow(workflowid: String, workflow_run_id: String): Boolean! @authorized
|
||||
|
||||
syncWorkflow(workflowid: String!, workflow_run_id: String!): Boolean!
|
||||
|
|
@ -5445,6 +5447,7 @@ input UpdateUserInput {
|
|||
Failed
|
||||
Running
|
||||
Succeeded
|
||||
Terminated
|
||||
}
|
||||
|
||||
input DateRange {
|
||||
|
|
|
|||
|
|
@ -1160,10 +1160,11 @@ func (e UsageSort) MarshalGQL(w io.Writer) {
|
|||
type WorkflowRunStatus string
|
||||
|
||||
const (
|
||||
WorkflowRunStatusAll WorkflowRunStatus = "All"
|
||||
WorkflowRunStatusFailed WorkflowRunStatus = "Failed"
|
||||
WorkflowRunStatusRunning WorkflowRunStatus = "Running"
|
||||
WorkflowRunStatusSucceeded WorkflowRunStatus = "Succeeded"
|
||||
WorkflowRunStatusAll WorkflowRunStatus = "All"
|
||||
WorkflowRunStatusFailed WorkflowRunStatus = "Failed"
|
||||
WorkflowRunStatusRunning WorkflowRunStatus = "Running"
|
||||
WorkflowRunStatusSucceeded WorkflowRunStatus = "Succeeded"
|
||||
WorkflowRunStatusTerminated WorkflowRunStatus = "Terminated"
|
||||
)
|
||||
|
||||
var AllWorkflowRunStatus = []WorkflowRunStatus{
|
||||
|
|
@ -1171,11 +1172,12 @@ var AllWorkflowRunStatus = []WorkflowRunStatus{
|
|||
WorkflowRunStatusFailed,
|
||||
WorkflowRunStatusRunning,
|
||||
WorkflowRunStatusSucceeded,
|
||||
WorkflowRunStatusTerminated,
|
||||
}
|
||||
|
||||
func (e WorkflowRunStatus) IsValid() bool {
|
||||
switch e {
|
||||
case WorkflowRunStatusAll, WorkflowRunStatusFailed, WorkflowRunStatusRunning, WorkflowRunStatusSucceeded:
|
||||
case WorkflowRunStatusAll, WorkflowRunStatusFailed, WorkflowRunStatusRunning, WorkflowRunStatusSucceeded, WorkflowRunStatusTerminated:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ enum WorkflowRunStatus {
|
|||
Failed
|
||||
Running
|
||||
Succeeded
|
||||
Terminated
|
||||
}
|
||||
|
||||
input DateRange {
|
||||
|
|
|
|||
Loading…
Reference in New Issue