Skip to content

Commit 2344989

Browse files
authored
Show indeterminate status on task progress bar (#252)
1 parent a09467d commit 2344989

3 files changed

Lines changed: 73 additions & 28 deletions

File tree

web/src/app/dialogs/startup/startup.component.html

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -121,34 +121,44 @@ <h1>Kubernetes History Inspector</h1>
121121
>
122122
</p>
123123
<div class="progress-container">
124-
<p
125-
class="progress-header"
126-
*ngIf="task.progresses.length > 0"
127-
>
128-
{{ task.progresses.length }} concurrent sub tasks
129-
are running ({{
130-
task.totalProgress.percentageLabel
131-
}}):
132-
</p>
133-
<div
134-
class="progress-element"
135-
*ngFor="
136-
let progress of task.progresses;
137-
trackBy: progressCollectionTrack
138-
"
139-
>
140-
<div class="progress-label">
141-
<p class="progress-label-inner">
142-
{{ progress.label }}({{
143-
progress.percentageLabel
144-
}}%) {{ progress.message }}
145-
</p>
146-
</div>
147-
<div
148-
class="progress-bar"
149-
[style.width.%]="progress.percentage"
150-
></div>
151-
</div>
124+
@if (task.progresses.length > 0) {
125+
<p class="progress-header">
126+
{{ task.progresses.length }} concurrent sub
127+
tasks are running ({{
128+
task.totalProgress.percentageLabel
129+
}}):
130+
</p>
131+
}
132+
@for (
133+
progress of task.progresses;
134+
track progressCollectionTrack($index, progress)
135+
) {
136+
@if (progress.indeterminate) {
137+
<div class="progress-element">
138+
<div class="indeterminate-progress-bar"></div>
139+
<div class="progress-label">
140+
<p class="progress-label-inner">
141+
{{ progress.label }}
142+
{{ progress.message }}
143+
</p>
144+
</div>
145+
</div>
146+
} @else {
147+
<div class="progress-element">
148+
<div class="progress-label">
149+
<p class="progress-label-inner">
150+
{{ progress.label }}({{
151+
progress.percentageLabel
152+
}}%) {{ progress.message }}
153+
</p>
154+
</div>
155+
<div
156+
class="progress-bar"
157+
[style.width.%]="progress.percentage"
158+
></div>
159+
</div>
160+
}
161+
}
152162
</div>
153163
<div class="error-container">
154164
<p class="error" *ngFor="let err of task.errors">

web/src/app/dialogs/startup/startup.component.scss

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@
1515
*/
1616
@use "sass:color";
1717

18+
@keyframes indeterminate-progress-animation {
19+
0% {
20+
transform: translateX(-100%);
21+
}
22+
100% {
23+
transform: translateX(200%);
24+
}
25+
}
26+
1827
.background {
1928
pointer-events: all;
2029
border-radius: 20px;
@@ -410,6 +419,30 @@
410419
background-color: #3f51b5;
411420
height: 10px;
412421
}
422+
423+
.indeterminate-progress-bar {
424+
height: 10px;
425+
background-color: #3f51b5;
426+
width: 100%;
427+
position: relative;
428+
overflow: hidden;
429+
430+
&::after {
431+
content: "";
432+
position: absolute;
433+
top: 0;
434+
left: 0;
435+
height: 100%;
436+
width: 50%;
437+
background: linear-gradient(
438+
90deg,
439+
rgba(255, 255, 255, 0) 0%,
440+
rgba(255, 255, 255, 0.4) 50%,
441+
rgba(255, 255, 255, 0) 100%
442+
);
443+
animation: indeterminate-progress-animation 1.5s infinite linear;
444+
}
445+
}
413446
}
414447
}
415448

web/src/app/dialogs/startup/startup.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export type ProgressBarViewModel = {
5656
message: string;
5757
percentage: number;
5858
percentageLabel: string;
59+
indeterminate: boolean;
5960
};
6061

6162
export type ErrorViewModel = {
@@ -144,6 +145,7 @@ export class StartupDialogComponent {
144145
message: p.message,
145146
percentage: p.percentage * 100,
146147
percentageLabel: (p.percentage * 100).toFixed(2),
148+
indeterminate: p.indeterminate,
147149
}) as ProgressBarViewModel,
148150
),
149151
inspectionTimeLabel: this.durationToTimeSeconds(

0 commit comments

Comments
 (0)