diff --git a/ivette/src/dome/renderer/frame/sidebars.tsx b/ivette/src/dome/renderer/frame/sidebars.tsx index a45a391ba9af9613e0f83136fc0f2018169b07b2..f7b332affdf2e55298907c528465e9bbbf934171 100644 --- a/ivette/src/dome/renderer/frame/sidebars.tsx +++ b/ivette/src/dome/renderer/frame/sidebars.tsx @@ -110,6 +110,8 @@ export interface SectionProps { disabled?: boolean; /** Badge summary (only visible when folded). */ summary?: Badges; + /** Additional label, right-aligned. */ + infos?: string; /** Additional controls, (only visible when unfolded). */ rightButtonProps?: IconButtonProps; /** Section contents. */ @@ -129,7 +131,7 @@ export interface SectionProps { Sections with no items are not displayed. */ export function Section(props: SectionProps): JSX.Element | null { - const { settings, defaultUnfold, unfold } = props; + const { settings, defaultUnfold, infos, unfold } = props; const [state, flipState] = useFlipSettings(settings, defaultUnfold); const icon = state ? 'TRIANGLE.DOWN' : 'TRIANGLE.RIGHT'; @@ -152,6 +154,7 @@ export function Section(props: SectionProps): JSX.Element | null { icon={icon} onClick={flipState} /> + {infos && <div className='dome-xSideBarSection-infos'>{infos}</div>} {visible ? rightButton : makeBadge(props.summary)} </Hbox> <div className='dome-xSideBarSection-content' style={{ maxHeight }}> diff --git a/ivette/src/dome/renderer/frame/style.css b/ivette/src/dome/renderer/frame/style.css index 73c306f4befbc3bba44117f08bc50efa35f17777..86a42e7101f06cf0936274ba93cc3fad296ce35c 100644 --- a/ivette/src/dome/renderer/frame/style.css +++ b/ivette/src/dome/renderer/frame/style.css @@ -129,6 +129,14 @@ flex: 0 0 ; } +.dome-xSideBarSection-infos { + font-size: smaller; + color: var(--info-text-discrete); + padding-left: 4px; + padding-right: 4px; + display: block; +} + .dome-xSideBarSection-filterButton { margin: 0px; padding: 0px; @@ -162,14 +170,6 @@ display: flex; } -.dome-xSideBarSection-info { - color: var(--info-text-discrete); - font-style: italic; - padding-left: 20px; - padding-right: 10px; - display: block; -} - /* -------------------------------------------------------------------------- */ /* --- SideBar Items --- */ /* -------------------------------------------------------------------------- */ diff --git a/ivette/src/frama-c/kernel/Properties.tsx b/ivette/src/frama-c/kernel/Properties.tsx index d458118d53dbd4c958eab47c4c557d114789cb51..0b2bd023257d68cf2b6e7c66daa9e36fe0d845f9 100644 --- a/ivette/src/frama-c/kernel/Properties.tsx +++ b/ivette/src/frama-c/kernel/Properties.tsx @@ -142,9 +142,9 @@ function filterSummary(prefix: string) : string { if (filter(key)) enabled++; } } - if (enabled == 0) return '(none)'; - if (enabled == total) return '(all)'; - return `(${enabled}/${total})`; + if (enabled === 0) return 'none'; + if (enabled === total) return 'all'; + return `${enabled} / ${total}`; } function filterStatus( @@ -427,12 +427,13 @@ function FilterSection(props: SectionProps): JSX.Element { } : undefined; const update = Dome.useForceUpdate(); Settings.useWindowSettingsEvent(update); - const theLabel = prefix ? `${label} ${filterSummary(prefix)}` : label; + const summary = prefix ? filterSummary(prefix) : undefined ; return ( <Section - label={theLabel} + label={label} settings={settings} defaultUnfold={props.unfold} + infos={summary} rightButtonProps={filterButtonProps} > {props.children}