Fixed UI bugs in workflow run table in analytics (#3074)

Signed-off-by: Saranya-jena <saranya@chaosnative.com>
This commit is contained in:
Saranya Jena 2021-08-02 16:33:06 +05:30 committed by GitHub
parent 74c817834e
commit ddc03c450f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 72 additions and 48 deletions

View File

@ -113,6 +113,7 @@ export type WorkflowStatus =
| 'Failed'
| 'Running'
| 'Succeeded'
| 'Terminated'
| undefined;
export interface WorkflowRunFilterInput {

View File

@ -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>

View File

@ -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);

View File

@ -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 */}

View File

@ -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]);
}
});
});

View File

@ -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=

View File

@ -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 {

View File

@ -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

View File

@ -3,6 +3,7 @@ enum WorkflowRunStatus {
Failed
Running
Succeeded
Terminated
}
input DateRange {