diff --git a/plugins/ms-ai-architect/playground/ms-ai-architect-playground.html b/plugins/ms-ai-architect/playground/ms-ai-architect-playground.html index 02d5387..7c9b4b0 100644 --- a/plugins/ms-ai-architect/playground/ms-ai-architect-playground.html +++ b/plugins/ms-ai-architect/playground/ms-ai-architect-playground.html @@ -52,13 +52,7 @@ /* .app-shell + .app-shell--wide hentet fra vendored DS v0.3 (tier3-supplement section 25) */ - /* Topbar — vises på alle surfaces unntatt onboarding (uten projekt-kontekst) */ - .topbar { display: flex; align-items: center; justify-content: space-between; padding: var(--space-3) var(--space-5); border-bottom: 1px solid var(--color-border-subtle); background: var(--color-surface); position: sticky; top: 0; z-index: 10; } - .topbar__brand { display: flex; align-items: center; gap: var(--space-2); font-weight: var(--font-weight-semibold); } - .topbar__brand-mark { width: 28px; height: 28px; border-radius: var(--radius-sm); background: var(--color-primary-500); color: var(--color-text-on-primary); display: inline-flex; align-items: center; justify-content: center; font-family: var(--font-family-mono); font-weight: var(--font-weight-bold); font-size: 13px; } - .topbar__nav { display: flex; gap: var(--space-2); align-items: center; } - .topbar__crumb { font-size: var(--font-size-sm); color: var(--color-text-secondary); } - .topbar__crumb a { cursor: pointer; } + /* App-header (.app-header*) hentet fra vendored DS (components.css). */ /* Onboarding-layout: sidebar + main */ .onboarding-layout { display: grid; grid-template-columns: 280px 1fr; gap: var(--space-6); align-items: start; } @@ -95,11 +89,7 @@ .project-tab[aria-current="true"] { color: var(--color-text-primary); border-bottom-color: var(--color-primary-500); } .project-tab__count { display: inline-block; margin-left: 6px; padding: 1px 6px; background: var(--color-bg-soft); border-radius: 10px; font-size: 11px; color: var(--color-text-tertiary); } .command-cards { display: flex; flex-direction: column; gap: var(--space-4); } - .command-card { background: var(--color-surface); border: 1px solid var(--color-border-subtle); border-radius: var(--radius-md); padding: var(--space-4); display: flex; flex-direction: column; gap: var(--space-3); } - .command-card__head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-3); } - .command-card__title { font-size: var(--font-size-md); font-weight: var(--font-weight-semibold); margin: 0; } - .command-card__desc { font-size: var(--font-size-sm); color: var(--color-text-secondary); margin: 4px 0 0; } - .command-card__id { font-family: var(--font-family-mono); font-size: var(--font-size-xs); color: var(--color-text-tertiary); } + /* .card + .card__* hentet fra vendored DS (base.css + tier3-supplement). */ .sub-zone { border-top: 1px solid var(--color-border-subtle); padding-top: var(--space-3); } .sub-zone__heading { font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); text-transform: uppercase; letter-spacing: 0.06em; color: var(--color-text-tertiary); margin: 0 0 var(--space-2); } .paste-import-row { display: flex; flex-direction: column; gap: var(--space-2); } @@ -136,25 +126,16 @@ .catalog-toolbar__count { font-size: var(--font-size-sm); color: var(--color-text-tertiary); } .catalog-groups { display: flex; flex-direction: column; gap: var(--space-3); } .catalog-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: var(--space-3); padding: var(--space-2) 0; } - .catalog-card { background: var(--color-surface); border: 1px solid var(--color-border-subtle); border-radius: var(--radius-md); padding: var(--space-4); display: flex; flex-direction: column; gap: var(--space-2); } - .catalog-card__head { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-2); } - .catalog-card__title { font-size: var(--font-size-md); margin: 0; font-weight: var(--font-weight-semibold); } - .catalog-card__desc { font-size: var(--font-size-sm); color: var(--color-text-secondary); margin: 4px 0 0; } - .catalog-card__pill { padding: 2px 8px; background: var(--color-bg-soft); color: var(--color-text-secondary); border-radius: var(--radius-sm); font-size: 10px; font-weight: var(--font-weight-medium); flex-shrink: 0; text-transform: uppercase; letter-spacing: 0.04em; } - .catalog-card__meta { display: flex; gap: var(--space-2); flex-wrap: wrap; align-items: center; } - .catalog-card__hint { font-size: var(--font-size-xs); color: var(--color-text-tertiary); font-family: var(--font-family-mono); } - .catalog-card__actions { display: flex; gap: var(--space-2); margin-top: auto; padding-top: var(--space-2); } + /* .card + .card__* hentet fra vendored DS (base.css + tier3-supplement). */ .catalog-tool-notice { padding: var(--space-2) var(--space-3); background: var(--color-bg-soft); border-left: 3px solid var(--color-primary-500); border-radius: var(--radius-sm); font-size: var(--font-size-xs); color: var(--color-text-secondary); } - /* Foundation page-shell helpers (v1.10.0 Sesjon 1). - Felles header + verdict-pille + key-stats-grid for alle 17 renderers. - Kandidater for hoisting til shared/playground-design-system/ i en - senere iterasjon (Sesjon 6 visual QA). */ - .page__header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-6); margin: 0 0 var(--space-6) 0; } - .page__title { flex: 1 1 auto; min-width: 0; } - .page__eyebrow { display: block; font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); text-transform: uppercase; letter-spacing: 0.08em; color: var(--color-scope-architect); margin-bottom: var(--space-2); } - .page__title h1 { margin: 0 0 var(--space-3) 0; font-size: var(--font-size-3xl); line-height: var(--line-height-tight); color: var(--color-text-primary); } - .page__lede { margin: 0; max-width: var(--measure); font-size: var(--font-size-lg); color: var(--color-text-secondary); line-height: var(--line-height-snug); } + /* Foundation .page__*, .key-stats, .key-stat--{level} hentet fra vendored DS (tier3-supplement section 14-15). + .top-risks*, .top-risk*, .recommendation-card* hentet fra DS section 18-19. + .pair-before-after*, .pyramide-tier-detail*, .tab-list/.tab/.tab-panel også fra DS. */ + + /* .verdict-pill: plugin-domain semantikk (go/block/approved/allow/warning/n-a) — distinkt fra + DS .verdict-pill-lg (severity-band: critical/high/medium/low/positive). Domain-pillen brukes + av architect-rapporter for GO/BLOCK-beslutninger; severity-pillen brukes for risiko-band. */ .verdict-pill { display: inline-flex; align-items: center; padding: var(--space-2) var(--space-4); border-radius: var(--radius-pill); font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); text-transform: uppercase; letter-spacing: 0.06em; white-space: nowrap; flex-shrink: 0; } .verdict-pill[data-verdict="go"], .verdict-pill[data-verdict="approved"], @@ -164,85 +145,29 @@ .verdict-pill[data-verdict="block"], .verdict-pill[data-verdict="failed"] { background: var(--color-severity-critical); color: var(--color-severity-critical-on); } .verdict-pill[data-verdict="n-a"] { background: var(--color-bg-soft); color: var(--color-text-secondary); border: 1px solid var(--color-border-subtle); } - .key-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: var(--space-4); margin: 0 0 var(--space-6) 0; padding: var(--space-4); background: var(--color-bg-soft); border: 1px solid var(--color-border-subtle); border-radius: var(--radius-md); } - .key-stat { display: flex; flex-direction: column; gap: 2px; } - .key-stat__label { font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); color: var(--color-text-secondary); text-transform: uppercase; letter-spacing: 0.06em; } - .key-stat__value { font-size: var(--font-size-2xl); font-weight: var(--font-weight-bold); color: var(--color-text-primary); font-variant-numeric: tabular-nums; line-height: var(--line-height-tight); } - .key-stat__hint { font-size: var(--font-size-xs); color: var(--color-text-tertiary); } - .key-stat[data-modifier="critical"] .key-stat__value { color: var(--color-severity-critical); } - .key-stat[data-modifier="high"] .key-stat__value { color: var(--color-severity-high); } - .key-stat[data-modifier="medium"] .key-stat__value { color: var(--color-severity-medium); } - .key-stat[data-modifier="low"] .key-stat__value { color: var(--color-severity-low); } - /* Renderer-batch A inlines (v1.10.0 Sesjon 3). Klasser ikke i vendor — - inline her per scope-regel (plugin standalone). Kandidat for hoisting - til shared/playground-design-system/ i Sesjon 6 visual QA. */ - .pyramide-desc { margin: var(--space-4) 0 0 0; display: flex; flex-direction: column; gap: var(--space-2); } - .pyramide-desc__item { background: var(--color-bg-soft); border: 1px solid var(--color-border-subtle); border-radius: var(--radius-sm); padding: var(--space-2) var(--space-3); } - .pyramide-desc__item summary { cursor: pointer; font-weight: var(--font-weight-semibold); color: var(--color-text-primary); } - .pyramide-desc__item[open] summary { margin-bottom: var(--space-2); } - .pyramide-desc__item p { margin: 0; font-size: var(--font-size-sm); color: var(--color-text-secondary); } - - .scenario-card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: var(--space-3); margin: 0 0 var(--space-4) 0; } - .scenario-card { background: var(--color-surface); border: 1px solid var(--color-border-subtle); border-radius: var(--radius-md); padding: var(--space-3) var(--space-4); display: flex; flex-direction: column; gap: var(--space-2); } + /* .scenario-card[data-status="met/partial/missing"]: plugin-spesifikke 3-stadie-status — + DS har kun "winner". Beholdt for AI Act / cost-distribution / capability-matrix-renderers. */ .scenario-card[data-status="met"] { border-left: 4px solid var(--color-state-success); } .scenario-card[data-status="partial"] { border-left: 4px solid var(--color-severity-medium); } .scenario-card[data-status="missing"] { border-left: 4px solid var(--color-severity-critical); } - .scenario-card__head { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-2); } - .scenario-card__source { font-family: var(--font-family-mono); font-size: var(--font-size-xs); color: var(--color-text-tertiary); } - .scenario-card__count { font-family: var(--font-family-mono); font-size: 11px; padding: 2px 8px; background: var(--color-bg-soft); border-radius: var(--radius-pill); color: var(--color-text-secondary); border: 1px solid var(--color-border-subtle); } - .scenario-card__title { font-size: var(--font-size-md); font-weight: var(--font-weight-semibold); color: var(--color-text-primary); margin: 0; } - .residual-pair { display: grid; grid-template-columns: 1fr auto 1fr; gap: var(--space-4); align-items: center; margin: var(--space-4) 0; padding: var(--space-3); background: var(--color-bg-soft); border: 1px solid var(--color-border-subtle); border-radius: var(--radius-md); } - .residual-pair__cell { background: var(--color-surface); border: 1px solid var(--color-border-subtle); border-radius: var(--radius-sm); padding: var(--space-3); display: flex; flex-direction: column; gap: 4px; } - .residual-pair__cell-label { font-size: var(--font-size-xs); text-transform: uppercase; letter-spacing: 0.06em; color: var(--color-text-tertiary); font-weight: var(--font-weight-semibold); } - .residual-pair__cell-value { font-size: var(--font-size-2xl); font-weight: var(--font-weight-bold); font-variant-numeric: tabular-nums; line-height: 1; color: var(--color-text-primary); } - .residual-pair__cell-meta { font-size: var(--font-size-xs); color: var(--color-text-secondary); } - .residual-pair__arrow { font-size: var(--font-size-xl); color: var(--color-text-tertiary); justify-self: center; } - .residual-pair__cell[data-severity="low"] { border-left: 4px solid var(--color-severity-low); } - .residual-pair__cell[data-severity="medium"] { border-left: 4px solid var(--color-severity-medium); } - .residual-pair__cell[data-severity="high"] { border-left: 4px solid var(--color-severity-high); } - .residual-pair__cell[data-severity="critical"] { border-left: 4px solid var(--color-severity-critical); } + /* AI Act-pyramide-overrides: bumpe label-font så tier-tekst ikke klippes, + sikre tilstrekkelig parent-bredde (DS-default har ingen min-width). */ + .pyramide { min-width: 480px; max-width: 100%; } + .pyramide__tier { font-size: var(--font-size-md); padding: var(--space-3) var(--space-4); } + @media (max-width: 560px) { .pyramide { min-width: 0; } .pyramide__tier { font-size: var(--font-size-sm); padding: 8px 12px; } } + /* .read-more-block + .suppressed-panel: native
-baserte mønstre — distinkte fra + DS .read-more og .suppressed (som bruker JS-toggled aria-expanded). */ .read-more-block { margin: var(--space-2) 0; } .read-more-block summary { cursor: pointer; color: var(--color-text-link); font-weight: var(--font-weight-medium); } - - /* Renderer-batch B inlines (v1.10.0 Sesjon 4). Klasser ikke i vendor — - inline her per scope-regel (plugin standalone). Kandidat for hoisting - til shared/playground-design-system/ i Sesjon 6 visual QA. */ - .top-risks { margin: var(--space-4) 0; display: flex; flex-direction: column; gap: var(--space-2); } - .top-risks__heading { margin: 0 0 var(--space-2) 0; font-size: var(--font-size-md); color: var(--color-text-secondary); text-transform: uppercase; letter-spacing: 0.06em; font-weight: var(--font-weight-semibold); } - .top-risk { display: grid; grid-template-columns: 28px 1fr auto; gap: var(--space-3); align-items: center; padding: var(--space-2) var(--space-3); background: var(--color-surface); border: 1px solid var(--color-border-subtle); border-radius: var(--radius-sm); } - .top-risk__rank { font-family: var(--font-family-mono); font-size: var(--font-size-sm); color: var(--color-text-tertiary); font-weight: var(--font-weight-bold); } - .top-risk__desc { font-size: var(--font-size-sm); color: var(--color-text-primary); } - .top-risk__score { font-family: var(--font-family-mono); font-size: var(--font-size-md); font-weight: var(--font-weight-bold); padding: 2px 10px; border-radius: var(--radius-pill); background: var(--color-bg-soft); color: var(--color-text-primary); } - .top-risk[data-severity="critical"] { border-left: 4px solid var(--color-severity-critical); } - .top-risk[data-severity="critical"] .top-risk__score { background: var(--color-severity-critical); color: var(--color-severity-critical-on); } - .top-risk[data-severity="high"] { border-left: 4px solid var(--color-severity-high); } - .top-risk[data-severity="high"] .top-risk__score { background: var(--color-severity-high-soft); color: var(--color-severity-high-on); } - .top-risk[data-severity="medium"] { border-left: 4px solid var(--color-severity-medium); } - .top-risk[data-severity="medium"] .top-risk__score { background: var(--color-severity-medium-soft); color: var(--color-severity-medium-on); } - .top-risk[data-severity="low"] { border-left: 4px solid var(--color-severity-low); } - - .recommendation-card { margin: var(--space-4) 0 0 0; padding: var(--space-4); background: var(--color-bg-soft); border: 1px solid var(--color-border-subtle); border-radius: var(--radius-md); border-left: 4px solid var(--color-scope-architect); display: flex; flex-direction: column; gap: var(--space-2); } - .recommendation-card__label { font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); text-transform: uppercase; letter-spacing: 0.06em; color: var(--color-text-tertiary); } - .recommendation-card__body { font-size: var(--font-size-md); color: var(--color-text-primary); line-height: var(--line-height-snug); } - .suppressed-panel { margin: var(--space-4) 0 0 0; padding: var(--space-3) var(--space-4); background: var(--color-bg-soft); border: 1px dashed var(--color-border-subtle); border-radius: var(--radius-md); opacity: 0.85; } .suppressed-panel summary { cursor: pointer; color: var(--color-text-secondary); font-weight: var(--font-weight-medium); font-size: var(--font-size-sm); } .suppressed-panel[open] summary { margin-bottom: var(--space-2); } .suppressed-panel__list { display: flex; flex-direction: column; gap: var(--space-2); margin: var(--space-2) 0 0 0; } .suppressed-panel__item { padding: var(--space-2) var(--space-3); background: var(--color-surface); border: 1px solid var(--color-border-subtle); border-radius: var(--radius-sm); font-size: var(--font-size-sm); color: var(--color-text-secondary); display: flex; gap: var(--space-3); align-items: baseline; } .suppressed-panel__id { font-family: var(--font-family-mono); font-size: var(--font-size-xs); color: var(--color-text-tertiary); } - - /* Tier 3 A4 — Screen-tabs (segmented). Inline her per scope-regel - (plugin standalone). Kandidat for hoisting til shared/ i Sesjon 6. */ - .screen-tabs { display: flex; gap: var(--space-1); padding: 4px; background: var(--color-bg-soft); border-radius: var(--radius-md); width: fit-content; margin: 0 0 var(--space-4) 0; } - .screen-tab { padding: var(--space-2) var(--space-3); font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); background: transparent; border: none; border-radius: var(--radius-sm); cursor: pointer; color: var(--color-text-secondary); font-family: inherit; } - .screen-tab:hover { color: var(--color-text-primary); } - .screen-tab[aria-current="true"] { background: var(--color-surface); color: var(--color-text-primary); box-shadow: var(--shadow-sm); } - .screen { display: none; } - .screen[data-active="true"] { display: block; } @@ -1716,25 +1641,27 @@ scheduleRender(); } - // Topbar — gjenbrukes på home, catalog, project. Onboarding viser ingen topbar + // App-header — gjenbrukes på home, catalog, project. Onboarding viser ingen header // (full-fokus førstegangs-flyt). Eksport/import-knapper wires opp til // __exportState/__importState fra Step 3. function renderTopbar(crumb) { const orgName = (store.state.shared.organization && store.state.shared.organization.name) || ''; - const crumbHtml = (orgName || crumb) - ? '' + (orgName ? escapeHtml(orgName) : '') + (orgName && crumb ? ' · ' : '') + (crumb || '') + '' + const breadcrumbInner = (orgName ? escapeHtml(orgName) : '') + (orgName && crumb ? ' · ' : '') + (crumb || ''); + const breadcrumbHtml = breadcrumbInner + ? '' : ''; const currentTheme = document.documentElement.getAttribute('data-theme') === 'light' ? 'light' : 'dark'; const themeLabel = currentTheme === 'light' ? 'Lys' : 'Mørk'; const themeNext = currentTheme === 'light' ? 'mørk' : 'lys'; return ( - '
' + - '
' + - '' + + '
' + + '
' + + '' + 'ms-ai-architect' + - crumbHtml + '
' + - '' + + '
' + '
' ); } @@ -1901,15 +1828,18 @@ { label: 'AKTIVE RAPPORTER', value: activeReportCount } ] }, - tracksHtml + - '
' + - '
' + - '

Mine prosjekter

' + - '' + - '
' + - projectListHtml + - (projects.length > 0 ? '
' : '') + - '
' + '
' + + tracksHtml + + '
' + + 'PROSJEKTER · ' + projects.length + ' av ' + projects.length + '' + + '
' + + '

Mine prosjekter

' + + '' + + '
' + + projectListHtml + + (projects.length > 0 ? '
' : '') + + '
' + + '
' ); root.innerHTML = ( @@ -2093,13 +2023,27 @@ // ---- Sub-card rendering ---- function renderCommandSubCard(cmd, projectId) { + // Sev-modifier: hvis rapporten er parsed, mappe verdict til DS card--severity-{level}. + // Plugin-domain-verdicts (go/block/approved/...) → severity-band (positive/critical/medium). + const project = findProject(projectId); + const report = project && project.reports && project.reports[cmd.id]; + const verdict = report && report.parsed && report.parsed.verdict + ? String(report.parsed.verdict).toLowerCase() : ''; + const sevMap = { + 'go': 'positive', 'approved': 'positive', 'allow': 'positive', + 'go-with-conditions': 'medium', 'warning': 'medium', + 'block': 'critical', 'failed': 'critical' + }; + const sevModifier = sevMap[verdict] || ''; + const sevClass = sevModifier ? ' card--severity-' + sevModifier : ''; + const titleHtml = ( - '
' + + '
' + '
' + - '

' + escapeHtml(cmd.label) + '

' + - '

' + escapeHtml(cmd.description) + '

' + + '

' + escapeHtml(cmd.label) + '

' + + '

' + escapeHtml(cmd.description) + '

' + '
' + - '/architect:' + escapeHtml(cmd.id) + '' + + '/architect:' + escapeHtml(cmd.id) + '' + '
' ); @@ -2126,7 +2070,7 @@ '
' ); return ( - '
' + + '
' + titleHtml + formZone + toolNotice + @@ -2156,7 +2100,7 @@ ); return ( - '
' + + '
' + titleHtml + formZone + pasteZone + @@ -2188,7 +2132,7 @@ '' ); - // Screen-tabs (A4 Tier 3): Oversikt / Rapporter / Kontekst / Eksport. + // Tab-list (DS): Oversikt / Rapporter / Kontekst / Eksport. // Sesjon 2: Rapporter er primær; andre er stub-skjermer som fylles ut // i Sesjon 3-6. const SCREENS = [ @@ -2197,10 +2141,10 @@ { id: 'kontekst', label: 'Kontekst' }, { id: 'eksport', label: 'Eksport' } ]; - const screenTabsHtml = '
' @@ -2428,11 +2374,13 @@ { label: 'SKILLS', value: 5 } ] }, - '
' + - '' + - '' + countText + '' + - '
' + - '
' + renderCatalogGroupsHtml() + '
' + '
' + + '
' + + '' + + '' + countText + '' + + '
' + + '
' + renderCatalogGroupsHtml() + '
' + + '
' ); root.innerHTML = ( renderTopbar('Katalog') + @@ -2473,8 +2421,8 @@ ''; }).join(''); - const tierDescsHtml = '
' + tiers.map(function (t) { + const tierDescsHtml = '
' + tiers.map(function (t) { const open = (t.id === activeTier) ? ' open' : ''; - return '
' + + return '
' + '' + escapeHtml(t.label) + '' + - '

' + escapeHtml(t.desc) + '

' + + '
' + escapeHtml(t.desc) + '
' + '
'; }).join('') + '
'; @@ -3652,19 +3600,19 @@ }; const sevBefore = rp.before.score != null ? sevFor(rp.before.score) : ''; const sevAfter = rp.after.score != null ? sevFor(rp.after.score) : ''; - const attrBefore = sevBefore ? ' data-severity="' + sevBefore + '"' : ''; - const attrAfter = sevAfter ? ' data-severity="' + sevAfter + '"' : ''; - residualHtml = '
' + - '
' + - 'FØR TILTAK' + - '' + escapeHtml(labelOf(rp.before)) + '' + - 'Sannsynlighet × konsekvens' + + const cellBefore = 'pair-before-after__cell' + (sevBefore ? ' pair-before-after__cell--severity-' + sevBefore : ''); + const cellAfter = 'pair-before-after__cell' + (sevAfter ? ' pair-before-after__cell--severity-' + sevAfter : ''); + residualHtml = '
' + + '
' + + 'FØR TILTAK' + + '' + escapeHtml(labelOf(rp.before)) + '' + + 'Sannsynlighet × konsekvens' + '
' + - '' + - '
' + - 'ETTER TILTAK' + - '' + escapeHtml(labelOf(rp.after)) + '' + - 'Restrisiko' + + '' + + '
' + + 'ETTER TILTAK' + + '' + escapeHtml(labelOf(rp.after)) + '' + + 'Restrisiko' + '
' + '
'; } @@ -3736,19 +3684,19 @@ }; const sevBefore = rp.before.score != null ? sevForScore(rp.before.score) : ''; const sevAfter = rp.after.score != null ? sevForScore(rp.after.score) : ''; - const attrBefore = sevBefore ? ' data-severity="' + sevBefore + '"' : ''; - const attrAfter = sevAfter ? ' data-severity="' + sevAfter + '"' : ''; - residualHtml = '
' + - '
' + - 'FØR TILTAK' + - '' + escapeHtml(labelOf(rp.before)) + '' + - 'Sannsynlighet × konsekvens' + + const cellBefore = 'pair-before-after__cell' + (sevBefore ? ' pair-before-after__cell--severity-' + sevBefore : ''); + const cellAfter = 'pair-before-after__cell' + (sevAfter ? ' pair-before-after__cell--severity-' + sevAfter : ''); + residualHtml = '
' + + '
' + + 'FØR TILTAK' + + '' + escapeHtml(labelOf(rp.before)) + '' + + 'Sannsynlighet × konsekvens' + '
' + - '' + - '
' + - 'ETTER TILTAK' + - '' + escapeHtml(labelOf(rp.after)) + '' + - 'Restrisiko' + + '' + + '
' + + 'ETTER TILTAK' + + '' + escapeHtml(labelOf(rp.after)) + '' + + 'Restrisiko' + '
' + '
'; } @@ -3806,19 +3754,19 @@ }; const sevBefore = rp.before.score != null ? sevForScore(rp.before.score) : ''; const sevAfter = rp.after.score != null ? sevForScore(rp.after.score) : ''; - const attrBefore = sevBefore ? ' data-severity="' + sevBefore + '"' : ''; - const attrAfter = sevAfter ? ' data-severity="' + sevAfter + '"' : ''; - residualHtml = '
' + - '
' + - 'FØR TILTAK' + - '' + escapeHtml(labelOf(rp.before)) + '' + - 'Sannsynlighet × konsekvens' + + const cellBefore = 'pair-before-after__cell' + (sevBefore ? ' pair-before-after__cell--severity-' + sevBefore : ''); + const cellAfter = 'pair-before-after__cell' + (sevAfter ? ' pair-before-after__cell--severity-' + sevAfter : ''); + residualHtml = '
' + + '
' + + 'FØR TILTAK' + + '' + escapeHtml(labelOf(rp.before)) + '' + + 'Sannsynlighet × konsekvens' + '
' + - '' + - '
' + - 'ETTER TILTAK' + - '' + escapeHtml(labelOf(rp.after)) + '' + - 'Restrisiko' + + '' + + '
' + + 'ETTER TILTAK' + + '' + escapeHtml(labelOf(rp.after)) + '' + + 'Restrisiko' + '
' + '
'; } @@ -4354,8 +4302,8 @@ } return '
' + escapeHtml(txt).replace(/\n/g, '
') + '
'; }; - const tabsNavHtml = tabs.length ? '