From 0c39c5455cbe1d5176b728410758e3b719d98292 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr> Date: Fri, 24 Jul 2020 16:38:08 +0200 Subject: [PATCH] [ivette] Values panel: orders table rows according to the full callstacks. --- ivette/src/renderer/Values.tsx | 17 ++++++++++++----- src/plugins/value/api/values_request.ml | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ivette/src/renderer/Values.tsx b/ivette/src/renderer/Values.tsx index c38895a4801..75e4134a472 100644 --- a/ivette/src/renderer/Values.tsx +++ b/ivette/src/renderer/Values.tsx @@ -7,6 +7,7 @@ import * as States from 'frama-c/states'; import * as Json from 'dome/data/json'; import * as Eva from 'api/plugins/eva/values'; import * as Ast from 'api/kernel/ast'; +import * as Compare from 'dome/data/compare'; import { Table, Column } from 'dome/table/views'; import { ArrayModel } from 'dome/table/arrays'; @@ -47,17 +48,23 @@ const ColumnAlarm = (props: { visible: boolean }) => Column({ render: AlarmRenderer, }); +const byValues: Compare.ByFields<Eva.valuesData> = + { callstack: Compare.defined(Compare.byFields({ full: Compare.string })) }; + +class ValuesModel extends ArrayModel<Json.key<'#values'>, Eva.valuesData> { + constructor() { + super(); + this.setOrderingByFields(byValues); + } +} + // -------------------------------------------------------------------------- // --- Values Panel // -------------------------------------------------------------------------- const Values = () => { - const model = React.useMemo( - () => new ArrayModel<Json.key<'#values'>, Eva.valuesData>(), - [], - ); - + const model = React.useMemo(() => new ValuesModel(), []); const evaValues = States.useSyncArray(Eva.values).getArray(); const selectMarker = States.useSelection()[0]?.current?.marker; const markerInfo = States.useSyncArray(Ast.markerInfo).getArray(); diff --git a/src/plugins/value/api/values_request.ml b/src/plugins/value/api/values_request.ml index ad48c3b495d..85d2df413cd 100644 --- a/src/plugins/value/api/values_request.ml +++ b/src/plugins/value/api/values_request.ml @@ -135,7 +135,7 @@ module CallStack = struct let jtype = R.jtype let pp_callstack ~short = function - | None -> "all" + | None -> if short then "all" else "" | Some callstack -> let pp_text = if short -- GitLab