From b55746a53e6c65f9e8e47a6ef48434e123a0bbc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr> Date: Mon, 8 Jun 2020 10:17:18 +0200 Subject: [PATCH] [ivette] Adds new columns to the property table. Hide some columns by default. --- ivette/src/renderer/Properties.tsx | 41 ++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/ivette/src/renderer/Properties.tsx b/ivette/src/renderer/Properties.tsx index 3061204a39b..80d42e5d81d 100644 --- a/ivette/src/renderer/Properties.tsx +++ b/ivette/src/renderer/Properties.tsx @@ -15,7 +15,7 @@ import { Component } from 'frama-c/LabViews'; // --- Property Columns // -------------------------------------------------------------------------- -export const renderCode: Renderer<string> = +const renderCode: Renderer<string> = (text?: string) => (text ? <Code>{text}</Code> : null); function ColumnCode<Row>(props: ColumnProps<Row, string>) { @@ -24,18 +24,30 @@ function ColumnCode<Row>(props: ColumnProps<Row, string>) { interface Tag { name: string; label: string; descr: string } -export const renderTag: Renderer<Tag> = +const renderTag: Renderer<Tag> = (d?: Tag) => (d ? <Label label={d.label} title={d.descr} /> : null); function ColumnTag<Row>(props: ColumnProps<Row, Tag>) { return <Column render={renderTag} {...props} />; } +const renderNames: Renderer<string[]> = + (names?: string[]) => { + const label = names?.join(': '); + return (label ? <Label label={label} /> : null); + } + +const renderFile: Renderer<SourceLoc> = + (loc?: SourceLoc) => + (loc ? <Label label={loc.base} title={loc.file} /> : null); + // -------------------------------------------------------------------------- // --- Properties Table // ------------------------------------------------------------------------- interface SourceLoc { + dir: string; + base: string; file: string; line: number; } @@ -44,6 +56,10 @@ interface Property { key: string; descr: string; kind: string; + alarm?: string; + alarm_descr?: string; + names: string[]; + predicate: string; status: string; function?: string; kinstr: string; @@ -73,6 +89,9 @@ const byProperty: Compare.ByFields<Property> = { function: Compare.defined(Compare.alpha), source: bySource, kind: Compare.primitive, + alarm: Compare.defined(Compare.alpha), + names: Compare.array(Compare.alpha), + predicate: Compare.alpha, key: Compare.primitive, kinstr: Compare.primitive, }; @@ -122,13 +141,25 @@ const RenderTable = () => { onSelection={onSelection} settings="ivette.properties.table" > + <Column + id="path" + label="Directory" + width={240} + visible={false} + getter={(prop: Property) => prop.source.dir} + /> + <Column id="source" label="File" width={120} render={renderFile} /> <ColumnCode id="function" label="Function" width={120} /> - <ColumnCode id="descr" label="Description" fill /> + <ColumnCode id="kind" label="Property kind" width={120} /> + <ColumnCode id="alarm" label="Alarms" width={160} /> + <Column id="names" label="Names" width={240} visible={false} + render={renderNames} /> + <ColumnCode id="predicate" label="Predicate" fill /> + <ColumnCode id="descr" label="Property" fill visible={false} /> <ColumnTag id="status" label="Status" - fixed - width={80} + width={100} align="center" getter={getStatus} /> -- GitLab