Skip to content

Commit 8801bfe

Browse files
Clarify dashboard empty states and exception labels
Resolve dashboard readability issues so operators can tell "no data yet" apart from "zero" and understand what each aggregate represents. - Workflow Type Health: render em-dash for Pass Rate and Median Duration when there are no terminal or completed runs yet, with explanatory title tooltips; render explicit 0 for Errors. - Overview: replace bare "-" on Max Wait Time / Max Duration with em-dash plus "No running waits" / "No completed runs yet" helper lines; rename "Max Exceptions" to "Most Exceptions On One Run" with a matching empty-state line. - Add hasTerminalRuns helper so the row detects true empty state from the status breakdown rather than relying on pass_rate == 0.
1 parent 5005873 commit 8801bfe

3 files changed

Lines changed: 26 additions & 9 deletions

File tree

public/app.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/mix-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"/app.js": "/app.js?id=eeb6b51c689cfc09e7d76e4cd68c1359",
2+
"/app.js": "/app.js?id=1e57920b1a676c30cd034e5daf3b98f6",
33
"/app-dark.css": "/app-dark.css?id=64d24ee96944ffdb4b26a9be1658c1e3",
44
"/app.css": "/app.css?id=d525454610dfd3c5a581fc49676f8a37",
55
"/img/favicon.png": "/img/favicon.png?id=7c006241b093796d6abfa3049df93a59",

resources/js/screens/dashboard.vue

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,11 @@
314314
return flow.exceptions_count ?? flow.exception_count ?? 0;
315315
},
316316
317+
hasTerminalRuns(type) {
318+
const b = type && type.status_breakdown ? type.status_breakdown : {};
319+
return (b.completed || 0) + (b.failed || 0) + (b.cancelled || 0) + (b.terminated || 0) > 0;
320+
},
321+
317322
operatorMetric(section, key) {
318323
const metrics = this.stats.operator_metrics || {};
319324
const group = metrics[section] || {};
@@ -614,16 +619,25 @@
614619
</td>
615620
<td class="text-right">{{ type.total_runs.toLocaleString() }}</td>
616621
<td class="text-right">
617-
<span :class="'badge badge-' + (type.pass_rate >= 95 ? 'success' : type.pass_rate >= 80 ? 'warning' : 'danger')">
622+
<span v-if="hasTerminalRuns(type)"
623+
:class="'badge badge-' + (type.pass_rate >= 95 ? 'success' : type.pass_rate >= 80 ? 'warning' : 'danger')">
618624
{{ type.pass_rate }}%
619625
</span>
626+
<span v-else class="text-muted small" title="No terminal runs yet this week">
627+
&mdash;
628+
</span>
620629
</td>
621630
<td class="text-right text-muted small">
622-
{{ type.median_duration_ms ? formatDuration(type.median_duration_ms) : '-' }}
631+
<template v-if="type.median_duration_ms">
632+
{{ formatDuration(type.median_duration_ms) }}
633+
</template>
634+
<span v-else title="No completed runs yet this week">
635+
&mdash;
636+
</span>
623637
</td>
624638
<td class="text-right">
625-
<span v-if="type.error_count > 0" class="text-danger">{{ type.error_count }}</span>
626-
<span v-else class="text-muted">-</span>
639+
<span v-if="type.error_count > 0" class="text-danger">{{ type.error_count.toLocaleString() }}</span>
640+
<span v-else class="text-muted" title="No failed, cancelled, or terminated runs">0</span>
627641
</td>
628642
</tr>
629643
</tbody>
@@ -736,12 +750,13 @@
736750
<small class="text-uppercase">Max Wait Time</small>
737751
738752
<h4 class="mt-4 mb-0">
739-
{{ stats.max_wait_time_workflow ? waitAge(stats.max_wait_time_workflow) : '-' }}
753+
{{ stats.max_wait_time_workflow ? waitAge(stats.max_wait_time_workflow) : '' }}
740754
</h4>
741755
742756
<small class="mt-1" v-if="stats.max_wait_time_workflow">
743757
(<router-link :title="stats.max_wait_time_workflow.class" :to="{ name: routeName(stats.max_wait_time_workflow), params: { flowId: stats.max_wait_time_workflow.id }}">{{ flowBaseName(stats.max_wait_time_workflow.class) }}</router-link>)
744758
</small>
759+
<small v-else class="mt-1 text-muted d-block">No running waits</small>
745760
</div>
746761
</div>
747762
@@ -750,18 +765,19 @@
750765
<small class="text-uppercase">Max Duration</small>
751766
752767
<h4 class="mt-4 mb-0">
753-
{{ stats.max_duration_workflow ? flowDuration(stats.max_duration_workflow) : '-' }}
768+
{{ stats.max_duration_workflow ? flowDuration(stats.max_duration_workflow) : '' }}
754769
</h4>
755770
756771
<small class="mt-1" v-if="stats.max_duration_workflow">
757772
(<router-link :title="stats.max_duration_workflow.class" :to="{ name: routeName(stats.max_duration_workflow), params: { flowId: stats.max_duration_workflow.id }}">{{ flowBaseName(stats.max_duration_workflow.class) }}</router-link>)
758773
</small>
774+
<small v-else class="mt-1 text-muted d-block">No completed runs yet</small>
759775
</div>
760776
</div>
761777
762778
<div class="w-25">
763779
<div class="p-4 mb-0">
764-
<small class="text-uppercase">Max Exceptions</small>
780+
<small class="text-uppercase">Most Exceptions On One Run</small>
765781
766782
<h4 class="mt-4 mb-0">
767783
{{ stats.max_exceptions_workflow ? exceptionCount(stats.max_exceptions_workflow).toLocaleString() : 0 }}
@@ -770,6 +786,7 @@
770786
<small class="mt-1" v-if="stats.max_exceptions_workflow">
771787
(<router-link :title="stats.max_exceptions_workflow.class" :to="{ name: routeName(stats.max_exceptions_workflow), params: { flowId: stats.max_exceptions_workflow.id }}">{{ flowBaseName(stats.max_exceptions_workflow.class) }}</router-link>)
772788
</small>
789+
<small v-else class="mt-1 text-muted d-block">No runs with exceptions</small>
773790
</div>
774791
</div>
775792
</div>

0 commit comments

Comments
 (0)