Skip to content

Commit 29c9bea

Browse files
committed
ui: display harness info in popup Dialog
1 parent 6dd36a8 commit 29c9bea

File tree

1 file changed

+44
-2
lines changed

1 file changed

+44
-2
lines changed

ui/app/components/Kani.vue

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script setup lang="ts">
22
import { ofetch } from "ofetch";
33
import type { SelectButtonPassThroughMethodOptions } from "primevue";
4-
import { URL_MERGE_DIFF, MergeKaniColumns, multiSort, type VecMergeHashKaniList, FILTERS, ProofKind, optionsProofKind } from "~/shared/utils/kani";
4+
import { URL_MERGE_DIFF, MergeKaniColumns, multiSort, type VecMergeHashKaniList, type MergeHashKaniList, FILTERS, ProofKind, optionsProofKind } from "~/shared/utils/kani";
55
import { useDarkStore, useStyleStore } from "~/stores/style";
66
77
// Compute absolute scrollHeight for DataTable.
@@ -79,6 +79,15 @@ watch([selectedMods, selectedProofKind], ([mods, proofs]) => {
7979
data.value = v;
8080
});
8181
82+
const visible = ref(false);
83+
const selectedHarness = ref<MergeHashKaniList | null>(null);
84+
watch(selectedHarness, val => {
85+
if (val === null) { visible.value = false; return }
86+
87+
visible.value = true;
88+
});
89+
90+
8291
// Set title
8392
useHead({ title: "Verify Rust Std - Kani" });
8493
</script>
@@ -88,7 +97,8 @@ useHead({ title: "Verify Rust Std - Kani" });
8897
<DataTable :value="data" paginator :rows="5" :rowsPerPageOptions="[5, 10, 20, 50]" sortMode="multiple" removableSort
8998
v-model:multi-sort-meta="multiSort" stripedRows :tableStyle="{ width: `${Math.round(viewportWidth - 10)}px` }"
9099
tableClass="p-1" :scrollHeight="`${Math.round(viewportHeight * 0.78)}px`" v-model:filters="filters"
91-
:globalFilterFields="FILTERS.fields" @value-change="valueChange">
100+
:globalFilterFields="FILTERS.fields" @value-change="valueChange" selectionMode="single"
101+
v-model:selection="selectedHarness">
92102

93103
<template #header>
94104
<div class="flex justify-between items-center">
@@ -150,6 +160,38 @@ useHead({ title: "Verify Rust Std - Kani" });
150160
</div>
151161
</template>
152162
</DataTable>
163+
164+
165+
<Dialog v-model:visible="visible" modal header="Kani Harness" :style="{ width: '75%' }">
166+
<div class="grid grid-cols-2 gap-4 justify-center">
167+
<div>
168+
<Card class="border border-sky-300">
169+
<template #content>
170+
<div> Harness Name:
171+
<Tag severity="info" :value="selectedHarness?.harness" />
172+
</div>
173+
<div> Harness File: {{ selectedHarness?.file }}</div>
174+
<div> Harness Hash: {{ selectedHarness?.hash }}</div>
175+
<div> Proof Kind: {{ selectedHarness?.proof_kind }}</div>
176+
<div> Total Properties: {{ selectedHarness?.props }}</div>
177+
<div> Execution Time: {{ selectedHarness?.time }}ms</div>
178+
</template>
179+
</Card>
180+
</div>
181+
182+
<div>
183+
<Card class="border border-sky-300">
184+
<template #content>
185+
<div> Verified Function:
186+
<Tag severity="info" :value="selectedHarness?.func.name" />
187+
</div>
188+
<div> Function File: {{ selectedHarness?.func.file }}</div>
189+
<div> Safeness: {{ selectedHarness?.func.safe }}</div>
190+
</template>
191+
</Card>
192+
</div>
193+
</div>
194+
</Dialog>
153195
</template>
154196

155197
<style lang="css" scoped>

0 commit comments

Comments
 (0)