lintje 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-elements/actions.js +1 -1
- package/dist-elements/chunks/addon-CFoSG70u.js +5 -0
- package/dist-elements/chunks/base-BsZyWDre.js +226 -0
- package/dist-elements/chunks/{chart-styles-zJy-DGvZ.js → chart-styles-C5IzbVUF.js} +12 -12
- package/dist-elements/chunks/controls-lVYdiFQu.js +1 -0
- package/dist-elements/chunks/dialog-close-CzMRXkJ6.js +1 -0
- package/dist-elements/chunks/{disclosure-DHZz0V4I.js → disclosure-CQcLUnKh.js} +5 -5
- package/dist-elements/chunks/{download-D1wbtARJ.js → download-CxEzwMxI.js} +1 -1
- package/dist-elements/chunks/focus-trap-BDxiHED1.js +1 -0
- package/dist-elements/chunks/follow-7IBDa51N.js +1 -0
- package/dist-elements/chunks/input-C7qx0e4p.js +8 -0
- package/dist-elements/chunks/input-CazTpGUd.js +1 -0
- package/dist-elements/chunks/other-BaLStKaf.js +11 -0
- package/dist-elements/chunks/{player-Dh7ZHcMF.js → player-BEG3MVCm.js} +20 -20
- package/dist-elements/chunks/sentence-CjgQjBP9.js +3 -0
- package/dist-elements/chunks/stagger-CwsMNTLl.js +133 -0
- package/dist-elements/core.js +1 -1
- package/dist-elements/custom-elements.json +509 -68
- package/dist-elements/data-types.json +155 -12
- package/dist-elements/feedback.js +1 -1
- package/dist-elements/guides/events.md +7 -1
- package/dist-elements/inputs.js +1 -1
- package/dist-elements/layout.js +1 -1
- package/dist-elements/lintje.js +1051 -1001
- package/dist-elements/overlays.js +1 -1
- package/dist-elements/tag/activity-log.js +10 -10
- package/dist-elements/tag/ai-label.js +5 -5
- package/dist-elements/tag/announcement.js +9 -9
- package/dist-elements/tag/app-search.js +19 -19
- package/dist-elements/tag/audio-player.js +40 -40
- package/dist-elements/tag/badge.js +1 -1
- package/dist-elements/tag/breadcrumbs.js +8 -8
- package/dist-elements/tag/button.js +1 -1
- package/dist-elements/tag/card-list.js +9 -9
- package/dist-elements/tag/card.js +29 -29
- package/dist-elements/tag/chart.js +379 -379
- package/dist-elements/tag/chat-answer.js +44 -44
- package/dist-elements/tag/chat-composer.js +32 -34
- package/dist-elements/tag/chat-message.js +11 -11
- package/dist-elements/tag/chat-strip.js +27 -27
- package/dist-elements/tag/chat-suggestions.js +9 -9
- package/dist-elements/tag/chat.js +35 -35
- package/dist-elements/tag/checkbox-group.js +17 -9
- package/dist-elements/tag/checkbox.js +10 -10
- package/dist-elements/tag/code.js +9 -9
- package/dist-elements/tag/combobox.js +23 -23
- package/dist-elements/tag/conflict-alert.js +7 -7
- package/dist-elements/tag/copy-button.js +9 -9
- package/dist-elements/tag/data-table.js +217 -213
- package/dist-elements/tag/date-input.js +25 -25
- package/dist-elements/tag/date-range.js +27 -26
- package/dist-elements/tag/description-list.js +17 -17
- package/dist-elements/tag/dialog.js +7 -7
- package/dist-elements/tag/document-viewer.js +35 -27
- package/dist-elements/tag/drawer.js +9 -9
- package/dist-elements/tag/empty-state.js +1 -1
- package/dist-elements/tag/error-page.js +11 -11
- package/dist-elements/tag/error-summary.js +13 -13
- package/dist-elements/tag/expander.js +4 -4
- package/dist-elements/tag/explainer.js +5 -5
- package/dist-elements/tag/field.js +5 -5
- package/dist-elements/tag/file-upload.js +32 -32
- package/dist-elements/tag/filter-bar.js +17 -17
- package/dist-elements/tag/filter-sheet.js +4 -4
- package/dist-elements/tag/filter-zone.js +15 -16
- package/dist-elements/tag/find.js +18 -18
- package/dist-elements/tag/footer.js +14 -14
- package/dist-elements/tag/form-actions.js +3 -3
- package/dist-elements/tag/form-section.js +4 -4
- package/dist-elements/tag/form.js +5 -5
- package/dist-elements/tag/gallery.js +11 -11
- package/dist-elements/tag/grid-item.js +1 -1
- package/dist-elements/tag/grid.js +1 -1
- package/dist-elements/tag/hero.js +7 -7
- package/dist-elements/tag/highlight.js +4 -4
- package/dist-elements/tag/icon-button.js +1 -1
- package/dist-elements/tag/icon.js +1 -1
- package/dist-elements/tag/job-list.js +4 -4
- package/dist-elements/tag/kpi-row.js +5 -5
- package/dist-elements/tag/kpi.js +73 -73
- package/dist-elements/tag/level-meter.js +8 -8
- package/dist-elements/tag/list.js +43 -43
- package/dist-elements/tag/log-viewer.js +80 -80
- package/dist-elements/tag/logo.js +26 -29
- package/dist-elements/tag/map.js +153 -151
- package/dist-elements/tag/menu-button.js +33 -33
- package/dist-elements/tag/modal.js +9 -9
- package/dist-elements/tag/multiselect.js +23 -23
- package/dist-elements/tag/note.js +2 -2
- package/dist-elements/tag/notifications.js +28 -28
- package/dist-elements/tag/number-input.js +20 -19
- package/dist-elements/tag/page-header.js +15 -16
- package/dist-elements/tag/pagination.js +25 -27
- package/dist-elements/tag/popover.js +1 -1
- package/dist-elements/tag/progress-bar.js +1 -1
- package/dist-elements/tag/prose.js +1 -1
- package/dist-elements/tag/qr-code.js +5 -5
- package/dist-elements/tag/radio-group.js +31 -22
- package/dist-elements/tag/range.js +27 -31
- package/dist-elements/tag/recording-status.js +9 -9
- package/dist-elements/tag/repeater.js +5 -5
- package/dist-elements/tag/segmented.js +10 -10
- package/dist-elements/tag/select.js +9 -9
- package/dist-elements/tag/shell.js +253 -264
- package/dist-elements/tag/skeleton.js +1 -1
- package/dist-elements/tag/slot-picker.js +17 -17
- package/dist-elements/tag/sortable-list.js +20 -20
- package/dist-elements/tag/spinner.js +1 -1
- package/dist-elements/tag/split-pane.js +9 -9
- package/dist-elements/tag/status-dot.js +1 -1
- package/dist-elements/tag/stepper.js +14 -14
- package/dist-elements/tag/streaming-text.js +13 -13
- package/dist-elements/tag/sub-nav.js +17 -17
- package/dist-elements/tag/tabs.js +37 -37
- package/dist-elements/tag/tag-input.js +29 -29
- package/dist-elements/tag/text-editor.js +19 -19
- package/dist-elements/tag/text-input.js +54 -39
- package/dist-elements/tag/textarea.js +14 -14
- package/dist-elements/tag/tile.js +1 -1
- package/dist-elements/tag/time-input.js +13 -13
- package/dist-elements/tag/toast.js +8 -8
- package/dist-elements/tag/toggle.js +7 -7
- package/dist-elements/tag/toggletip.js +6 -7
- package/dist-elements/tag/token-value.js +2 -2
- package/dist-elements/tag/tooltip.js +1 -1
- package/dist-elements/tag/transcript.js +32 -32
- package/dist-elements/tag/translator.js +6 -6
- package/dist-elements/tag/tree-view.js +23 -23
- package/dist-elements/tag/user-menu.js +39 -28
- package/dist-elements/tag/video-player.js +14 -14
- package/dist-elements/tokens.css +2 -0
- package/dist-elements/tokens.json +4 -0
- package/dist-elements/types/components/actions/button/button.d.ts +1 -0
- package/dist-elements/types/components/actions/icon/icon.d.ts +2 -1
- package/dist-elements/types/components/actions/icon-button/icon-button.d.ts +0 -5
- package/dist-elements/types/components/actions/logo/logo.d.ts +7 -2
- package/dist-elements/types/components/chat/chat/chat.d.ts +0 -2
- package/dist-elements/types/components/chat/chat-composer/chat-composer.d.ts +1 -11
- package/dist-elements/types/components/content/document-viewer/document-viewer.d.ts +14 -1
- package/dist-elements/types/components/content/log-viewer/log-viewer.d.ts +1 -0
- package/dist-elements/types/components/feedback/job-list/job-list.d.ts +9 -2
- package/dist-elements/types/components/filters/filter-bar/filter-bar.d.ts +3 -0
- package/dist-elements/types/components/filters/filter-sheet/filter-sheet.d.ts +2 -7
- package/dist-elements/types/components/filters/filter-zone/filter-zone.d.ts +0 -2
- package/dist-elements/types/components/forms/error-summary/error-summary.d.ts +5 -1
- package/dist-elements/types/components/forms/form/form.d.ts +10 -3
- package/dist-elements/types/components/forms/form-actions/form-actions.d.ts +4 -1
- package/dist-elements/types/components/frame/app-search/app-search.d.ts +1 -0
- package/dist-elements/types/components/frame/page-header/page-header.d.ts +1 -1
- package/dist-elements/types/components/frame/shell/header.d.ts +6 -8
- package/dist-elements/types/components/frame/shell/navigation.d.ts +0 -7
- package/dist-elements/types/components/frame/shell/shell.d.ts +7 -6
- package/dist-elements/types/components/frame/shell/top-bar.d.ts +5 -2
- package/dist-elements/types/components/frame/user-menu/user-menu.d.ts +15 -2
- package/dist-elements/types/components/index.d.ts +3 -2
- package/dist-elements/types/components/inputs/checkbox-group/checkbox-group.d.ts +13 -7
- package/dist-elements/types/components/inputs/number-input/number-input.d.ts +4 -2
- package/dist-elements/types/components/inputs/radio-group/radio-group.d.ts +16 -4
- package/dist-elements/types/components/inputs/range/range.d.ts +0 -1
- package/dist-elements/types/components/inputs/segmented/segmented.d.ts +0 -2
- package/dist-elements/types/components/inputs/shared/addon.d.ts +14 -0
- package/dist-elements/types/components/inputs/shared/input.d.ts +58 -1
- package/dist-elements/types/components/inputs/text-input/text-input.d.ts +15 -1
- package/dist-elements/types/components/inputs/textarea/textarea.d.ts +3 -2
- package/dist-elements/types/components/layout/tabs/tabs.d.ts +0 -4
- package/dist-elements/types/components/overlays/popover/popover.d.ts +2 -4
- package/dist-elements/types/components/overlays/toggletip/toggletip.d.ts +2 -4
- package/dist-elements/types/components/overlays/tooltip/tooltip.d.ts +0 -2
- package/dist-elements/types/components/shared/controls.d.ts +26 -0
- package/dist-elements/types/components/shared/cut-text.d.ts +6 -0
- package/dist-elements/types/components/shared/dialog.d.ts +8 -2
- package/dist-elements/types/components/shared/focus-trap.d.ts +2 -0
- package/dist-elements/types/components/shared/follow.d.ts +8 -0
- package/dist-elements/types/components/shared/other.d.ts +24 -0
- package/dist-elements/types/components/shared/overflow.d.ts +4 -3
- package/dist-elements/types/components/shared/place.d.ts +5 -0
- package/dist-elements/types/components/tables/data-table/actions.d.ts +1 -1
- package/dist-elements/types/components/tables/data-table/data-table.d.ts +15 -3
- package/dist-elements/types/components/tables/data-table/filters.d.ts +2 -0
- package/dist-elements/types/components/tables/list/list.d.ts +2 -6
- package/dist-elements/types/core/frame-state.d.ts +2 -0
- package/dist-elements/types/icons/register.d.ts +1 -1
- package/dist-elements/types/icons/render.d.ts +1 -1
- package/dist-elements/types/types.d.ts +27 -4
- package/package.json +1 -1
- package/dist-elements/chunks/base-DuuwEY22.js +0 -224
- package/dist-elements/chunks/controls-IwMNNdZt.js +0 -1
- package/dist-elements/chunks/dialog-CuB90unp.js +0 -1
- package/dist-elements/chunks/dialog-close-CIwpGpo7.js +0 -1
- package/dist-elements/chunks/focus-trap-qYvMiFZF.js +0 -1
- package/dist-elements/chunks/frame-resize-observer-BGZg6VbV.js +0 -1
- package/dist-elements/chunks/input-CTxDOlLs.js +0 -1
- package/dist-elements/chunks/input-fzGBdp-5.js +0 -8
- package/dist-elements/chunks/sentence-DCIShaRE.js +0 -3
- package/dist-elements/chunks/stagger-nGiD5JgJ.js +0 -133
|
@@ -1,345 +1,345 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Et as e,F as t,H as n,I as r,O as i,Qt as a,_ as o,cn as s,d as c,f as l,g as u,l as d,ln as f,m as p,o as m,on as h,p as g,r as _,rn as v,tn as y,v as b,y as x}from"../chunks/base-BsZyWDre.js";import{t as S}from"./announcement.js";import"./segmented.js";import{i as C,n as w,t as T}from"../chunks/download-CxEzwMxI.js";import{A as E,C as D,D as O,E as k,O as A,S as j,T as M,_ as N,a as P,c as F,d as I,f as L,h as R,i as z,k as B,l as V,m as H,n as U,o as W,r as G,s as K,t as q,u as J,v as Y,w as ee,y as te}from"../chunks/stagger-CwsMNTLl.js";import{n as X,r as ne}from"../chunks/chart-styles-C5IzbVUF.js";import"./data-table.js";var Z=/* @__PURE__ */ new Set([`ArrowRight`,`ArrowDown`]),Q=/* @__PURE__ */ new Set([`ArrowLeft`,`ArrowUp`]);function re(e){return[`${e.title}: ${e.rows.map(e=>`${e.label} ${e.value}`.trim()).join(`, `)}`,...(e.events??[]).map(e=>`Gebeurtenis ${e.number}: ${e.label}`)].join(`. `)}function ie(e){try{return e.matches(`:focus-visible`)}catch{return!0}}function ae(e,t,n){let r=(t,r)=>{let i=n(r),a=t.closest(`[data-tooltip-anchor]`),o=t.getBoundingClientRect(),s=a?.getBoundingClientRect()??o;e.hoverIndex=r,e.keyFrom=null,e.status=re(i.content),e.showTooltipAt(o.left-s.left+i.x,o.top-s.top+i.y,i.content)};return{keydown(n){if(n.target!==n.currentTarget||t===0)return;let i=e.hoverIndex??e.keyFrom,a=i==null?-1:Math.min(i,t-1),o;if(Z.has(n.key))o=Math.min(t-1,a+1);else if(Q.has(n.key))o=Math.max(0,a-1);else if(n.key===`Home`)o=0;else if(n.key===`End`)o=t-1;else return;n.preventDefault(),r(n.currentTarget,o)},focus(n){let i=n.currentTarget;n.target===i&&t!==0&&ie(i)&&r(i,Math.min(e.hoverIndex??0,t-1))},blur(){e.keyFrom=null,(e.hoverIndex!=null||e.status)&&(e.hoverIndex=null,e.status=``,e.hideTooltip(),e.requestUpdate())}}}function oe(e){return s`<p class="visually-hidden" role="status">${e.status}</p>`}var se=2.5;function $(e,t){let n=[],r=[];return e.forEach((e,i)=>{e==null?(r.length&&n.push(r),r=[]):r.push(t(e,i))}),r.length&&n.push(r),n}var ce=18,le=4,ue=8;function de(e){let t=[];return e.map(e=>{let n=t.findIndex(t=>t.every(t=>Math.abs(t-e)>=22));return n===-1&&(n=t.push([])-1),t[n].push(e),n})}function fe(t,n){let{controller:r,description:i}=n,{labels:a,axisTitle:o,unit:c,asOfIndex:u,asOfLabel:d,pendingHours:g=0,fixedMax:_,small:v=!1}=t,y=(t.events??[]).filter(e=>Number.isInteger(e.index)&&e.index>=0&&e.index<a.length).sort((e,t)=>e.index-t.index).map((e,t)=>({...e,number:t+1})),b=r.id;r.measure({width:!0,height:n.height??(v?`--chart-h-small`:`--chart-h-main`),fit:!!n.expanded&&!n.mobile});let x=t.series.filter(e=>!e.comparison).length>1,S=0,C=t.series.map(e=>({...e,color:H(e.color),symbol:x&&!e.comparison?Y(e.color)?e.color:N[S++%N.length]:void 0})),w=C.filter(e=>!r.hiddenSeries.includes(e.label)),T=C.flatMap(e=>e.values).filter(e=>e!=null),{max:k,ticks:A}=M(_??Math.max(...T,1)),j=ee(A,r.width,{fontFamily:r.fontFamily,minimum:Math.ceil(p(a[0]??``,r.fontFamily)/2)}),P=D(n,{left:j.width}),L=y.map(e=>Math.min(P.width-ce/2,Math.max(ce/2,B(e.index,a.length,P)))),z=de(L),U=z.length?Math.max(...z)+1:0,W=D(n,{left:j.width,...U?{top:U*22+ue}:{}}),K=e=>le+z[e]*22,q=g>6,J=u??a.length-1,X=e=>e.comparison?`var(--color-chart-secondary)`:e.color??`var(--color-chart-default)`,ne=C.map(e=>({label:e.label,color:X(e),shape:e.comparison?`dashed`:`line`,symbol:e.symbol,hidden:r.hiddenSeries.includes(e.label),fixed:C.length<2})),Z=Math.max(1,Math.ceil(a.length/8)),Q=a.map((e,t)=>({label:e,x:B(t,a.length,W),i:t})).filter(e=>e.i%Z===0);function re(e){let t=y.filter(t=>t.index===e);return{title:a[e],rows:w.map(t=>({label:t.label,value:t.values[e]==null?`geen gegevens`:l(t.values[e]),color:X(t)})),...t.length?{events:t}:{}}}let ie=ae(r,a.length,e=>{let t=w.map(t=>t.values[e]).filter(e=>e!=null);return{x:B(e,a.length,W),y:t.length?E(Math.max(...t),k,W):W.top,content:re(e)}}),fe=[g>0?(()=>{let e=B(J,a.length,W),t=q?O(W)/(a.length-1):W.width-W.right-e;return f`<rect x=${e} y=${W.top} width=${Math.max(0,t)}
|
|
2
2
|
height=${W.height-W.top-W.bottom}
|
|
3
|
-
fill="url(#hatch-${b})" />`})():
|
|
4
|
-
${y.map((e,t)=>{let n=B(e.index,
|
|
3
|
+
fill="url(#hatch-${b})" />`})():h,y.length?f`<g>
|
|
4
|
+
${y.map((e,t)=>{let n=B(e.index,a.length,W);return f`<line class="lintje-chart__event-line" x1=${n} x2=${n}
|
|
5
5
|
y1=${K(t)+ce} y2=${W.height-W.bottom} />`})}
|
|
6
|
-
${y.map((e,t)=>
|
|
6
|
+
${y.map((e,t)=>f`
|
|
7
7
|
<rect class="lintje-chart__event-chip" x=${L[t]-ce/2} y=${K(t)}
|
|
8
8
|
width=${ce} height=${ce} />
|
|
9
9
|
<text class="lintje-chart__event-number" x=${L[t]} y=${K(t)+ce/2}
|
|
10
10
|
text-anchor="middle" dominant-baseline="central">${e.number}</text>
|
|
11
11
|
`)}
|
|
12
|
-
</g>`:
|
|
13
|
-
${C.map(e=>{let t=X(e),n=e.comparison?void 0:R(t),r=$(q?e.values.slice(0,J+1):e.values,(e,t)=>({x:B(t,
|
|
12
|
+
</g>`:h,f`<g class="lintje-chart__reveal">
|
|
13
|
+
${C.map(e=>{let t=X(e),n=e.comparison?void 0:R(t),r=$(q?e.values.slice(0,J+1):e.values,(e,t)=>({x:B(t,a.length,W),y:E(e,k,W)}));if(r.length===0)return h;let i=r[r.length-1],o=i[i.length-1],s=W.height-W.bottom,c=!w.includes(e);return f`
|
|
14
14
|
<g class="lintje-chart__series ${c?`is-off`:``}">
|
|
15
|
-
${r.map(r=>{let i=r.map(e=>`${e.x},${e.y}`).join(` `);return
|
|
16
|
-
${e.area&&!e.comparison?
|
|
17
|
-
points=${`${r[0].x},${s} ${i} ${r[r.length-1].x},${s}`} />`:
|
|
18
|
-
${n&&r.length>1?
|
|
19
|
-
${r.length===1?
|
|
15
|
+
${r.map(r=>{let i=r.map(e=>`${e.x},${e.y}`).join(` `);return f`
|
|
16
|
+
${e.area&&!e.comparison?f`<polygon fill=${t} fill-opacity=".14"
|
|
17
|
+
points=${`${r[0].x},${s} ${i} ${r[r.length-1].x},${s}`} />`:h}
|
|
18
|
+
${n&&r.length>1?f`<polyline class="lintje-chart__line lintje-chart__line--casing" points=${i} stroke=${n} />`:h}
|
|
19
|
+
${r.length===1?f`<circle cx=${r[0].x} cy=${r[0].y} r=${se} fill=${t} />`:f`<polyline
|
|
20
20
|
class="lintje-chart__line"
|
|
21
21
|
points=${i}
|
|
22
22
|
stroke=${t}
|
|
23
|
-
stroke-dasharray=${e.comparison?`5 4`:
|
|
23
|
+
stroke-dasharray=${e.comparison?`5 4`:h}
|
|
24
24
|
opacity=${e.comparison?.9:1} />`}
|
|
25
25
|
`})}
|
|
26
26
|
<!-- The line's own shape at its end; a 4 px point there at an early as-of time. -->
|
|
27
|
-
${e.symbol?
|
|
27
|
+
${e.symbol?f`<path class="lintje-chart__line-end" d=${te(e.symbol,4.5,o.x,o.y)} fill=${t} />`:q&&!e.comparison?f`<circle cx=${o.x} cy=${o.y} r="4" fill=${t} />`:h}
|
|
28
28
|
</g>
|
|
29
29
|
`})}
|
|
30
|
-
</g>`,q&&
|
|
31
|
-
cx=${B(t,
|
|
32
|
-
cy=${E(
|
|
33
|
-
<rect x=${
|
|
30
|
+
</g>`,q&&d?F({area:W,index:J,count:a.length,label:`peilmoment ${d}`,pendingHours:g,lastValue:(()=>{let e=w.find(e=>!e.comparison)?.values[J];return e==null?void 0:`${l(e)}${c?` ${c}`:``}`})()}):h,r.hoverIndex==null?h:w.map(e=>{let t=r.hoverIndex,n=e.values[t];return n==null||q&&t>J?h:f`<circle class="lintje-chart__hover-point" r="4" fill=${X(e)}
|
|
31
|
+
cx=${B(t,a.length,W)}
|
|
32
|
+
cy=${E(n,k,W)} />`}),a.map((e,t)=>{let n=B(t,a.length,W),i=O(W)/Math.max(1,a.length-1);return f`
|
|
33
|
+
<rect x=${n-i/2} y=${W.top} width=${i}
|
|
34
34
|
height=${W.height-W.top-W.bottom}
|
|
35
35
|
fill="transparent"
|
|
36
|
-
@mousemove=${e=>
|
|
37
|
-
@mouseleave=${()=>
|
|
38
|
-
`})];return
|
|
36
|
+
@mousemove=${e=>r.hoverAt(t,e,re(t))}
|
|
37
|
+
@mouseleave=${()=>r.hoverAt(null)} />
|
|
38
|
+
`})];return s`
|
|
39
39
|
<div class="lintje-chart-wrap ${v?`lintje-chart--small`:``}"
|
|
40
|
-
${
|
|
41
|
-
${
|
|
42
|
-
@keydown=${e=>
|
|
43
|
-
${I({items:ne,onToggle:e=>
|
|
44
|
-
${V({fontFamily:
|
|
45
|
-
${y.length?
|
|
46
|
-
${y.map(e=>
|
|
40
|
+
${e({"--lintje-event-size":`${ce}px`})}
|
|
41
|
+
${m(r.attach)} ?data-in-view=${r.inView} data-tooltip-anchor
|
|
42
|
+
@keydown=${e=>r.dismiss(e)}>
|
|
43
|
+
${I({items:ne,onToggle:e=>r.toggleSeries(e)})}
|
|
44
|
+
${V({fontFamily:r.fontFamily,id:b,ticks:A,max:k,area:W,formatTick:j.format,axisTitle:o??c,xLabels:Q,description:y.length?`${i} ${y.map(e=>`Gebeurtenis ${e.number}, ${a[e.index]}: ${e.label}.`).join(` `)}`:i,keys:ie},fe)}
|
|
45
|
+
${y.length?s`<ol class="lintje-chart-events" aria-label="Gebeurtenissen">
|
|
46
|
+
${y.map(e=>s`<li class="lintje-chart-events__item">
|
|
47
47
|
<span class="lintje-event-chip"><span class="lintje-event-chip__number">${e.number}</span></span>
|
|
48
|
-
<span><span class="lintje-chart-events__category">${
|
|
48
|
+
<span><span class="lintje-chart-events__category">${a[e.index]}</span> ·
|
|
49
49
|
${e.label}</span>
|
|
50
50
|
</li>`)}
|
|
51
|
-
</ol>`:
|
|
52
|
-
${G(
|
|
53
|
-
${oe(
|
|
51
|
+
</ol>`:h}
|
|
52
|
+
${G(r)}
|
|
53
|
+
${oe(r)}
|
|
54
54
|
</div>
|
|
55
|
-
`}var pe={clickable:!1,state:``,markId:
|
|
55
|
+
`}var pe={clickable:!1,state:``,markId:h,role:h,tabIndex:h,pressed:h,label:h,click:h,keydown:h};function me(e,t){let r=/* @__PURE__ */ new Set;for(let e of t)e?.href&&r.add(e.id);let i=e.selectedId!=null&&r.has(e.selectedId)?e.selectedId:null,a=()=>{i!=null&&e.onClear?.(i)},o=(t,n)=>{if(t.id===i)return a();e.onSelect?.({id:t.id,label:n,href:t.href})};return{active:i,interactive:!!e.onSelect&&r.size>0,of(t,r,a){if(!t?.href||!e.onSelect)return i==null?pe:{...pe,state:`is-muted`};let s=t.id===i;return{clickable:!0,state:`is-clickable ${s?`is-selected`:i==null?``:`is-muted`}`,markId:t.id,role:`button`,tabIndex:0,pressed:s?`true`:`false`,label:a??r,click:i=>{n(i)?(i.preventDefault(),e.onSelect?.({id:t.id,label:r,href:t.href},!0)):i.type===`click`&&o(t,r)},keydown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),o(t,r))}}},escape(e){e.key===`Escape`&&i!=null&&(e.stopPropagation(),a())}}}function he(t,n){let{controller:r,description:i}=n,{labels:a,values:o,axisTitle:u,trend:p,dataLabels:g=!0,small:_=!1,links:v}=t,y=H(t.color)??`var(--color-chart-default)`,b=r.id,x=me(n,v??[]);r.measure({width:!0,height:n.height??(_?`--chart-h-small`:`--chart-h-main`),fit:!!n.expanded&&!n.mobile});let S=o.filter(e=>e!=null),{max:C,ticks:w}=M(Math.max(...S,1)),T=ee(w,r.width,{fontFamily:r.fontFamily}),O=D(n,{left:T.width}),A=O.height-O.bottom,{width:j,bandWidth:N}=k(0,a.length,O),P=g&&o.every(e=>e==null||d(c(e,j),N-4)),F=e=>({title:a[e],rows:[{label:u??`Waarde`,value:o[e]==null?`geen gegevens`:l(o[e]),color:y}]}),I=ae(r,a.length,e=>({x:k(e,a.length,O).center,y:o[e]==null?O.top:E(o[e],C,O),content:F(e)})),L=$(p??[],(e,t)=>({x:k(t,a.length,O).center,y:E(e,C,O)})),R=[o.map((t,n)=>{let i=k(n,a.length,O);if(t==null)return f`<rect class="lintje-chart__missing" x=${i.x} y=${O.top} width=${i.width}
|
|
56
56
|
height=${Math.max(0,A-O.top)} fill="url(#hatch-${b})"
|
|
57
|
-
@mousemove=${e=>
|
|
58
|
-
@mouseleave=${()=>
|
|
59
|
-
<g class="lintje-chart__bar-group ${
|
|
60
|
-
${
|
|
61
|
-
@mousemove=${e=>
|
|
62
|
-
@mouseleave=${()=>
|
|
57
|
+
@mousemove=${e=>r.showTooltip(e,F(n))}
|
|
58
|
+
@mouseleave=${()=>r.hideTooltip()} />`;let o=E(t,C,O),s=x.of(v?.[n],a[n],`${a[n]}: ${l(t)}`);return f`
|
|
59
|
+
<g class="lintje-chart__bar-group ${r.hoverIndex===n?`is-hovered`:``}"
|
|
60
|
+
${e(U(n,a.length))}
|
|
61
|
+
@mousemove=${e=>r.showTooltip(e,F(n))}
|
|
62
|
+
@mouseleave=${()=>r.hideTooltip()}>
|
|
63
63
|
<rect class="lintje-chart__bar lintje-chart__mark ${s.state}"
|
|
64
|
-
x=${
|
|
64
|
+
x=${i.x} y=${o} width=${i.width} height=${Math.max(0,A-o)} fill=${y}
|
|
65
65
|
data-mark-id=${s.markId} role=${s.role} tabindex=${s.tabIndex}
|
|
66
66
|
aria-pressed=${s.pressed} aria-label=${s.label}
|
|
67
67
|
@click=${s.click} @auxclick=${s.click} @keydown=${s.keydown} />
|
|
68
|
-
${P?
|
|
69
|
-
${
|
|
70
|
-
</text>`:
|
|
68
|
+
${P?f`<text x=${i.center} y=${o-5} text-anchor="middle" class="lintje-chart__data-label">
|
|
69
|
+
${c(t,i.width)}
|
|
70
|
+
</text>`:h}
|
|
71
71
|
</g>
|
|
72
|
-
`}),L.length?
|
|
73
|
-
${L.map(e=>e.length===1?
|
|
74
|
-
fill="var(--color-chart-emphasis)" />`:
|
|
72
|
+
`}),L.length?f`<g class="lintje-chart__trend">
|
|
73
|
+
${L.map(e=>e.length===1?f`<circle cx=${e[0].x} cy=${e[0].y} r=${se}
|
|
74
|
+
fill="var(--color-chart-emphasis)" />`:f`<polyline fill="none" stroke="var(--color-chart-emphasis)" stroke-width="1.5"
|
|
75
75
|
stroke-dasharray="5 4"
|
|
76
76
|
points=${e.map(e=>`${e.x},${e.y}`).join(` `)} />`)}
|
|
77
|
-
</g>`:
|
|
78
|
-
<div class="lintje-chart-wrap ${
|
|
79
|
-
${
|
|
80
|
-
@keydown=${e=>
|
|
81
|
-
${V({fontFamily:
|
|
82
|
-
${G(
|
|
83
|
-
${oe(
|
|
77
|
+
</g>`:h];return s`
|
|
78
|
+
<div class="lintje-chart-wrap ${_?`lintje-chart--small`:``}"
|
|
79
|
+
${m(r.attach)} ?data-in-view=${r.inView} data-tooltip-anchor
|
|
80
|
+
@keydown=${e=>r.dismiss(e)||x.escape(e)}>
|
|
81
|
+
${V({fontFamily:r.fontFamily,id:b,ticks:w,max:C,area:O,axisTitle:u,description:i,formatTick:T.format,xLabels:a.map((e,t)=>({label:e,x:k(t,a.length,O).center})),interactive:x.interactive,keys:I},R)}
|
|
82
|
+
${G(r)}
|
|
83
|
+
${oe(r)}
|
|
84
84
|
</div>
|
|
85
|
-
`}function ge(e){return e*26+24}function _e(
|
|
86
|
-
<figure class="lintje-chart lintje-chart--rows" ${
|
|
85
|
+
`}function ge(e){return e*26+24}function _e(t,n){let{controller:r,description:i}=n,{rows:a,threshold:o,thresholdLabel:c,unit:u}=t,d=H(t.color)??`var(--color-chart-dark-yellow)`,p=H(t.aboveThresholdColor)??`var(--color-chart-red)`,g=r.id,_=a.map(e=>e.href?{id:e.id??e.label,href:e.href}:null),v=me(n,_),y=ge(a.length);r.measure({width:!0,height:y});let b=r.width,x=A(a.map(e=>e.label),b,{fontFamily:r.fontFamily}),{labelEnd:S,barStart:C}=x,w=Math.max(...a.map(e=>e.value),o??0)*1.15,T=e=>Math.max(40,b-C-60)*e/w,E=e=>`${l(e)}${u?` ${u}`:``}`,D=e=>{let t=a[e],n=o!=null&&t.value>o;return{title:t.label,rows:[{label:`Waarde`,value:E(t.value),color:n?p:d},...o==null?[]:[{label:`Norm`,value:E(o),color:`var(--color-chart-emphasis)`}]]}},O=ae(r,a.length,e=>({x:C+T(a[e].value),y:e*26+4,content:D(e)}));return s`
|
|
86
|
+
<figure class="lintje-chart lintje-chart--rows" ${m(r.attach)} ?data-in-view=${r.inView}
|
|
87
87
|
data-tooltip-anchor
|
|
88
|
-
@keydown=${e=>
|
|
88
|
+
@keydown=${e=>r.dismiss(e)||v.escape(e)}>
|
|
89
89
|
<svg viewBox="0 0 ${b} ${y}" class="lintje-chart__svg" role=${W(v.interactive)}
|
|
90
|
-
aria-labelledby="${
|
|
91
|
-
${
|
|
90
|
+
aria-labelledby="${g}-desc" width=${b} height=${y}
|
|
91
|
+
${e({height:`${y}px`,...K(g)})}
|
|
92
92
|
tabindex="0" @keydown=${O.keydown} @focus=${O.focus} @blur=${O.blur}>
|
|
93
|
-
<desc id="${
|
|
94
|
-
<defs>${J(
|
|
95
|
-
${
|
|
96
|
-
<line x1=${C+T(
|
|
93
|
+
<desc id="${g}-desc">${i}</desc>
|
|
94
|
+
<defs>${J(g)}</defs>
|
|
95
|
+
${o==null?h:f`
|
|
96
|
+
<line x1=${C+T(o)} x2=${C+T(o)} y1=${4} y2=${a.length*26+2}
|
|
97
97
|
stroke="var(--color-chart-emphasis)" stroke-width="1" stroke-dasharray="3 3" />
|
|
98
|
-
<text x=${C+T(
|
|
99
|
-
${
|
|
98
|
+
<text x=${C+T(o)+6} y=${a.length*26+16} class="lintje-chart__axis-label">
|
|
99
|
+
${c??`norm ${l(o)}`}
|
|
100
100
|
</text>
|
|
101
101
|
`}
|
|
102
|
-
${
|
|
103
|
-
<g class="lintje-chart__bar-row ${
|
|
104
|
-
@mousemove=${e=>
|
|
105
|
-
@mouseleave=${()=>
|
|
102
|
+
${a.map((t,n)=>{let i=n*26+4,s=o!=null&&t.value>o,c=T(t.value),m=v.of(_[n],t.label,`${t.label}: ${l(t.value)}${u?` ${u}`:``}`);return f`
|
|
103
|
+
<g class="lintje-chart__bar-row ${r.hoverIndex===n?`is-hovered`:``}"
|
|
104
|
+
@mousemove=${e=>r.showTooltip(e,D(n))}
|
|
105
|
+
@mouseleave=${()=>r.hideTooltip()}>
|
|
106
106
|
<!-- Hit area across the whole row, so the tooltip doesn't flicker between bars. -->
|
|
107
|
-
<rect x=${0} y=${
|
|
108
|
-
<text x=${S} y=${
|
|
107
|
+
<rect x=${0} y=${i-5} width=${b} height=${26} fill="transparent" />
|
|
108
|
+
<text x=${S} y=${i+16-3} text-anchor="end" class="lintje-chart__axis-label">${x.fit(t.label)}</text>
|
|
109
109
|
<rect class="lintje-chart__bar lintje-chart__bar--horizontal lintje-chart__mark ${m.state}"
|
|
110
|
-
${
|
|
111
|
-
x=${C} y=${
|
|
112
|
-
fill=${s?
|
|
110
|
+
${e(U(n,a.length))}
|
|
111
|
+
x=${C} y=${i} width=${Math.max(0,c)} height=${16}
|
|
112
|
+
fill=${s?p:d}
|
|
113
113
|
data-mark-id=${m.markId} role=${m.role} tabindex=${m.tabIndex}
|
|
114
114
|
aria-pressed=${m.pressed} aria-label=${m.label}
|
|
115
115
|
@click=${m.click} @auxclick=${m.click} @keydown=${m.keydown} />
|
|
116
|
-
<text x=${C+
|
|
117
|
-
class="lintje-chart__data-label ${
|
|
118
|
-
${
|
|
116
|
+
<text x=${C+c+6} y=${i+16-3} font-weight="700"
|
|
117
|
+
class="lintje-chart__data-label ${o==null?``:`lintje-chart__data-label--halo`}">
|
|
118
|
+
${l(t.value)}${u?` ${u}`:``}
|
|
119
119
|
</text>
|
|
120
120
|
</g>
|
|
121
121
|
`})}
|
|
122
122
|
</svg>
|
|
123
|
-
${G(
|
|
124
|
-
${oe(
|
|
123
|
+
${G(r)}
|
|
124
|
+
${oe(r)}
|
|
125
125
|
</figure>
|
|
126
|
-
`}function ve(
|
|
127
|
-
<figure class="lintje-chart lintje-chart--rows" ${
|
|
128
|
-
data-tooltip-anchor @keydown=${e=>
|
|
129
|
-
<svg viewBox="0 0 ${u} ${
|
|
130
|
-
aria-labelledby="${
|
|
126
|
+
`}function ve(t,n){let{controller:r,description:i}=n,{rows:a,target:o=100}=t,c=r.id,l=ge(a.length);r.measure({width:!0,height:l});let u=r.width,d=A(a.map(e=>e.label),u,{fontFamily:r.fontFamily}),{labelEnd:p,barStart:h}=d,_=e=>Math.max(40,u-h-70)*e/110,v=h+_(o),y=e=>e>=o?`var(--color-chart-green)`:`var(--color-attention)`,b=e=>({title:a[e].label,rows:[{label:`Voortgang`,value:g(a[e].value),color:y(a[e].value)},{label:`Doel`,value:g(o),color:`var(--color-chart-emphasis)`}]}),x=ae(r,a.length,e=>({x:h+_(a[e].value),y:e*26+4,content:b(e)}));return s`
|
|
127
|
+
<figure class="lintje-chart lintje-chart--rows" ${m(r.attach)} ?data-in-view=${r.inView}
|
|
128
|
+
data-tooltip-anchor @keydown=${e=>r.dismiss(e)}>
|
|
129
|
+
<svg viewBox="0 0 ${u} ${l}" class="lintje-chart__svg" role="img"
|
|
130
|
+
aria-labelledby="${c}-desc" width=${u} height=${l} ${e({height:`${l}px`})}
|
|
131
131
|
tabindex="0" @keydown=${x.keydown} @focus=${x.focus} @blur=${x.blur}>
|
|
132
|
-
<desc id="${
|
|
133
|
-
${
|
|
134
|
-
<g class="lintje-chart__bar-row ${
|
|
135
|
-
@mousemove=${e=>
|
|
136
|
-
@mouseleave=${()=>
|
|
137
|
-
<rect x=${0} y=${
|
|
138
|
-
<text x=${
|
|
139
|
-
<rect class="lintje-chart__bar lintje-chart__bar--horizontal" ${
|
|
140
|
-
x=${
|
|
141
|
-
<text x=${
|
|
142
|
-
text-anchor=${
|
|
143
|
-
class="lintje-chart__data-label ${
|
|
132
|
+
<desc id="${c}-desc">${i}</desc>
|
|
133
|
+
${a.map((t,n)=>{let i=n*26+4,s=_(t.value),c=y(t.value),l=h+s+46>u,m=t.value>=o?`lintje-chart__data-label--inside`:`lintje-chart__data-label--inside-light`;return f`
|
|
134
|
+
<g class="lintje-chart__bar-row ${r.hoverIndex===n?`is-hovered`:``}"
|
|
135
|
+
@mousemove=${e=>r.showTooltip(e,b(n))}
|
|
136
|
+
@mouseleave=${()=>r.hideTooltip()}>
|
|
137
|
+
<rect x=${0} y=${i-5} width=${u} height=${26} fill="transparent" />
|
|
138
|
+
<text x=${p} y=${i+16-3} text-anchor="end" class="lintje-chart__axis-label">${d.fit(t.label)}</text>
|
|
139
|
+
<rect class="lintje-chart__bar lintje-chart__bar--horizontal" ${e(U(n,a.length))}
|
|
140
|
+
x=${h} y=${i} width=${Math.max(0,s)} height=${16} fill=${c} />
|
|
141
|
+
<text x=${l?h+s-6:h+s+6} y=${i+16-3}
|
|
142
|
+
text-anchor=${l?`end`:`start`}
|
|
143
|
+
class="lintje-chart__data-label ${l?m:``}" font-weight="700">${g(t.value)}</text>
|
|
144
144
|
</g>
|
|
145
145
|
`})}
|
|
146
|
-
<line x1=${
|
|
146
|
+
<line x1=${v} x2=${v} y1=${0} y2=${a.length*26+2}
|
|
147
147
|
stroke="var(--color-chart-emphasis)" stroke-width="1" stroke-dasharray="3 3" />
|
|
148
|
-
<text x=${
|
|
148
|
+
<text x=${v+6} y=${a.length*26+16} class="lintje-chart__axis-label">norm ${o}</text>
|
|
149
149
|
</svg>
|
|
150
|
-
${G(
|
|
151
|
-
${oe(
|
|
150
|
+
${G(r)}
|
|
151
|
+
${oe(r)}
|
|
152
152
|
</figure>
|
|
153
|
-
`}var ye=/* @__PURE__ */ new WeakMap;function be(e,t){return e.duration>0?Math.min(1,(t-e.start)/e.duration):1}function xe(e,t){let n=be(e,t);if(n>=1)return e.to;let r=e.ease(n);return e.to.map((t,n)=>e.from[n]+(t-e.from[n])*r)}function Se(e,t,n){let r=performance.now(),i=ye.get(e);if(!i||i.key!==t){let a={key:t,from:n,to:n,start:r,duration:0,ease:e=>e,element:i?.element,attach:e=>{a.element=e}};return ye.set(e,a),n}if(i.to.some((e,t)=>e!==n[t])){let t=i.element,a=!t||x();if(i.from=a?n:xe(i,r),i.to=n,i.start=r,i.duration=a?0:
|
|
154
|
-
<g class="lintje-chart__bar-group ${
|
|
155
|
-
${
|
|
156
|
-
@mousemove=${e=>
|
|
157
|
-
@mouseleave=${()=>
|
|
158
|
-
${
|
|
153
|
+
`}var ye=/* @__PURE__ */ new WeakMap;function be(e,t){return e.duration>0?Math.min(1,(t-e.start)/e.duration):1}function xe(e,t){let n=be(e,t);if(n>=1)return e.to;let r=e.ease(n);return e.to.map((t,n)=>e.from[n]+(t-e.from[n])*r)}function Se(e,t,n){let r=performance.now(),i=ye.get(e);if(!i||i.key!==t){let a={key:t,from:n,to:n,start:r,duration:0,ease:e=>e,element:i?.element,attach:e=>{a.element=e}};return ye.set(e,a),n}if(i.to.some((e,t)=>e!==n[t])){let t=i.element,a=!t||x();if(i.from=a?n:xe(i,r),i.to=n,i.start=r,i.duration=a?0:o(t,`--dur-layer`),i.ease=t?b(t,`--ease-in-motion`):e=>e,i.frame==null&&i.duration>0){let t=i,n=()=>{t.frame=void 0;let r=be(t,performance.now())>=1;e.requestUpdate(),r||(t.frame=requestAnimationFrame(n))};t.frame=requestAnimationFrame(n)}}return xe(i,r)}function Ce(e){return ye.get(e)}function we(t,n){let{controller:r,description:i}=n,{labels:a,axisTitle:o,small:u=!1}=t,p=r.id;r.measure({width:!0,height:n.height??(u?`--chart-h-small`:`--chart-h-main`),fit:!!n.expanded&&!n.mobile});let g=t.series.map((e,t)=>({...e,color:H(e.color)??(t===0?`var(--color-chart-default)`:`var(--color-chart-secondary)`),hidden:r.hiddenSeries.includes(e.label)})),_=g.filter(e=>!e.hidden),v=me(n,_.flatMap(e=>e.links??[])),{max:y,ticks:b}=M(Math.max(...g.flatMap(e=>e.values),1)),x=ee(b,r.width,{fontFamily:r.fontFamily}),S=D(n,{left:x.width}),C=S.height-S.bottom,w=k(0,a.length,S).width/Math.max(1,_.length),T=Se(r,g.map(e=>e.label).join(`\0`),g.map(e=>+!e.hidden)),O=Ce(r),A=k(0,a.length,S).width/Math.max(1,T.reduce((e,t)=>e+t,0)),j=T.map((e,t)=>T.slice(0,t).reduce((e,t)=>e+t,0)*A),N=_.every(e=>e.values.every(e=>d(c(e,w),w-2))),P=g.map(e=>({label:e.label,color:e.color,shape:`square`,hidden:e.hidden,fixed:g.length<2})),F=e=>({title:a[e],rows:_.map(t=>({label:t.label,value:l(t.values[e]),color:t.color}))}),L=ae(r,a.length,e=>({x:k(e,a.length,S).center,y:E(Math.max(0,..._.map(t=>t.values[e])),y,S),content:F(e)})),R=a.map((t,n)=>{let i=k(n,a.length,S);return f`
|
|
154
|
+
<g class="lintje-chart__bar-group ${r.hoverIndex===n?`is-hovered`:``}"
|
|
155
|
+
${e(U(n,a.length))}
|
|
156
|
+
@mousemove=${e=>r.showTooltip(e,F(n))}
|
|
157
|
+
@mouseleave=${()=>r.hideTooltip()}>
|
|
158
|
+
${g.map((e,r)=>{let a=e.values[n],o=E(a,y,S),s=i.x+j[r],u=Math.max(0,T[r]*A-2),d=e.hidden?void 0:v.of(e.links?.[n],`${t} · ${e.label}`,`${t}, ${e.label}: ${l(a)}`);return f`
|
|
159
159
|
<g>
|
|
160
|
-
<rect class="lintje-chart__bar lintje-chart__mark ${
|
|
161
|
-
x=${s} y=${o} width=${
|
|
162
|
-
height=${Math.max(0,C-o)} fill=${
|
|
163
|
-
data-mark-id=${
|
|
164
|
-
tabindex=${
|
|
165
|
-
aria-label=${
|
|
166
|
-
@click=${
|
|
160
|
+
<rect class="lintje-chart__bar lintje-chart__mark ${d?.state??``}"
|
|
161
|
+
x=${s} y=${o} width=${u}
|
|
162
|
+
height=${Math.max(0,C-o)} fill=${e.color}
|
|
163
|
+
data-mark-id=${d?.markId??h} role=${d?.role??h}
|
|
164
|
+
tabindex=${d?.tabIndex??h} aria-pressed=${d?.pressed??h}
|
|
165
|
+
aria-label=${d?.label??h} aria-hidden=${d?h:`true`}
|
|
166
|
+
@click=${d?.click??h} @auxclick=${d?.click??h} @keydown=${d?.keydown??h} />
|
|
167
167
|
<!-- Every label keeps its node and fades, so one that fits after a switch does not
|
|
168
168
|
draw in again. -->
|
|
169
|
-
<g class="lintje-chart__series ${!
|
|
170
|
-
<text x=${s+
|
|
171
|
-
class="lintje-chart__data-label">${
|
|
169
|
+
<g class="lintje-chart__series ${!e.hidden&&N?``:`is-off`}">
|
|
170
|
+
<text x=${s+u/2} y=${o-4} text-anchor="middle"
|
|
171
|
+
class="lintje-chart__data-label">${c(a,w)}</text>
|
|
172
172
|
</g>
|
|
173
173
|
</g>
|
|
174
174
|
`})}
|
|
175
175
|
</g>
|
|
176
|
-
`});return
|
|
177
|
-
<div class="lintje-chart-wrap ${
|
|
178
|
-
${
|
|
179
|
-
@keydown=${e=>
|
|
180
|
-
${I({items:P,onToggle:e=>
|
|
181
|
-
${V({fontFamily:
|
|
182
|
-
${G(
|
|
183
|
-
${oe(
|
|
176
|
+
`});return s`
|
|
177
|
+
<div class="lintje-chart-wrap ${u?`lintje-chart--small`:``}"
|
|
178
|
+
${m(r.attach)} ?data-in-view=${r.inView} data-tooltip-anchor
|
|
179
|
+
@keydown=${e=>r.dismiss(e)||v.escape(e)}>
|
|
180
|
+
${I({items:P,onToggle:e=>r.toggleSeries(e)})}
|
|
181
|
+
${V({fontFamily:r.fontFamily,id:p,ticks:b,max:y,area:S,axisTitle:o,description:i,formatTick:x.format,xLabels:a.map((e,t)=>({label:e,x:k(t,a.length,S).center})),interactive:v.interactive,keys:L},f`<g ${m(O.attach)}>${R}</g>`)}
|
|
182
|
+
${G(r)}
|
|
183
|
+
${oe(r)}
|
|
184
184
|
</div>
|
|
185
|
-
`}var Te=[[1],[1,4],[1,2,4],[1,2,3,4],[1,2,3,4,5]];function Ee(e,t){if(e<1)return[];let n=Te[Math.min(e,Te.length)-1];return
|
|
186
|
-
<g class="lintje-chart__bar-group ${
|
|
187
|
-
${
|
|
188
|
-
@mousemove=${e=>
|
|
189
|
-
@mouseleave=${()=>
|
|
185
|
+
`}var Te=[[1],[1,4],[1,2,4],[1,2,3,4],[1,2,3,4,5]];function Ee(e,t){if(e<1)return[];let n=Te[Math.min(e,Te.length)-1];return _(t)?n.map(e=>e===1?`var(--color-chart-${t})`:`var(--color-chart-${t}-tint-${e})`):n.map(e=>`var(--color-chart-tint-${e})`)}var De=/* @__PURE__ */ new Set([`sky-blue`,`red`,`green`,`violet`,`dark-green`,`purple`,`ruby-red`,`dark-brown`,`brown`,`dark-blue`,`moss-green`]);function Oe(t,n){let{controller:r,description:i}=n,{labels:a,axisTitle:o,normalized:u=!1,totalOnTop:p=!0,small:_=!1}=t,v=r.id;r.measure({width:!0,height:n.height??(_?`--chart-h-small`:`--chart-h-main`),fit:!!n.expanded&&!n.mobile});let y=t.series.map((e,t)=>({...e,j:t,color:H(e.color),hidden:r.hiddenSeries.includes(e.label)})),b=y.filter(e=>!e.hidden),x=me(n,b.flatMap(e=>e.links??[])),S=a.map((e,t)=>y.reduce((e,n)=>e+n.values[t],0)),C=a.map((e,t)=>b.reduce((e,n)=>e+n.values[t],0)),w=(e,t)=>e/(S[t]||1)*100,T=Se(r,y.map(e=>e.label).join(`\0`),y.map(e=>+!e.hidden)),O=Ce(r),{max:A,ticks:j}=u?{max:100,ticks:[0,25,50,75,100]}:M(Math.max(...S,1)),N=ee(j,r.width,{fontFamily:r.fontFamily}),P=D(n,{left:N.width}),F=P.height-P.bottom,{width:L,bandWidth:R}=k(0,a.length,P),z=p&&!u,B=z&&C.every(e=>d(c(e,R),R-4)),W=Ee(y.length),K=(e,t)=>e.color??W[Math.min(t,W.length-1)],q=e=>{let n=t.series[e].color;return n===`remainder`?`lintje-chart__data-label--inside-text`:(n==null?e===0:De.has(n))?`lintje-chart__data-label--inside`:`lintje-chart__data-label--inside-light`},J=e=>({title:a[e],rows:b.map(t=>({label:t.label,value:u?g(w(t.values[e],e)):l(t.values[e]),color:K(t,t.j)}))}),Y=ae(r,a.length,e=>({x:k(e,a.length,P).center,y:E(u?w(C[e],e):C[e],A,P),content:J(e)})),te=y.map(e=>({label:e.label,color:K(e,e.j),shape:`square`,hidden:e.hidden,fixed:y.length<2})),X=a.map((t,n)=>{let i=k(n,a.length,P),o=0,s=y.map(e=>{let{j:t}=e,r=e.values[n],i=u?w(r,n):r,a=E(o,A,P);o+=i*T[t];let s=E(o,A,P);return{row:e,j:t,value:i,y1:s,height:Math.max(0,a-s)}}),p=E(o,A,P);return f`
|
|
186
|
+
<g class="lintje-chart__bar-group ${r.hoverIndex===n?`is-hovered`:``}"
|
|
187
|
+
${e(U(n,a.length))}
|
|
188
|
+
@mousemove=${e=>r.showTooltip(e,J(n))}
|
|
189
|
+
@mouseleave=${()=>r.hideTooltip()}>
|
|
190
190
|
<!-- The hit area under the whole column, so the tooltip also follows the empty
|
|
191
191
|
space above the stack. It lies *under* the segments: on top it swallowed
|
|
192
192
|
every click on a segment that drills. -->
|
|
193
|
-
<rect x=${
|
|
193
|
+
<rect x=${i.x} y=${P.top} width=${i.width} height=${F-P.top} fill="transparent" />
|
|
194
194
|
<!-- The segments in one group, so the column lifts on hover as a whole. -->
|
|
195
195
|
<g class="lintje-chart__bar">
|
|
196
|
-
${
|
|
197
|
-
<rect class="lintje-chart__mark lintje-chart__segment ${
|
|
198
|
-
x=${
|
|
199
|
-
fill=${K(
|
|
200
|
-
data-mark-id=${
|
|
201
|
-
tabindex=${
|
|
202
|
-
aria-label=${
|
|
203
|
-
@click=${
|
|
196
|
+
${s.map(e=>{let r=e.row.hidden?void 0:x.of(e.row.links?.[n],`${t} · ${e.row.label}`,`${t}, ${e.row.label}: ${l(e.row.values[n])}`);return f`
|
|
197
|
+
<rect class="lintje-chart__mark lintje-chart__segment ${r?.state??``}"
|
|
198
|
+
x=${i.x} y=${e.y1} width=${i.width} height=${e.height}
|
|
199
|
+
fill=${K(e.row,e.j)}
|
|
200
|
+
data-mark-id=${r?.markId??h} role=${r?.role??h}
|
|
201
|
+
tabindex=${r?.tabIndex??h} aria-pressed=${r?.pressed??h}
|
|
202
|
+
aria-label=${r?.label??h} aria-hidden=${r?h:`true`}
|
|
203
|
+
@click=${r?.click??h} @auxclick=${r?.click??h} @keydown=${r?.keydown??h} />
|
|
204
204
|
`})}
|
|
205
205
|
</g>
|
|
206
206
|
<!-- Percentages inside the segments when they are >= 16 px tall and fit the width. Each
|
|
207
207
|
keeps its node and fades, so a switch does not draw it in again. -->
|
|
208
|
-
${s
|
|
209
|
-
<g class="lintje-chart__series ${!e.row.hidden&&e.height>=16&&
|
|
210
|
-
<text x=${
|
|
211
|
-
class="lintje-chart__data-label ${q(e.j)}">${
|
|
212
|
-
</g>`):
|
|
213
|
-
${z?
|
|
214
|
-
<text x=${
|
|
215
|
-
class="lintje-chart__data-label" font-weight="700">${
|
|
216
|
-
</g>`:
|
|
208
|
+
${u?s.map(e=>f`
|
|
209
|
+
<g class="lintje-chart__series ${!e.row.hidden&&e.height>=16&&d(g(e.value),L-4)?``:`is-off`}">
|
|
210
|
+
<text x=${i.center} y=${e.y1+e.height/2+4} text-anchor="middle"
|
|
211
|
+
class="lintje-chart__data-label ${q(e.j)}">${g(e.value)}</text>
|
|
212
|
+
</g>`):h}
|
|
213
|
+
${z?f`<g class="lintje-chart__series ${B?``:`is-off`}">
|
|
214
|
+
<text x=${i.center} y=${p-5} text-anchor="middle"
|
|
215
|
+
class="lintje-chart__data-label" font-weight="700">${c(C[n],i.bandWidth)}</text>
|
|
216
|
+
</g>`:h}
|
|
217
217
|
</g>
|
|
218
|
-
`});return
|
|
219
|
-
<div class="lintje-chart-wrap ${
|
|
220
|
-
${
|
|
221
|
-
@keydown=${e=>
|
|
222
|
-
${I({items:te,onToggle:e=>
|
|
223
|
-
${V({fontFamily:
|
|
224
|
-
${G(
|
|
225
|
-
${oe(
|
|
218
|
+
`});return s`
|
|
219
|
+
<div class="lintje-chart-wrap ${_?`lintje-chart--small`:``}"
|
|
220
|
+
${m(r.attach)} ?data-in-view=${r.inView} data-tooltip-anchor
|
|
221
|
+
@keydown=${e=>r.dismiss(e)||x.escape(e)}>
|
|
222
|
+
${I({items:te,onToggle:e=>r.toggleSeries(e)})}
|
|
223
|
+
${V({fontFamily:r.fontFamily,id:v,ticks:j,max:A,area:P,axisTitle:o,description:i,formatTick:N.format,xLabels:a.map((e,t)=>({label:e,x:k(t,a.length,P).center})),interactive:x.interactive,keys:Y},f`<g ${m(O.attach)}>${X}</g>`)}
|
|
224
|
+
${G(r)}
|
|
225
|
+
${oe(r)}
|
|
226
226
|
</div>
|
|
227
|
-
`}var ke=`geen gegevens`;function Ae(e,t){let{controller:n,description:r}=t,{labels:i,axisTitle:a,unit:o,small:
|
|
228
|
-
${e.segments.map(e=>
|
|
227
|
+
`}var ke=`geen gegevens`;function Ae(e,t){let{controller:n,description:r}=t,{labels:i,axisTitle:a,unit:o,small:c=!1}=e,u=n.id,d=i.length;n.measure({width:!0,height:t.height??(c?`--chart-h-small`:`--chart-h-main`),fit:!!t.expanded&&!t.mobile});let g=Ee(e.series.length,e.color),_=e.series.map((e,t)=>({...e,color:g[Math.min(t,g.length-1)],hidden:n.hiddenSeries.includes(e.label)})),v=_.filter(e=>!e.hidden),y=Se(n,_.map(e=>e.label).join(`\0`),_.map(e=>+!e.hidden)),b=y.some((e,t)=>e!==+!_[t].hidden),x=Ce(n),S=_.map(()=>i.map(()=>!1)),C=_.map(()=>i.map(()=>0)),w=_.map(()=>i.map(()=>0)),T=i.map(()=>!1);i.forEach((e,t)=>{let n=0;_.forEach((e,r)=>{if(y[r]===0)return;let i=e.values[t];T[t]||i==null?T[t]=!0:(S[r][t]=!0,C[r][t]=n,n+=i*y[r],w[r][t]=n)})});let k=y.some(e=>e>0),A=i.map((e,t)=>_.map(e=>e.values[t]).filter(e=>e!=null)).filter(e=>e.length>0).map(e=>e.reduce((e,t)=>e+t,0)),{max:j,ticks:N}=M(Math.max(...A,1)),P=ee(N,n.width,{fontFamily:n.fontFamily,minimum:Math.ceil(p(i[0]??``,n.fontFamily)/2)}),F=D(t,{left:P.width}),L=F.height-F.bottom,R=e=>B(e,d,F),z=e=>E(e,j,F),H=e=>{let t=[];return i.forEach((n,r)=>{if(!e(r))return;let i=t[t.length-1];i&&i[i.length-1]===r-1?i.push(r):t.push([r])}),t},U=i.map((e,t)=>{let n=0;for(let e of v){let r=e.values[t];if(r==null)return{level:n,complete:!1};n+=r}return{level:n,complete:v.length>0}}),W=_.map(e=>({label:e.label,color:e.color,shape:`square`,hidden:e.hidden,fixed:_.length<2})),K=Math.max(1,Math.ceil(d/8)),q=i.map((e,t)=>({label:e,x:R(t),i:t})).filter(e=>e.i%K===0),J=v.length<_.length?`Totaal getoond`:`Totaal`;function Y(e){return{title:i[e],rows:[...[...v].reverse().map(t=>({label:t.label,value:t.values[e]==null?ke:l(t.values[e]),color:t.color})),...v.length>0?[{label:J,value:U[e].complete?l(U[e].level):ke,divider:!0}]:[]]}}let te=ae(n,d,e=>({x:R(e),y:U[e].level>0?z(U[e].level):F.top,content:Y(e)})),X=e=>{let t=[0,0];return _.forEach((n,r)=>{S[r][e]&&S[r][e+1]&&(t=[w[r][e],w[r][e+1]])}),t},ne=(k?H(e=>T[e]):[]).map(e=>{let t=Math.max(0,e[0]-1),r=Math.min(d-1,e[e.length-1]+1),i=Array.from({length:r-t},(e,n)=>t+n).map(e=>{let[t,n]=X(e);return{k:e,left:z(t),right:z(n)}}),a=R(t),o=R(r)-a,s=Math.min(L,...i.flatMap(e=>[e.left,e.right]));return{segments:i,from:a,width:o,ceiling:s,fits:p(ke,n.fontFamily)+8<=o&&s-F.top>=20}}),Z=(e,t)=>t.map(t=>`${R(t)},${z(e[t])}`),Q=[ne.map(e=>f`
|
|
228
|
+
${e.segments.map(e=>f`<polygon fill="url(#hatch-${u})"
|
|
229
229
|
points=${`${R(e.k)},${F.top} ${R(e.k+1)},${F.top} ${R(e.k+1)},${e.right} ${R(e.k)},${e.left}`} />`)}
|
|
230
|
-
${e.fits?
|
|
230
|
+
${e.fits?f`<text x=${e.from+e.width/2} y=${(F.top+e.ceiling)/2+4}
|
|
231
231
|
text-anchor="middle"
|
|
232
|
-
class="lintje-chart__as-of-note lintje-chart__data-label--halo">${ke}</text>`:
|
|
233
|
-
`),
|
|
234
|
-
${
|
|
235
|
-
${n.map(n=>n.length===1?
|
|
232
|
+
class="lintje-chart__as-of-note lintje-chart__data-label--halo">${ke}</text>`:h}
|
|
233
|
+
`),f`<g class="lintje-chart__reveal" ${m(x.attach)}>
|
|
234
|
+
${_.map((e,t)=>{let n=H(e=>S[t][e]);return f`<g>
|
|
235
|
+
${n.map(n=>n.length===1?f`<circle cx=${R(n[0])} cy=${z(w[t][n[0]])} r="2.5" fill=${e.color} />`:f`<polygon fill=${e.color}
|
|
236
236
|
points=${[...Z(w[t],n),...Z(C[t],n).reverse()].join(` `)} />`)}
|
|
237
237
|
</g>`})}
|
|
238
238
|
<!-- Between two parts a 1 px line in the surface: along each part's lower edge, not the floor. -->
|
|
239
|
-
${
|
|
240
|
-
</g>`,n.hoverIndex!=null&&!b?
|
|
241
|
-
cx=${R(n.hoverIndex)} cy=${z(w[t][n.hoverIndex])} />`:
|
|
239
|
+
${_.map((e,t)=>H(e=>S[t][e]&&C[t][e]>0).filter(e=>e.length>1).map(e=>f`<polyline class="lintje-chart__segment" fill="none" points=${Z(C[t],e).join(` `)} />`))}
|
|
240
|
+
</g>`,n.hoverIndex!=null&&!b?_.map((e,t)=>S[t][n.hoverIndex]?f`<circle class="lintje-chart__hover-point" r="4" fill=${e.color}
|
|
241
|
+
cx=${R(n.hoverIndex)} cy=${z(w[t][n.hoverIndex])} />`:h):h,i.map((e,t)=>{let r=O(F)/Math.max(1,d-1);return f`
|
|
242
242
|
<rect x=${R(t)-r/2} y=${F.top} width=${r}
|
|
243
243
|
height=${L-F.top}
|
|
244
244
|
fill="transparent"
|
|
245
245
|
@mousemove=${e=>n.hoverAt(t,e,Y(t))}
|
|
246
246
|
@mouseleave=${()=>n.hoverAt(null)} />
|
|
247
|
-
`})];return
|
|
248
|
-
<div class="lintje-chart-wrap ${
|
|
249
|
-
${
|
|
247
|
+
`})];return s`
|
|
248
|
+
<div class="lintje-chart-wrap ${c?`lintje-chart--small`:``}"
|
|
249
|
+
${m(n.attach)} ?data-in-view=${n.inView} data-tooltip-anchor
|
|
250
250
|
@keydown=${e=>n.dismiss(e)}>
|
|
251
251
|
${I({items:W,onToggle:e=>n.toggleSeries(e)})}
|
|
252
|
-
${V({fontFamily:n.fontFamily,id:
|
|
252
|
+
${V({fontFamily:n.fontFamily,id:u,ticks:N,max:j,area:F,formatTick:P.format,axisTitle:a??o,xLabels:q,description:r,keys:te},Q)}
|
|
253
253
|
${G(n)}
|
|
254
254
|
${oe(n)}
|
|
255
255
|
</div>
|
|
256
|
-
`}var je=5,Me=e=>{let t=e.label.toLowerCase();return t.startsWith(`overig`)||t===`rest`},Ne=e=>!e.remainder&&!Me(e);function Pe(e){let t=e.filter(Ne).sort((e,t)=>t.value-e.value),n=e.filter(e=>!e.remainder&&Me(e)),r=e.filter(e=>e.remainder);if(t.length>je){let e=t.splice(4).reduce((e,t)=>e+t.value,0);if(n.length>0){let[t]=n;n[0]={label:t.label,value:t.value+e,color:t.color}}else n.push({label:`Overig`,value:e})}return[...t,...n,...r]}function Fe(
|
|
257
|
-
<div class="lintje-pie-chart ${x?`lintje-pie-chart--expanded`:``} ${
|
|
258
|
-
${
|
|
259
|
-
@keydown=${e=>
|
|
260
|
-
${
|
|
256
|
+
`}var je=5,Me=e=>{let t=e.label.toLowerCase();return t.startsWith(`overig`)||t===`rest`},Ne=e=>!e.remainder&&!Me(e);function Pe(e){let t=e.filter(Ne).sort((e,t)=>t.value-e.value),n=e.filter(e=>!e.remainder&&Me(e)),r=e.filter(e=>e.remainder);if(t.length>je){let e=t.splice(4).reduce((e,t)=>e+t.value,0);if(n.length>0){let[t]=n;n[0]={label:t.label,value:t.value+e,color:t.color}}else n.push({label:`Overig`,value:e})}return[...t,...n,...r]}function Fe(t,n){let{controller:r,description:i}=n,{donut:a=!1,centerValue:o,centerLabel:c,legendTable:u=!0,labelHeader:d=`Categorie`}=t,p=r.id,_=Pe(t.segments).map(e=>({...e,color:H(e.color)})),v=_.map(e=>e.href?{id:e.id??e.label,href:e.href}:null),y=me(n,v),b=e=>{let t=y.of(v[e],_[e].label,_[e].label).state;return t.includes(`is-selected`)?`is-selected`:t.includes(`is-muted`)?`is-muted`:``},x=!!n.expanded;r.measure(x?{width:!0,height:`--chart-h-main`,fit:!u}:{});let S=x?Math.max(240,Math.min(560,r.height-24)):t.size??200,C=_.reduce((e,t)=>e+t.value,0),w=S/2,T=a?w*.62:0,E=Ee(_.filter(Ne).length,t.color),D=-1,O=_.map(e=>(Ne(e)&&(D+=1),e.color??(e.remainder?`var(--color-chart-remainder)`:Me(e)?`var(--color-chart-other)`:E[Math.min(D,E.length-1)]))),k=(e,t)=>[w+t*Math.cos(e*Math.PI/180),w+t*Math.sin(e*Math.PI/180)],A=-90,j=_.map((e,t)=>{let n=e.value/C,r=A,i=A+n*360;A=i;let o=+(n>.5),[s,c]=k(r,w),[l,u]=k(i,w);return{segment:e,i:t,d:a?(()=>{let[e,t]=k(i,T),[n,a]=k(r,T);return`M ${s} ${c} A ${w} ${w} 0 ${o} 1 ${l} ${u} L ${e} ${t} A ${T} ${T} 0 ${o} 0 ${n} ${a} Z`})():`M ${w} ${w} L ${s} ${c} A ${w} ${w} 0 ${o} 1 ${l} ${u} Z`,color:O[t],middle:(r+i)/2}}),M=r.hoverIndex,N=M==null?void 0:j[M],P=e=>{r.hoverIndex=e,r.requestUpdate()},F=e=>`${l(e.value)} · ${g(e.value/C*100)}`,L=e=>({title:_[e].label,rows:[{label:`Aantal`,value:F(_[e]),color:O[e]}]}),R=ae(r,j.length,e=>{let[t,n]=k(j[e].middle,(w+T)/2);return{x:t,y:n,content:L(e)}});return s`
|
|
257
|
+
<div class="lintje-pie-chart ${x?`lintje-pie-chart--expanded`:``} ${u?``:`lintje-pie-chart--legend`}"
|
|
258
|
+
${m(r.attach)} ?data-in-view=${r.inView} data-tooltip-anchor
|
|
259
|
+
@keydown=${e=>r.dismiss(e)||y.escape(e)}>
|
|
260
|
+
${u?h:I({items:_.map((e,t)=>({label:e.label,color:O[t],key:String(t)})),onEmphasis:e=>P(e==null?null:Number(e))})}
|
|
261
261
|
<svg viewBox="0 0 ${S} ${S}" width=${S} height=${S} role=${W(y.interactive)}
|
|
262
|
-
class="lintje-pie-chart__svg" aria-labelledby="${
|
|
262
|
+
class="lintje-pie-chart__svg" aria-labelledby="${p}-desc" ${e(K(p))}
|
|
263
263
|
tabindex="0" @keydown=${R.keydown} @focus=${R.focus} @blur=${R.blur}>
|
|
264
|
-
<desc id="${
|
|
265
|
-
<defs>${J(
|
|
266
|
-
${j.map(({segment:
|
|
267
|
-
<path d=${
|
|
268
|
-
class="lintje-pie-chart__segment lintje-chart__mark lintje-chart__segment ${M===
|
|
269
|
-
${
|
|
270
|
-
data-mark-id=${
|
|
271
|
-
aria-pressed=${
|
|
272
|
-
@click=${
|
|
273
|
-
@mousemove=${e=>{
|
|
274
|
-
@mouseleave=${()=>{
|
|
264
|
+
<desc id="${p}-desc">${i}</desc>
|
|
265
|
+
<defs>${J(p)}</defs>
|
|
266
|
+
${j.map(({segment:t,i:n,d:i,color:a})=>{let o=y.of(v[n],t.label,`${t.label}: ${F(t)}`);return f`
|
|
267
|
+
<path d=${i} fill=${a}
|
|
268
|
+
class="lintje-pie-chart__segment lintje-chart__mark lintje-chart__segment ${M===n?`is-hovered`:``} ${o.state}"
|
|
269
|
+
${e({"transform-origin":`${w}px ${w}px`})}
|
|
270
|
+
data-mark-id=${o.markId} role=${o.role} tabindex=${o.tabIndex}
|
|
271
|
+
aria-pressed=${o.pressed} aria-label=${o.label}
|
|
272
|
+
@click=${o.click} @auxclick=${o.click} @keydown=${o.keydown}
|
|
273
|
+
@mousemove=${e=>{r.hoverIndex=n,r.showTooltip(e,L(n))}}
|
|
274
|
+
@mouseleave=${()=>{r.hoverIndex=null,r.hideTooltip(),r.requestUpdate()}} />
|
|
275
275
|
`})}
|
|
276
276
|
<!-- The hovered segment once more on top, lifted with a light shadow: in place, the
|
|
277
277
|
next segment would cover that shadow on one side (user test 13 Sep). -->
|
|
278
|
-
${N?
|
|
279
|
-
${
|
|
280
|
-
${
|
|
281
|
-
<text x=${w} y=${w+2} text-anchor="middle" class="lintje-pie-chart__center">${
|
|
282
|
-
${
|
|
283
|
-
`:
|
|
278
|
+
${N?f`<path d=${N.d} fill=${N.color} class="lintje-pie-chart__lift lintje-chart__segment"
|
|
279
|
+
${e({"transform-origin":`${w}px ${w}px`})} aria-hidden="true" />`:h}
|
|
280
|
+
${a&&o?f`
|
|
281
|
+
<text x=${w} y=${w+2} text-anchor="middle" class="lintje-pie-chart__center">${o}</text>
|
|
282
|
+
${c?f`<text x=${w} y=${w+20} text-anchor="middle" class="lintje-chart__axis-label">${c}</text>`:h}
|
|
283
|
+
`:h}
|
|
284
284
|
</svg>
|
|
285
285
|
|
|
286
|
-
${
|
|
286
|
+
${u?s`
|
|
287
287
|
<table class="lintje-pie-chart__table">
|
|
288
|
-
<caption class="visually-hidden">Legenda: ${
|
|
288
|
+
<caption class="visually-hidden">Legenda: ${i}</caption>
|
|
289
289
|
<thead>
|
|
290
290
|
<tr>
|
|
291
|
-
<th scope="col" class="lintje-pie-chart__column-label">${
|
|
291
|
+
<th scope="col" class="lintje-pie-chart__column-label">${d}</th>
|
|
292
292
|
<th scope="col" class="lintje-pie-chart__column-label lintje-pie-chart__column-label--numeric">aantal</th>
|
|
293
293
|
<th scope="col" class="lintje-pie-chart__column-label lintje-pie-chart__column-label--numeric">%</th>
|
|
294
294
|
</tr>
|
|
295
295
|
</thead>
|
|
296
296
|
<tbody>
|
|
297
|
-
${
|
|
298
|
-
<tr class="lintje-pie-chart__row ${M===
|
|
299
|
-
@mouseenter=${()=>P(
|
|
297
|
+
${_.map((t,n)=>s`
|
|
298
|
+
<tr class="lintje-pie-chart__row ${M===n?`is-hovered`:``} ${b(n)}"
|
|
299
|
+
@mouseenter=${()=>P(n)} @mouseleave=${()=>P(null)}>
|
|
300
300
|
<th scope="row" class="lintje-pie-chart__label">
|
|
301
301
|
<span class="lintje-pie-chart__label-inner">
|
|
302
|
-
<span class="lintje-pie-chart__marker" ${
|
|
302
|
+
<span class="lintje-pie-chart__marker" ${e({background:O[n]})}></span>${t.label}
|
|
303
303
|
</span>
|
|
304
304
|
</th>
|
|
305
|
-
<td class="lintje-pie-chart__value">${
|
|
306
|
-
<td class="lintje-pie-chart__value">${
|
|
305
|
+
<td class="lintje-pie-chart__value">${l(t.value)}</td>
|
|
306
|
+
<td class="lintje-pie-chart__value">${g(t.value/C*100)}</td>
|
|
307
307
|
</tr>
|
|
308
308
|
`)}
|
|
309
309
|
</tbody>
|
|
310
310
|
<tfoot>
|
|
311
311
|
<tr>
|
|
312
312
|
<th scope="row" class="lintje-pie-chart__total-label">Totaal</th>
|
|
313
|
-
<td class="lintje-pie-chart__total">${
|
|
313
|
+
<td class="lintje-pie-chart__total">${l(C)}</td>
|
|
314
314
|
<td class="lintje-pie-chart__total"></td>
|
|
315
315
|
</tr>
|
|
316
316
|
</tfoot>
|
|
317
317
|
</table>
|
|
318
|
-
`:
|
|
319
|
-
${G(
|
|
320
|
-
${oe(
|
|
318
|
+
`:h}
|
|
319
|
+
${G(r)}
|
|
320
|
+
${oe(r)}
|
|
321
321
|
</div>
|
|
322
|
-
`}function Ie(
|
|
323
|
-
<div class="lintje-chart-wrap ${
|
|
324
|
-
${
|
|
325
|
-
@keydown=${e=>
|
|
326
|
-
${I({items:F,onToggle:e=>
|
|
322
|
+
`}function Ie(t,n){let{controller:r,description:i}=n,{labels:a,threshold:o,thresholdLabel:c,small:u=!1,pendingHours:d=0}=t,p={...t.left,color:H(t.left.color)},g={...t.right,color:H(t.right.color)},_=r.id;r.measure({width:!0,height:n.height??(u?`--chart-h-small`:`--chart-h-main`),fit:!!n.expanded&&!n.mobile});let v=p.color??`var(--color-chart-default)`,y=g.color??`var(--color-chart-dark-yellow)`,b=M(Math.max(...p.values.filter(e=>e!=null),1)),x=M(Math.max(...g.values.filter(e=>e!=null),o??0,1)),S=ee(b.ticks,r.width,{fontFamily:r.fontFamily}),C=ee(x.ticks,r.width,{fontFamily:r.fontFamily}),w=D(n,{left:S.width,right:C.width}),T=w.height-w.bottom,O=r.hiddenSeries.includes(`left`),A=r.hiddenSeries.includes(`right`),j=r.hiddenSeries.includes(P),N=e=>`lintje-chart__series ${e?`is-off`:``}`,F=[{key:`left`,label:`${p.label} (linkeras)`,color:v,shape:`square`,hidden:O},{key:`right`,label:`${g.label} (rechteras)`,color:y,shape:`line`,hidden:A},...o==null?[]:[{key:P,label:c??`Norm ${o}`,color:`var(--color-chart-emphasis)`,shape:`dashed`,hidden:j}]],L=Math.max(1,Math.ceil(a.length/8)),z=r.hoverIndex,B=R(y),V=[[]];g.values.forEach((e,t)=>{e==null?V[V.length-1].length&&V.push([]):V[V.length-1].push(`${k(t,a.length,w).center},${E(e,x.max,w)}`)});let K=(e,t)=>e==null?`geen gegevens`:`${l(e)}${t?` ${t}`:``}`,q=e=>({title:a[e],rows:[...O?[]:[{label:p.label,value:K(p.values[e],p.unit),color:v}],...A?[]:[{label:g.label,value:K(g.values[e],g.unit),color:y}]]}),J=ae(r,a.length,e=>({x:k(e,a.length,w).center,y:Math.min(O||p.values[e]==null?T:E(p.values[e],b.max,w),A||g.values[e]==null?T:E(g.values[e],x.max,w)),content:q(e)}));return s`
|
|
323
|
+
<div class="lintje-chart-wrap ${u?`lintje-chart--small`:``}"
|
|
324
|
+
${m(r.attach)} ?data-in-view=${r.inView} data-tooltip-anchor
|
|
325
|
+
@keydown=${e=>r.dismiss(e)}>
|
|
326
|
+
${I({items:F,onToggle:e=>r.toggleSeries(e)})}
|
|
327
327
|
<figure class="lintje-chart">
|
|
328
328
|
<svg viewBox="0 0 ${w.width} ${w.height}" class="lintje-chart__svg" role=${W(!1)}
|
|
329
|
-
aria-labelledby="${
|
|
329
|
+
aria-labelledby="${_}-desc" width=${w.width} height=${w.height}
|
|
330
330
|
tabindex="0" @keydown=${J.keydown} @focus=${J.focus} @blur=${J.blur}>
|
|
331
|
-
<desc id="${
|
|
331
|
+
<desc id="${_}-desc">${i}</desc>
|
|
332
332
|
<defs>
|
|
333
|
-
<pattern id="hatch-${
|
|
333
|
+
<pattern id="hatch-${_}" width="6" height="6" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
|
|
334
334
|
<line x1="0" y1="0" x2="0" y2="6" stroke="var(--color-chart-hatch)" stroke-width="2" />
|
|
335
335
|
</pattern>
|
|
336
336
|
</defs>
|
|
337
337
|
<!-- Incomplete hours at the end: hatched, never drawn as zero. -->
|
|
338
|
-
${
|
|
338
|
+
${d>0?(()=>{let e=k(a.length-d,a.length,w);return f`<rect x=${e.x-(e.bandWidth-e.width)/2} y=${w.top}
|
|
339
339
|
width=${w.width-w.right-e.x+(e.bandWidth-e.width)/2}
|
|
340
|
-
height=${T-w.top} fill="url(#hatch-${
|
|
340
|
+
height=${T-w.top} fill="url(#hatch-${_})" />`})():h}
|
|
341
341
|
|
|
342
|
-
${b.ticks.map(e=>{let t=E(e,b.max,w),n=e===0;return
|
|
342
|
+
${b.ticks.map(e=>{let t=E(e,b.max,w),n=e===0;return f`
|
|
343
343
|
<g>
|
|
344
344
|
<line x1=${w.left} x2=${w.width-w.right} y1=${t} y2=${t}
|
|
345
345
|
stroke=${n?`var(--color-chart-zero)`:`var(--color-chart-grid)`}
|
|
@@ -349,7 +349,7 @@ import{$t as e,F as t,H as n,I as r,Jt as i,O as a,St as o,Zt as s,_ as c,an as
|
|
|
349
349
|
</text>
|
|
350
350
|
</g>
|
|
351
351
|
`})}
|
|
352
|
-
${x.ticks.map(e=>
|
|
352
|
+
${x.ticks.map(e=>f`
|
|
353
353
|
<text x=${w.width-w.right+8} y=${E(e,x.max,w)+4}
|
|
354
354
|
class="lintje-chart__axis-label" fill=${`var(--color-chart-dark-yellow-text)`}>${C.format(e)}</text>
|
|
355
355
|
`)}
|
|
@@ -362,136 +362,136 @@ import{$t as e,F as t,H as n,I as r,Jt as i,O as a,St as o,Zt as s,_ as c,an as
|
|
|
362
362
|
<!-- Bars grow in one after another; the hit areas below sit on top, so hover comes
|
|
363
363
|
from hoverIndex rather than :hover. -->
|
|
364
364
|
<g class=${N(O)}>
|
|
365
|
-
${
|
|
366
|
-
height=${Math.max(0,T-w.top)} fill="url(#hatch-${
|
|
367
|
-
<g class="lintje-chart__bar-group ${z===
|
|
368
|
-
${
|
|
369
|
-
<rect class="lintje-chart__bar" x=${
|
|
370
|
-
height=${Math.max(0,T-
|
|
365
|
+
${p.values.map((t,n)=>{let r=k(n,a.length,w);if(t==null)return f`<rect class="lintje-chart__missing" x=${r.x} y=${w.top} width=${r.width}
|
|
366
|
+
height=${Math.max(0,T-w.top)} fill="url(#hatch-${_})" />`;let i=E(t,b.max,w);return f`
|
|
367
|
+
<g class="lintje-chart__bar-group ${z===n?`is-hovered`:``}"
|
|
368
|
+
${e(U(n,a.length))}>
|
|
369
|
+
<rect class="lintje-chart__bar" x=${r.x} y=${i} width=${r.width}
|
|
370
|
+
height=${Math.max(0,T-i)} fill=${v} />
|
|
371
371
|
</g>
|
|
372
372
|
`})}
|
|
373
373
|
</g>
|
|
374
374
|
|
|
375
|
-
${
|
|
376
|
-
y1=${E(
|
|
375
|
+
${o==null?h:f`<line class=${N(j)} x1=${w.left} x2=${w.width-w.right}
|
|
376
|
+
y1=${E(o,x.max,w)} y2=${E(o,x.max,w)}
|
|
377
377
|
stroke="var(--color-chart-emphasis)" stroke-width="1" stroke-dasharray="4 3" />`}
|
|
378
378
|
|
|
379
379
|
<g class=${N(A)}>
|
|
380
380
|
<g class="lintje-chart__reveal">
|
|
381
|
-
${V.filter(e=>e.length>0).map(e=>{let t=e.join(` `),[n,r]=e[0].split(`,`);return
|
|
382
|
-
${B&&e.length>1?
|
|
383
|
-
stroke=${B} points=${t} />`:
|
|
384
|
-
${e.length===1?
|
|
381
|
+
${V.filter(e=>e.length>0).map(e=>{let t=e.join(` `),[n,r]=e[0].split(`,`);return f`
|
|
382
|
+
${B&&e.length>1?f`<polyline class="lintje-chart__line lintje-chart__line--casing"
|
|
383
|
+
stroke=${B} points=${t} />`:h}
|
|
384
|
+
${e.length===1?f`<circle cx=${n} cy=${r} r="2.5" fill=${y} />`:f`<polyline class="lintje-chart__line" stroke=${y} points=${t} />`}
|
|
385
385
|
`})}
|
|
386
386
|
</g>
|
|
387
387
|
</g>
|
|
388
388
|
|
|
389
|
-
${
|
|
390
|
-
<text x=${k(t*L,
|
|
389
|
+
${a.filter((e,t)=>t%L===0).map((e,t)=>f`
|
|
390
|
+
<text x=${k(t*L,a.length,w).center} y=${w.height-8}
|
|
391
391
|
text-anchor="middle" class="lintje-chart__axis-label">${e}</text>
|
|
392
392
|
`)}
|
|
393
393
|
|
|
394
394
|
<!-- Hover point on the right-axis line; no point for a missing value. -->
|
|
395
|
-
${z!=null&&!A&&
|
|
396
|
-
cx=${k(z,
|
|
397
|
-
cy=${E(
|
|
398
|
-
${
|
|
399
|
-
<rect x=${
|
|
395
|
+
${z!=null&&!A&&g.values[z]!=null?f`<circle class="lintje-chart__hover-point" r="4" fill=${y}
|
|
396
|
+
cx=${k(z,a.length,w).center}
|
|
397
|
+
cy=${E(g.values[z],x.max,w)} />`:h}
|
|
398
|
+
${a.map((e,t)=>{let n=k(t,a.length,w);return f`
|
|
399
|
+
<rect x=${n.x} y=${w.top} width=${n.bandWidth} height=${T-w.top}
|
|
400
400
|
fill="transparent"
|
|
401
|
-
@mousemove=${e=>
|
|
402
|
-
@mouseleave=${()=>
|
|
401
|
+
@mousemove=${e=>r.hoverAt(t,e,q(t))}
|
|
402
|
+
@mouseleave=${()=>r.hoverAt(null)} />
|
|
403
403
|
`})}
|
|
404
404
|
</svg>
|
|
405
405
|
</figure>
|
|
406
|
-
${G(
|
|
407
|
-
${oe(
|
|
406
|
+
${G(r)}
|
|
407
|
+
${oe(r)}
|
|
408
408
|
</div>
|
|
409
|
-
`}var Le=4.5,Re=5.5,ze=44,Be=8,Ve=(e,t)=>e.left<t.right&&t.left<e.right&&e.top<t.bottom&&t.top<e.bottom;function He(e,t,n,r){let i=5.5,a=[];for(let[o,s]of e.entries()){if(!t.includes(s.label))continue;let c=
|
|
409
|
+
`}var Le=4.5,Re=5.5,ze=44,Be=8,Ve=(e,t)=>e.left<t.right&&t.left<e.right&&e.top<t.bottom&&t.top<e.bottom;function He(e,t,n,r){let i=5.5,a=[];for(let[o,s]of e.entries()){if(!t.includes(s.label))continue;let c=p(s.label,r,700),l=s.y-9,u=l-12,d=l+3,f=[{anchor:`end`,x:s.x-Be,left:s.x-Be-c},{anchor:`start`,x:s.x+Be,left:s.x+Be}].map(e=>({...e,right:e.left+c,top:u,bottom:d})).find(t=>t.left>=n.left&&t.right<=n.width-n.right&&t.top>=0&&a.every(e=>!Ve(t,e))&&e.every((e,n)=>n===o||!Ve(t,{left:e.x-i,right:e.x+i,top:e.y-i,bottom:e.y+i})));if(!f)return[];a.push({...f,label:s.label,y:l})}return a.map(({label:e,x:t,y:n,anchor:r})=>({label:e,x:t,y:n,anchor:r}))}var Ue=e=>e.charAt(0).toUpperCase()+e.slice(1),We=(e,t)=>`${l(e)}${t?` ${t}`:``}`;function Ge(e){let t=new Set(e.series.map(e=>e.color).filter(Y)),n=N.filter(e=>!t.has(e)),r=0;return e.series.map(e=>{let t=Y(e.color)?e.color:n[r++%n.length];return{color:H(e.color??t),symbol:t}})}function Ke(t,n){let{controller:i,description:a}=n,{axisTitle:o,unit:c,xTitle:d,xUnit:p,threshold:g,thresholdLabel:_,small:v=!1}=t,y=i.id;i.measure({width:!0,height:n.height??(v?`--chart-h-small`:`--chart-h-main`),fit:!!n.expanded&&!n.mobile});let b=Ge(t),x=t.series.map((e,t)=>({...e,...b[t]})),S=e=>i.hiddenSeries.includes(e.label),C=x.flatMap((e,t)=>e.points.map((n,r)=>({point:n,row:e,key:`${t}:${r}`})).filter(e=>e.point.x!=null&&e.point.y!=null)).sort((e,t)=>e.point.x-t.point.x||e.point.y-t.point.y),w=C.filter(({row:e})=>!S(e)),T=new Map(w.map((e,t)=>[e.key,t])),k=i.hiddenSeries.includes(P),A=M(Math.max(...C.map(({point:e})=>e.x),1),n.mobile?3:6),j=M(Math.max(...C.map(({point:e})=>e.y),g??0,1)),N=ee(j.ticks,i.width,{fontFamily:i.fontFamily}),F=D(n,{left:N.width,bottom:ze}),L=e=>F.left+O(F)*e/A.max,z=A.ticks.map((e,t)=>({label:l(e),x:L(e),anchor:t===A.ticks.length-1?`end`:`middle`})),B=[...x.map(e=>({label:e.label,color:e.color,shape:`point`,symbol:e.symbol,hidden:S(e),fixed:x.length<2&&g==null})),...g==null?[]:[{key:P,label:_??`Norm`,color:`var(--color-chart-emphasis)`,shape:`dashed`,hidden:k}]];function H(e){let{point:t,row:n}=w[e];return{title:t.label,rows:[{label:n.label,value:``,color:n.color,symbol:n.symbol},{label:Ue(d),value:We(t.x,p)},{label:Ue(o),value:We(t.y,c)}]}}let W=e=>({x:L(e.x),y:E(e.y,j.max,F)}),K=e=>W(w[e].point),q=ae(i,w.length,e=>({...K(e),content:H(e)})),J=w.map(({point:e,row:t})=>e.href?{id:e.id??`${t.label} · ${e.label}`,href:e.href}:null),Y=me(n,J),X=w.map(({point:e},t)=>Y.of(J[t],e.label,re(H(t)))),ne=He(w.map((e,t)=>({label:e.point.label,...K(t)})),t.dataLabels??[],F,i.fontFamily),Z=g==null?0:E(g,j.max,F),Q=i.hoverIndex==null?void 0:w[i.hoverIndex],ie=e=>{let t=e.target.closest?.(`[data-point]`);if(t)return Number(t.getAttribute(`data-point`));let n=e.currentTarget,i=n.ownerSVGElement?.getBoundingClientRect(),a=i&&i.width>0?F.width/i.width:1,o=(e.clientX-(i?.left??0))*a,s=(e.clientY-(i?.top??0))*a,c=r(n,`--h-target`,48)/2,l=null,u=c;return w.forEach((e,t)=>{let{x:n,y:r}=K(t),i=Math.hypot(n-o,r-s);i<=u&&(l=t,u=i)}),l},se=e=>{let t=ie(e);t==null?(i.hoverIndex!=null||i.tooltip)&&i.hoverAt(null):i.hoverAt(t,e,H(t))},$=e=>{let t=ie(e),n=t==null?null:X[t];n?.clickable&&n.click!==h&&n.click(e)},ce=Q!=null&&X[i.hoverIndex]?.clickable,le=[g==null?h:f`
|
|
410
410
|
<g class="lintje-chart__series ${k?`is-off`:``}">
|
|
411
411
|
<g class="lintje-chart__reference">
|
|
412
412
|
<line x1=${F.left} x2=${F.width-F.right} y1=${Z} y2=${Z}
|
|
413
413
|
stroke="var(--color-chart-emphasis)" stroke-width="1" stroke-dasharray="3 3" />
|
|
414
414
|
<text x=${F.left+6} y=${Z-6}
|
|
415
415
|
class="lintje-chart__axis-label lintje-chart__axis-label--halo">
|
|
416
|
-
${
|
|
416
|
+
${_??`norm ${We(g,c)}`}
|
|
417
417
|
</text>
|
|
418
418
|
</g>
|
|
419
419
|
</g>
|
|
420
|
-
`,
|
|
420
|
+
`,f`<g @mousemove=${se} @mouseleave=${()=>i.hoverAt(null)} @click=${$} @auxclick=${$}>
|
|
421
421
|
<rect class="lintje-chart__hit ${ce?`is-clickable`:``}"
|
|
422
422
|
x="0" y="0" width=${F.width} height=${F.height} />
|
|
423
423
|
<g>
|
|
424
|
-
${
|
|
425
|
-
<path class="lintje-chart__point lintje-chart__mark ${s?``:`lintje-chart__segment`} ${
|
|
426
|
-
${
|
|
427
|
-
d=${te(
|
|
428
|
-
stroke=${s??
|
|
429
|
-
data-point=${c??
|
|
430
|
-
data-mark-id=${
|
|
431
|
-
tabindex=${
|
|
432
|
-
aria-pressed=${
|
|
433
|
-
@keydown=${
|
|
424
|
+
${u(C,e=>e.key,({point:t,row:n,key:r},i)=>{let{x:a,y:o}=W(t),s=R(n.color),c=T.get(r),l=c==null?void 0:X[c];return f`
|
|
425
|
+
<path class="lintje-chart__point lintje-chart__mark ${s?``:`lintje-chart__segment`} ${l?.state??`is-off`}"
|
|
426
|
+
${e(U(i,C.length))}
|
|
427
|
+
d=${te(n.symbol,Le,a,o)} fill=${n.color}
|
|
428
|
+
stroke=${s??h} stroke-width=${s?1:h}
|
|
429
|
+
data-point=${c??h}
|
|
430
|
+
data-mark-id=${l?.markId??h} role=${l?.role??h}
|
|
431
|
+
tabindex=${l?.tabIndex??h}
|
|
432
|
+
aria-pressed=${l?.pressed??h} aria-label=${l?.label??h}
|
|
433
|
+
@keydown=${l?.keydown??h} />
|
|
434
434
|
`})}
|
|
435
435
|
</g>
|
|
436
436
|
|
|
437
|
-
${ne.map(e=>
|
|
437
|
+
${ne.map(e=>f`
|
|
438
438
|
<text x=${e.x} y=${e.y} text-anchor=${e.anchor}
|
|
439
439
|
class="lintje-chart__data-label lintje-chart__data-label--halo">${e.label}</text>
|
|
440
440
|
`)}
|
|
441
441
|
|
|
442
442
|
<!-- The point under the pointer or the keyboard, raised with a ring in the surface. -->
|
|
443
|
-
${Q?(()=>{let{x:e,y:t}=K(
|
|
444
|
-
<path class="lintje-chart__hover-point" d=${
|
|
445
|
-
${
|
|
446
|
-
`})():
|
|
447
|
-
</g>`];return
|
|
443
|
+
${Q?(()=>{let{x:e,y:t}=K(i.hoverIndex),n=R(Q.row.color),r=te(Q.row.symbol,Re,e,t);return f`
|
|
444
|
+
<path class="lintje-chart__hover-point" d=${r} fill=${Q.row.color} />
|
|
445
|
+
${n?f`<path class="lintje-chart__hover-casing" d=${r} stroke=${n} />`:h}
|
|
446
|
+
`})():h}
|
|
447
|
+
</g>`];return s`
|
|
448
448
|
<div class="lintje-chart-wrap ${v?`lintje-chart--small`:``}"
|
|
449
|
-
${
|
|
450
|
-
@keydown=${e=>
|
|
451
|
-
${I({items:B,onToggle:e=>
|
|
452
|
-
${V({fontFamily:
|
|
453
|
-
${G(
|
|
454
|
-
${oe(
|
|
449
|
+
${m(i.attach)} ?data-in-view=${i.inView} data-tooltip-anchor
|
|
450
|
+
@keydown=${e=>i.dismiss(e)||Y.escape(e)}>
|
|
451
|
+
${I({items:B,onToggle:e=>i.toggleSeries(e)})}
|
|
452
|
+
${V({fontFamily:i.fontFamily,id:y,ticks:j.ticks,max:j.max,area:F,formatTick:N.format,axisTitle:o,xLabels:z,xTitle:d,description:a,interactive:Y.interactive,keys:q},le)}
|
|
453
|
+
${G(i)}
|
|
454
|
+
${oe(i)}
|
|
455
455
|
</div>
|
|
456
|
-
`}var qe=[`var(--color-chart-seq-1)`,`var(--color-chart-seq-2)`,`var(--color-chart-seq-3)`,`var(--color-chart-seq-4)`,`var(--color-chart-seq-5)`],Je=qe.length,Ye=[1,2,2.5,5,10];function Xe(e,t){if(!(e>0)||!Number.isFinite(e))return 1;let n=10**Math.floor(Math.log10(e)),r=0,i=1/0;for(let a of Ye){let o=a*n;if(t&&!Number.isInteger(o))continue;let s=Math.abs(Math.log(o/e));s<i&&(i=s,r=o)}return r||(t?1:n)}function Ze(e,t){let n=Math.max(0,Math.min(10,-Math.floor(Math.log10(t))+1));return Number(e.toFixed(n))}function Qe(e){let t=[];for(let n of e)for(let e of n??[])e!=null&&Number.isFinite(e)&&t.push(e);if(t.length===0)return[];let n=Math.min(...t),r=Math.max(...t);if(n===r)return[];let i=t.every(Number.isInteger),a=Xe((r-n)/Je,i),o=Math.floor(n/a)*a,s=[];for(let e=1;e<Je;e+=1){let t=Ze(o+e*a,a);if(t>r)break;s.push(t)}return s}function $e(e,t,n=0){let r=
|
|
457
|
-
<div class="lintje-heatmap" ${
|
|
458
|
-
data-tooltip-anchor @keydown=${
|
|
459
|
-
${I({items:v.map(e=>({key:x(e.ramp),label:e.label,color:e.color,shape:`square`,hidden:
|
|
460
|
-
<table class="lintje-heatmap__grid ${
|
|
461
|
-
<caption class="visually-hidden">${
|
|
456
|
+
`}var qe=[`var(--color-chart-seq-1)`,`var(--color-chart-seq-2)`,`var(--color-chart-seq-3)`,`var(--color-chart-seq-4)`,`var(--color-chart-seq-5)`],Je=qe.length,Ye=[1,2,2.5,5,10];function Xe(e,t){if(!(e>0)||!Number.isFinite(e))return 1;let n=10**Math.floor(Math.log10(e)),r=0,i=1/0;for(let a of Ye){let o=a*n;if(t&&!Number.isInteger(o))continue;let s=Math.abs(Math.log(o/e));s<i&&(i=s,r=o)}return r||(t?1:n)}function Ze(e,t){let n=Math.max(0,Math.min(10,-Math.floor(Math.log10(t))+1));return Number(e.toFixed(n))}function Qe(e){let t=[];for(let n of e)for(let e of n??[])e!=null&&Number.isFinite(e)&&t.push(e);if(t.length===0)return[];let n=Math.min(...t),r=Math.max(...t);if(n===r)return[];let i=t.every(Number.isInteger),a=Xe((r-n)/Je,i),o=Math.floor(n/a)*a,s=[];for(let e=1;e<Je;e+=1){let t=Ze(o+e*a,a);if(t>r)break;s.push(t)}return s}function $e(e,t,n=0){let r=l(e,n),i=t?.trim()??``;return i?i===`%`?`${r}%`:`${r} ${i}`:r}function et(e){let t=0;for(let n of e){let e=String(n),r=e.indexOf(`.`);r>=0&&(t=Math.max(t,e.length-r-1))}return Math.min(t,4)}function tt(e,t={}){let n=(t.bounds?.length?t.bounds.slice(0,Je-1):null)??Qe(e),r=et(n),i=e=>$e(e,t.unit,r),a=e=>l(e,r);if(n.length===0){let e=qe.length-1;return[{limit:1/0,color:qe[e],label:`alle waarden`,ramp:e}]}return[{limit:n[0],color:qe[0],label:`< ${i(n[0])}`,ramp:0},...n.slice(1).map((e,t)=>({limit:e,color:qe[t+1],label:`${a(n[t])}–${i(e)}`,ramp:t+1})),{limit:1/0,color:qe[n.length],label:`≥ ${i(n[n.length-1])}`,ramp:n.length}]}function nt(e,t){let n=e.findIndex(e=>t<e.limit);return n===-1?e.length-1:n}function rt(e,t,n){return Array.from({length:n},(n,r)=>Array.from({length:t},(t,n)=>e?.[n]?.[r]))}function it(e){if(e.mobile)return e.mobile;let t=e.rowLabels.length,n=e.columnLabels.length;if(!(n<=t))return{columnLabels:e.rowLabels,rowLabels:e.columnLabels,values:rt(e.values,t,n),links:e.links?rt(e.links,t,n):void 0}}function at(t,n){let{controller:r,description:i,mobile:a=!1}=n,o=a?it(t):void 0,c=o?.columnLabels??t.columnLabels,u=o?.rowLabels??t.rowLabels,d=o?.values??t.values,f=o?o.links:t.links,p=o?!0:t.compact??!1,{unit:g}=t,_=me(n,(f??[]).flat()),v=tt(d,{bounds:t.bounds,unit:g}),y=e=>nt(v,e);r.measure({});let b=r.selectedCell,x=e=>`class-${e}`,S=e=>r.hiddenSeries.includes(x(v[e].ramp));return s`
|
|
457
|
+
<div class="lintje-heatmap" ${m(r.attach)} ?data-in-view=${r.inView}
|
|
458
|
+
data-tooltip-anchor @keydown=${_.escape}>
|
|
459
|
+
${I({items:v.map(e=>({key:x(e.ramp),label:e.label,color:e.color,shape:`square`,hidden:r.hiddenSeries.includes(x(e.ramp)),fixed:v.length<2})),onToggle:e=>r.toggleSeries(e)})}
|
|
460
|
+
<table class="lintje-heatmap__grid ${p?`is-compact`:``}">
|
|
461
|
+
<caption class="visually-hidden">${i}</caption>
|
|
462
462
|
<thead>
|
|
463
463
|
<tr>
|
|
464
464
|
<td></td>
|
|
465
|
-
${
|
|
465
|
+
${c.map(e=>s`<th scope="col" class="lintje-heatmap__column-label">${e}</th>`)}
|
|
466
466
|
</tr>
|
|
467
467
|
</thead>
|
|
468
468
|
<tbody>
|
|
469
|
-
${
|
|
469
|
+
${u.map((t,n)=>s`
|
|
470
470
|
<tr>
|
|
471
|
-
<th scope="row" class="lintje-heatmap__row-label" title=${
|
|
472
|
-
<span class="lintje-heatmap__row-label-text">${
|
|
471
|
+
<th scope="row" class="lintje-heatmap__row-label" title=${t}>
|
|
472
|
+
<span class="lintje-heatmap__row-label-text">${t}</span>
|
|
473
473
|
</th>
|
|
474
|
-
${
|
|
474
|
+
${c.map((i,a)=>{let o=d[n]?.[a];if(o==null)return s`
|
|
475
475
|
<td class="lintje-heatmap__slot">
|
|
476
476
|
<div class="lintje-heatmap__cell is-empty"
|
|
477
|
-
title="${
|
|
477
|
+
title="${t} · ${c[a]}: geen meting">
|
|
478
478
|
<span class="visually-hidden">geen meting</span>
|
|
479
479
|
</div>
|
|
480
480
|
</td>
|
|
481
|
-
`;let
|
|
481
|
+
`;let m=y(o),h=_.of(f?.[n]?.[a],`${t} · ${c[a]}`),x=!h.clickable&&b?.row===n&&b?.column===a;return s`
|
|
482
482
|
<td class="lintje-heatmap__slot">
|
|
483
483
|
<button
|
|
484
484
|
type="button"
|
|
485
|
-
class="lintje-heatmap__cell lintje-heatmap__cell--class-${v[
|
|
486
|
-
data-mark-id=${
|
|
487
|
-
${
|
|
488
|
-
@click=${
|
|
489
|
-
@auxclick=${
|
|
490
|
-
@mousemove=${
|
|
491
|
-
@mouseleave=${
|
|
492
|
-
aria-pressed=${
|
|
493
|
-
aria-label="${
|
|
494
|
-
>${
|
|
485
|
+
class="lintje-heatmap__cell lintje-heatmap__cell--class-${v[m].ramp} ${x?`is-selected`:``} ${S(m)?`is-dimmed`:``} ${h.state}"
|
|
486
|
+
data-mark-id=${h.markId}
|
|
487
|
+
${e({"--lintje-cell":v[m].color,...q(a,n,c.length,u.length)})}
|
|
488
|
+
@click=${h.clickable?h.click:()=>{r.selectedCell=x?null:{row:n,column:a},r.requestUpdate()}}
|
|
489
|
+
@auxclick=${h.click}
|
|
490
|
+
@mousemove=${p?void 0:e=>r.showTooltip(e,{title:`${t} · ${c[a]}`,rows:[{label:`klasse ${v[m].label}`,value:$e(o,g),color:v[m].color}]})}
|
|
491
|
+
@mouseleave=${p?void 0:()=>r.hideTooltip()}
|
|
492
|
+
aria-pressed=${h.clickable?h.pressed:x}
|
|
493
|
+
aria-label="${t} ${c[a]}: ${$e(o,g)}, klasse ${v[m].label}"
|
|
494
|
+
>${l(o)}</button>
|
|
495
495
|
</td>
|
|
496
496
|
`})}
|
|
497
497
|
</tr>
|
|
@@ -500,66 +500,66 @@ import{$t as e,F as t,H as n,I as r,Jt as i,O as a,St as o,Zt as s,_ as c,an as
|
|
|
500
500
|
</table>
|
|
501
501
|
|
|
502
502
|
<!-- Selected cell: a 48 px line with day, block, value, class. -->
|
|
503
|
-
${b&&
|
|
503
|
+
${b&&d[b.row]?.[b.column]!=null?s`
|
|
504
504
|
<p class="lintje-heatmap__selection">
|
|
505
|
-
<b>${
|
|
506
|
-
${$e(
|
|
507
|
-
${v[y(
|
|
505
|
+
<b>${u[b.row]} ${c[b.column]}</b> ·
|
|
506
|
+
${$e(d[b.row][b.column],g)} · klasse
|
|
507
|
+
${v[y(d[b.row][b.column])].label}
|
|
508
508
|
</p>
|
|
509
|
-
`:
|
|
509
|
+
`:h}
|
|
510
510
|
|
|
511
|
-
${G(
|
|
511
|
+
${G(r)}
|
|
512
512
|
</div>
|
|
513
|
-
`}var ot=16,st=56,ct=8,lt=18;function ut(e){return
|
|
514
|
-
height=${Math.max(0,N-j.top)} fill="url(#hatch-${x})" />`;let
|
|
515
|
-
<g class="lintje-chart__bar-group" ${
|
|
516
|
-
<rect class="lintje-chart__bar lintje-chart__segment" x=${
|
|
517
|
-
height=${Math.max(0,N-
|
|
513
|
+
`}var ot=16,st=56,ct=8,lt=18;function ut(e){return l(e,+!Number.isInteger(e))}function dt(e,t){let n=t?` ${t}`:``;return e.to==null?`${ut(e.from)}${n} of meer`:`${ut(e.from)} tot ${ut(e.to)}${n}`}function ft(e,t,n=``){let r=t.width,i=e.map(e=>{let t=p(e.text,n,e.bold?700:400),i=e.x+6+t<=r;return{x:i?e.x+6:e.x-6,anchor:i?`start`:`end`,left:i?e.x+6:e.x-6-t,right:i?e.x+6+t:e.x-6}}),a=i.length===2?+(e[1].x>=e[0].x):-1,o=i.length===2&&i[0].left<i[1].right+ct&&i[1].left<i[0].right+ct;return i.map((e,n)=>({x:e.x,y:t.top+12+(o&&n===a?lt:0),anchor:e.anchor}))}function pt(t,n){let{controller:r,description:i}=n,{bins:a,axisTitle:o,xTitle:c,unit:u,median:d,threshold:_,small:v=!1}=t,y=t.label??`Aantal`,b=H(t.color)??`var(--color-chart-default)`,x=r.id,S=e=>u?`${e} ${u}`:e;r.measure({width:!0,height:n.height??(v?`--chart-h-small`:`--chart-h-main`),fit:!!n.expanded&&!n.mobile});let C=a.map(e=>e.count).filter(e=>e!=null),w=C.length===a.length?C.reduce((e,t)=>e+t,0):null,{max:T,ticks:O}=M(Math.max(...C,1)),k=ee(O,r.width,{fontFamily:r.fontFamily}),A=D(n),j=D(n,{left:k.width,bottom:A.bottom+(c?ot:0)}),N=j.height-j.bottom,F=j.width-j.right,R=a[0]?.from??0,B=a[a.length-1],W=a.length>1?a[a.length-1].from-a[a.length-2].from:1,K=B?B.to??B.from+W:1,q=e=>j.left+(e-R)/Math.max(K-R,2**-52)*(F-j.left),J=a.map(e=>{let t=q(e.from),n=q(e.to??K)-t;return{x:t,width:n,center:t+n/2}}),Y=e=>r.hiddenSeries.includes(e),te=Y(y),X=e=>{let t=a[e].count;return{title:dt(a[e],u),rows:te?[]:[{label:y,value:t==null?`geen gegevens`:l(t),color:b},...t!=null&&w!=null&&w>0?[{label:`Aandeel`,value:g(t/w*100,1),color:b}]:[]]}},ne=ae(r,a.length,e=>({x:J[e].center,y:a[e].count==null?j.top:E(a[e].count,T,j),content:X(e)})),Z=B?.to==null&&a.length>0,Q=[...a.slice(0,Z?-1:void 0).map(e=>e.from),...Z?[]:B?[B.to]:[]].map(e=>({label:ut(e),x:q(e)})),re=Z?{label:`${ut(B.from)}+`,x:J[J.length-1].center}:null,ie=Q.length>1?(Q[Q.length-1].x-Q[0].x)/(Q.length-1):1,se=Math.max(1,Math.ceil(st/ie)),$=L(Q.filter((e,t)=>t%se===0),r.fontFamily),ce=(e,t)=>Math.abs(t.x-e.x)<(p(e.label,r.fontFamily)+p(t.label,r.fontFamily))/2+ct,le=Z?re:Q[Q.length-1];le&&!$.includes(le)&&($.length&&ce($[$.length-1],le)&&($=$.slice(0,-1)),Z||($=[...$,le]));let ue=Z?B.from:K,de=e=>e!=null&&e>=R&&e<=ue,fe=[...de(d)?[{key:z,x:q(d),text:t.medianLabel??S(`mediaan ${ut(d)}`),bold:!0,dashed:!1}]:[],...de(_)?[{key:P,x:q(_),text:t.thresholdLabel??S(`norm ${ut(_)}`),bold:!1,dashed:!0}]:[]],pe=ft(fe,j,r.fontFamily),me=e=>e.charAt(0).toUpperCase()+e.slice(1),he=[{label:y,color:b,shape:`square`,fixed:fe.length===0,hidden:te},...de(d)?[{label:me(t.medianLabel??`Mediaan`),color:`var(--color-chart-emphasis)`,shape:`line`,key:z,hidden:Y(z)}]:[],...de(_)?[{label:me(t.thresholdLabel??`Norm`),color:`var(--color-chart-emphasis)`,shape:`dashed`,key:P,hidden:Y(P)}]:[]],ge=t=>{let n=J[t],r=a[t].count;if(r==null)return f`<rect class="lintje-chart__missing" x=${n.x} y=${j.top} width=${n.width}
|
|
514
|
+
height=${Math.max(0,N-j.top)} fill="url(#hatch-${x})" />`;let i=E(r,T,j);return f`
|
|
515
|
+
<g class="lintje-chart__bar-group" ${e(U(t,a.length))}>
|
|
516
|
+
<rect class="lintje-chart__bar lintje-chart__segment" x=${n.x} y=${i} width=${n.width}
|
|
517
|
+
height=${Math.max(0,N-i)} fill=${b} />
|
|
518
518
|
</g>
|
|
519
|
-
`},_e=
|
|
519
|
+
`},_e=r.hoverIndex,ve=_e==null?null:a[_e]?.count,ye=[f`<g class="lintje-chart__series ${te?`is-off`:``}">${a.map((e,t)=>ge(t))}</g>`,_e!=null&&ve!=null&&!te?f`<rect class="lintje-chart__bar lintje-chart__bar--lifted lintje-chart__segment"
|
|
520
520
|
x=${J[_e].x} y=${E(ve,T,j)} width=${J[_e].width}
|
|
521
|
-
height=${Math.max(0,N-E(ve,T,j))} fill=${b} />`:
|
|
521
|
+
height=${Math.max(0,N-E(ve,T,j))} fill=${b} />`:h,$.map(e=>f`
|
|
522
522
|
<line x1=${e.x} x2=${e.x} y1=${N} y2=${N+4}
|
|
523
523
|
stroke="var(--color-chart-zero)" stroke-width="1" />
|
|
524
524
|
<text x=${e.x} y=${N+20} text-anchor="middle" class="lintje-chart__axis-label">${e.label}</text>
|
|
525
|
-
`),re?
|
|
525
|
+
`),re?f`<text x=${re.x} y=${N+20} text-anchor="middle" class="lintje-chart__axis-label">${re.label}</text>`:h,fe.map((e,t)=>{let n=pe[t];return f`
|
|
526
526
|
<g class="lintje-chart__series ${Y(e.key)?`is-off`:``}">
|
|
527
527
|
<g class="lintje-chart__reference">
|
|
528
528
|
<line x1=${e.x} x2=${e.x} y1=${j.top} y2=${N}
|
|
529
529
|
stroke="var(--color-chart-emphasis)" stroke-width=${e.dashed?1:1.5}
|
|
530
|
-
stroke-dasharray=${e.dashed?`3 3`:
|
|
530
|
+
stroke-dasharray=${e.dashed?`3 3`:h} />
|
|
531
531
|
<text x=${n.x} y=${n.y} text-anchor=${n.anchor}
|
|
532
532
|
class=${e.bold?`lintje-chart__data-label lintje-chart__data-label--halo`:`lintje-chart__axis-label lintje-chart__axis-label--halo`}>${e.text}</text>
|
|
533
533
|
</g>
|
|
534
534
|
</g>
|
|
535
|
-
`}),J.map((e,t)=>
|
|
535
|
+
`}),J.map((e,t)=>f`
|
|
536
536
|
<rect x=${e.x} y=${j.top} width=${e.width} height=${Math.max(0,N-j.top)}
|
|
537
537
|
fill="transparent"
|
|
538
|
-
@mousemove=${e=>
|
|
539
|
-
@mouseleave=${()=>
|
|
540
|
-
`)];return
|
|
541
|
-
<div class="lintje-chart-wrap ${
|
|
542
|
-
${
|
|
543
|
-
@keydown=${e=>
|
|
544
|
-
${I({items:he,onToggle:e=>
|
|
545
|
-
${V({fontFamily:
|
|
546
|
-
${G(
|
|
547
|
-
${oe(
|
|
538
|
+
@mousemove=${e=>r.hoverAt(t,e,X(t))}
|
|
539
|
+
@mouseleave=${()=>r.hoverAt(null)} />
|
|
540
|
+
`)];return s`
|
|
541
|
+
<div class="lintje-chart-wrap ${v?`lintje-chart--small`:``}"
|
|
542
|
+
${m(r.attach)} ?data-in-view=${r.inView} data-tooltip-anchor
|
|
543
|
+
@keydown=${e=>r.dismiss(e)}>
|
|
544
|
+
${I({items:he,onToggle:e=>r.toggleSeries(e)})}
|
|
545
|
+
${V({fontFamily:r.fontFamily,id:x,ticks:O,max:T,area:j,axisTitle:o,xTitle:c,description:i,formatTick:k.format,keys:ne},ye)}
|
|
546
|
+
${G(r)}
|
|
547
|
+
${oe(r)}
|
|
548
548
|
</div>
|
|
549
|
-
`}var mt=16,ht=6,gt=18,_t=16,vt=3,yt=4,bt=8,xt=40,St=.7,Ct=420,wt=12,Tt=2;function Et(e){let t=new Set(e.series.map(e=>e.color).filter(Y)),n=N.filter(e=>!t.has(e)),r=0;return e.series.map(t=>{let i=e.axes.map((e,n)=>t.values[n]??null);if(t.comparison)return{label:t.label,values:i,comparison:!0,color:`var(--color-chart-secondary)`};let a=Y(t.color)?t.color:n[r++%n.length];return{label:t.label,values:i,comparison:!1,color:H(t.color??a),symbol:a}})}function Dt(e){let t=e.length,n=e.findIndex(e=>e==null);if(n===-1)return{closed:!0,runs:[e.map((e,t)=>t)]};let r=[],i=[];for(let a=1;a<=t;a++){let o=(n+a)%t;e[o]==null?(i.length&&r.push(i),i=[]):i.push(o)}return i.length&&r.push(i),{closed:!1,runs:r}}function Ot(e,t=e/5){let n=[];for(let r=1;r*t<e-t*1e-6;r++)n.push(Math.round(r*t*1e6)/1e6);return[...n,e]}var kt=e=>Number.isInteger(e)?0:String(e).split(`.`)[1]?.length??0;function At(e,t,n){let r=e.area??`emphasis`,i=t.filter(e=>!e.comparison);return new Set(i.filter(e=>e.complete&&r!==`never`&&(r===`always`||i.length===1||e.label===n)).map(e=>e.label))}function jt(
|
|
550
|
-
<div class="lintje-chart-wrap ${
|
|
551
|
-
${
|
|
552
|
-
@keydown=${e=>
|
|
553
|
-
${I({items:A,onToggle:e=>
|
|
549
|
+
`}var mt=16,ht=6,gt=18,_t=16,vt=3,yt=4,bt=8,xt=40,St=.7,Ct=420,wt=12,Tt=2;function Et(e){let t=new Set(e.series.map(e=>e.color).filter(Y)),n=N.filter(e=>!t.has(e)),r=0;return e.series.map(t=>{let i=e.axes.map((e,n)=>t.values[n]??null);if(t.comparison)return{label:t.label,values:i,comparison:!0,color:`var(--color-chart-secondary)`};let a=Y(t.color)?t.color:n[r++%n.length];return{label:t.label,values:i,comparison:!1,color:H(t.color??a),symbol:a}})}function Dt(e){let t=e.length,n=e.findIndex(e=>e==null);if(n===-1)return{closed:!0,runs:[e.map((e,t)=>t)]};let r=[],i=[];for(let a=1;a<=t;a++){let o=(n+a)%t;e[o]==null?(i.length&&r.push(i),i=[]):i.push(o)}return i.length&&r.push(i),{closed:!1,runs:r}}function Ot(e,t=e/5){let n=[];for(let r=1;r*t<e-t*1e-6;r++)n.push(Math.round(r*t*1e6)/1e6);return[...n,e]}var kt=e=>Number.isInteger(e)?0:String(e).split(`.`)[1]?.length??0;function At(e,t,n){let r=e.area??`emphasis`,i=t.filter(e=>!e.comparison);return new Set(i.filter(e=>e.complete&&r!==`never`&&(r===`always`||i.length===1||e.label===n)).map(e=>e.label))}function jt(t,n){let{controller:r,description:i,mobile:a=!1}=n,{axes:o,unit:c,threshold:u,small:d=!1}=t,f=o.length,p=Et(t),h=e=>r.hiddenSeries.includes(e.label),g=r.hiddenSeries.includes(P),_=p.length<2&&u==null,v=p.filter(e=>!h(e)),y=p.filter(e=>!e.comparison),b=v.filter(e=>!e.comparison),x=Math.min(2,Math.max(0,...p.flatMap(e=>e.values.filter(e=>e!=null)).map(kt),...u==null?[]:[kt(u)])),S=e=>l(e,x),C=e=>`${S(e)}${c?` ${c}`:``}`,w=e=>{let t=Math.round(e*10**x)/10**x;return t===0?S(0):`${t>0?`+`:`−`}${S(Math.abs(t))}`},T=b.length>1&&b.some(e=>e.label===r.emphasis)?r.emphasis:null,E=At(t,v.map(e=>({...e,complete:e.values.every(e=>e!=null)})),T),D=o.map((e,t)=>p.some(e=>e.values[t]==null)),O=t.dataLabels!==!1&&y.length===1,k=O&&!h(y[0]),A=[...p.map(e=>e.comparison?{label:e.label,color:e.color,shape:`line`,hidden:h(e),fixed:_}:{label:e.label,color:e.color,shape:`line`,symbol:e.symbol,hidden:h(e),fixed:_}),...u==null?[]:[{key:P,label:t.thresholdLabel??`Norm ${C(u)}`,color:`var(--color-chart-emphasis)`,shape:`dashed`,hidden:g}],...D.some(Boolean)?[{label:`Geen gegevens`,shape:`hatch`,fixed:!0}]:[]];function j(e){let n=v.map(t=>{let n=t.values[e];return{label:t.label,value:n==null?`geen gegevens`:C(n),color:t.color,symbol:t.symbol,marker:t.comparison?`line`:void 0}});u!=null&&!g&&n.push({label:t.thresholdLabel??`Norm`,value:C(u),color:`var(--color-chart-emphasis)`,marker:`dashed`});let[r]=b,i=b.length===1?r.values[e]:null;if(i!=null){let t=v.find(e=>e.comparison),r=t?.values[e];t&&r!=null&&n.push({label:`t.o.v. ${t.label}`,value:w(i-r),divider:!0}),u!=null&&!g&&n.push({label:`t.o.v. norm`,value:w(i-u),divider:!(t&&r!=null)})}return{title:o[e],rows:n}}let{width:M,height:N,body:F,at:L}=(a?Nt:Mt)({spec:t,controller:r,options:n,layers:p,shown:v,fills:E,emphasis:T,missing:D,reserve:O,labelled:k,hidden:h,normOff:g,format:S,contentAt:j}),R=ae(r,f,e=>({...L(e),content:j(e)}));return s`
|
|
550
|
+
<div class="lintje-chart-wrap ${d?`lintje-chart--small`:``}"
|
|
551
|
+
${m(r.attach)} ?data-in-view=${r.inView} data-tooltip-anchor
|
|
552
|
+
@keydown=${e=>r.dismiss(e)}>
|
|
553
|
+
${I({items:A,onToggle:e=>r.toggleSeries(e),onEmphasis:y.length>1?e=>r.emphasise(e):void 0})}
|
|
554
554
|
<figure class="lintje-chart">
|
|
555
555
|
<svg viewBox="0 0 ${M} ${N}" width=${M} height=${N}
|
|
556
|
-
class="lintje-chart__svg lintje-radar ${
|
|
557
|
-
${
|
|
558
|
-
role=${W(!1)} aria-labelledby="${
|
|
556
|
+
class="lintje-chart__svg lintje-radar ${a?`lintje-radar--rows`:``}"
|
|
557
|
+
${e({height:`${N}px`})}
|
|
558
|
+
role=${W(!1)} aria-labelledby="${r.id}-desc" tabindex="0"
|
|
559
559
|
@keydown=${R.keydown} @focus=${R.focus} @blur=${R.blur}>
|
|
560
|
-
<desc id="${
|
|
560
|
+
<desc id="${r.id}-desc">${i}</desc>
|
|
561
561
|
<defs>
|
|
562
|
-
<pattern id="hatch-${
|
|
562
|
+
<pattern id="hatch-${r.id}" width="6" height="6" patternUnits="userSpaceOnUse"
|
|
563
563
|
patternTransform="rotate(45)">
|
|
564
564
|
<line x1="0" y1="0" x2="0" y2="6" stroke="var(--color-chart-hatch)" stroke-width="2" />
|
|
565
565
|
</pattern>
|
|
@@ -567,87 +567,87 @@ import{$t as e,F as t,H as n,I as r,Jt as i,O as a,St as o,Zt as s,_ as c,an as
|
|
|
567
567
|
${F}
|
|
568
568
|
</svg>
|
|
569
569
|
</figure>
|
|
570
|
-
${G(
|
|
571
|
-
${oe(
|
|
570
|
+
${G(r)}
|
|
571
|
+
${oe(r)}
|
|
572
572
|
</div>
|
|
573
|
-
`}function Mt({spec:
|
|
573
|
+
`}function Mt({spec:t,controller:n,options:r,layers:i,shown:a,fills:o,emphasis:s,missing:c,reserve:u,labelled:d,hidden:m,normOff:g,format:_,contentAt:v}){let{axes:y,max:b,threshold:x,small:S=!1}=t,C=y.length,w=S?`--chart-h-small`:`--chart-h-main`;n.measure({width:!0,height:r.height??w,fit:!!r.expanded});let T=n.width,E=r.height??(r.expanded||S?n.height:Math.max(n.height,Math.min(Ct,Math.round(T*St)))),D=e=>-Math.PI/2+2*Math.PI*e/C,O=n.fontFamily,k=e=>p(e,O)*14/12,A=Math.max(0,...y.map((e,t)=>Math.abs(Math.cos(D(t)))<.1?0:k(e)+ht+2)),j=24+(u?_t:0),M=Math.max(xt,Math.min(T/2-A-mt,E/2-j-mt)),N=T/2,P=E/2,F=(e,t)=>({x:N+t*Math.cos(D(e)),y:P+t*Math.sin(D(e))}),I=e=>Math.max(0,Math.min(e,b))/b*M,L=e=>e.map(e=>`${e.x},${e.y}`).join(` `),z=e=>L(y.map((t,n)=>F(n,I(e)))),B=Ot(b,t.step),V=Math.max(0,...B.map(kt)),H=n.hoverIndex,U=e=>{let t=a.map(t=>t.values[e]).filter(e=>e!=null);return F(e,t.length?I(Math.max(...t)):M/2)},W=[...i.filter(e=>e.comparison),...i.filter(e=>!e.comparison)],G=e=>s!=null&&e.label!==s,K=e({"transform-origin":`${N}px ${P}px`}),q=y.map((e,t)=>{let n=Math.cos(D(t)),r=Math.sin(D(t)),a=F(t,M+mt+ht),o=Math.abs(n)<.1,s=o?`middle`:n>0?`start`:`end`,c;c=o&&r<0?a.y-4-(u?_t:0):o?a.y+12:u?a.y-2:a.y+5;let l=u?i.find(e=>!e.comparison)?.values[t]:void 0;return f`
|
|
574
574
|
<text x=${a.x} y=${c} text-anchor=${s} class="lintje-radar__name">${e}</text>
|
|
575
|
-
${u?
|
|
575
|
+
${u?f`<g class="lintje-chart__series ${d?``:`is-off`}">
|
|
576
576
|
<text x=${a.x} y=${c+_t} text-anchor=${s}
|
|
577
|
-
class="lintje-chart__data-label lintje-radar__value ${
|
|
578
|
-
${
|
|
579
|
-
</g>`:
|
|
580
|
-
`}),J=(e,t)=>{let n=`lintje-chart__series ${
|
|
581
|
-
<polygon class="lintje-radar__area ${
|
|
577
|
+
class="lintje-chart__data-label lintje-radar__value ${l==null?`lintje-radar__no-value`:``}">
|
|
578
|
+
${l==null?`geen gegevens`:_(l)}</text>
|
|
579
|
+
</g>`:h}
|
|
580
|
+
`}),J=(e,t)=>{let n=`lintje-chart__series ${m(e)?`is-off`:``}`,r=e.values.map((e,t)=>e==null?null:F(t,I(e)));if(t===`area`)return e.comparison||r.some(e=>e==null)?h:f`<g class=${n}><g class="lintje-radar__layer" ${K}>
|
|
581
|
+
<polygon class="lintje-radar__area ${o.has(e.label)?`is-filled`:``}"
|
|
582
582
|
points=${L(r)} fill=${e.color} />
|
|
583
|
-
</g></g>`;let{closed:i,runs:
|
|
584
|
-
${s?
|
|
583
|
+
</g></g>`;let{closed:i,runs:a}=Dt(e.values),s=e.comparison?void 0:R(e.color),c=a.map(t=>{let n=t.map(e=>r[e]),a=L(i?[...n,n[0]]:n);return n.length===1?e.comparison?f`<circle cx=${n[0].x} cy=${n[0].y} r="2.5" fill=${e.color} />`:h:f`
|
|
584
|
+
${s?f`<polyline class="lintje-chart__line lintje-chart__line--casing" points=${a} stroke=${s} />`:h}
|
|
585
585
|
<polyline class="lintje-chart__line" points=${a} stroke=${e.color} />
|
|
586
|
-
`}),
|
|
587
|
-
stroke=${s??
|
|
588
|
-
${c}${
|
|
589
|
-
</g></g>`},Y=e=>{let t=M+mt,n=Math.PI/C,r=e=>`${N+t*Math.cos(e)},${P+t*Math.sin(e)}`;return`${N},${P} ${r(D(e)-n)} ${r(D(e))} ${r(D(e)+n)}`};return{width:T,height:E,body:[B.map(e=>
|
|
590
|
-
points=${`${N+i},${P+a} ${o.x+i},${o.y+a} ${o.x-i},${o.y-a} ${N-i},${P-a}`} />`}),y.map((e,t)=>{let n=F(t,M+mt);return
|
|
591
|
-
x1=${N} y1=${P} x2=${n.x} y2=${n.y} />`}),B.map(e=>{let t=F(0,I(e));return
|
|
592
|
-
class="lintje-chart__axis-label lintje-chart__axis-label--halo">${
|
|
586
|
+
`}),l=e.symbol?r.map(t=>t?f`<path d=${te(e.symbol,vt,t.x,t.y)} fill=${e.color}
|
|
587
|
+
stroke=${s??h} stroke-width=${s?1:h} />`:h):h;return t===`lift`?f`<g class="lintje-radar__lift" aria-hidden="true">${c}${l}</g>`:f`<g class=${n}><g class="lintje-radar__layer ${G(e)?`is-muted`:``}" ${K}>
|
|
588
|
+
${c}${l}
|
|
589
|
+
</g></g>`},Y=e=>{let t=M+mt,n=Math.PI/C,r=e=>`${N+t*Math.cos(e)},${P+t*Math.sin(e)}`;return`${N},${P} ${r(D(e)-n)} ${r(D(e))} ${r(D(e)+n)}`};return{width:T,height:E,body:[B.map(e=>f`<polygon class="lintje-radar__ring" points=${z(e)} />`),c.map((e,t)=>{if(!e)return h;let r=D(t),i=-Math.sin(r)*5,a=Math.cos(r)*5,o=F(t,M);return f`<polygon class="lintje-radar__gap" fill="url(#hatch-${n.id})"
|
|
590
|
+
points=${`${N+i},${P+a} ${o.x+i},${o.y+a} ${o.x-i},${o.y-a} ${N-i},${P-a}`} />`}),y.map((e,t)=>{let n=F(t,M+mt);return f`<line class="lintje-radar__spoke ${H===t?`is-active`:``}"
|
|
591
|
+
x1=${N} y1=${P} x2=${n.x} y2=${n.y} />`}),B.map(e=>{let t=F(0,I(e));return f`<text x=${t.x+bt/2} y=${t.y+4}
|
|
592
|
+
class="lintje-chart__axis-label lintje-chart__axis-label--halo">${l(e,V)}</text>`}),x==null?h:f`<g class="lintje-chart__series ${g?`is-off`:``}">
|
|
593
593
|
<polygon class="lintje-chart__reference lintje-radar__norm" points=${z(x)} />
|
|
594
|
-
</g>`,W.map(e=>J(e,`area`)),W.map(e=>J(e,`line`)),s==null?
|
|
594
|
+
</g>`,W.map(e=>J(e,`area`)),W.map(e=>J(e,`line`)),s==null?h:J(i.find(e=>e.label===s),`lift`),q,H==null?h:a.map(e=>{let t=e.values[H];if(t==null)return h;let n=F(H,I(t)),r=e.comparison?void 0:R(e.color),i=te(e.symbol,yt,n.x,n.y);return f`
|
|
595
595
|
<path class="lintje-chart__hover-point" d=${i} fill=${e.color} />
|
|
596
|
-
${r?
|
|
597
|
-
`}),
|
|
598
|
-
${y.map((e,
|
|
599
|
-
@mousemove=${e=>
|
|
600
|
-
</g>`],at:U}}function Nt({spec:
|
|
601
|
-
<g class="lintje-radar__row ${A===
|
|
602
|
-
<text x="0" y=${
|
|
603
|
-
${
|
|
604
|
-
class="lintje-chart__data-label lintje-radar__value ${
|
|
605
|
-
${w?
|
|
606
|
-
class="lintje-chart__axis-label lintje-radar__value">onder norm</text></g>`:
|
|
607
|
-
${x.map(({layer:
|
|
608
|
-
fill="url(#hatch-${
|
|
609
|
-
width=${Math.max(0,E(
|
|
610
|
-
${
|
|
611
|
-
<line class="lintje-radar__zero" x1="0.5" x2="0.5" y1=${
|
|
612
|
-
${_==null?
|
|
596
|
+
${r?f`<path class="lintje-chart__hover-casing" d=${i} stroke=${r} />`:h}
|
|
597
|
+
`}),f`<g @mouseleave=${()=>n.hoverAt(null)}>
|
|
598
|
+
${y.map((e,t)=>f`<polygon class="lintje-chart__hit" points=${Y(t)}
|
|
599
|
+
@mousemove=${e=>n.hoverAt(t,e,v(t))} />`)}
|
|
600
|
+
</g>`],at:U}}function Nt({spec:t,controller:n,layers:r,shown:i,reserve:a,labelled:o,hidden:s,normOff:c,format:u,contentAt:d}){let{axes:m,max:g,threshold:_}=t;n.measure({width:!0});let v=n.width,y=v-1,b=r.filter(e=>!e.comparison),x=[...b.map(e=>({layer:e,size:b.length===1?8:6})),...r.filter(e=>e.comparison).map(e=>({layer:e,size:4}))],S=x.reduce((e,t)=>e+t.size,0)+Tt*Math.max(0,x.length-1),C=22+S+wt,w=m.length*C,T=w+16,E=e=>.5+Math.max(0,Math.min(e,g))/g*y,D=n.fontFamily,O=r.find(e=>!e.comparison),k=i.find(e=>!e.comparison),A=n.hoverIndex,j=e=>{let t=k?.values[e];return{x:t==null?v/2:E(t),y:e*C+gt+4}},M=m.map((t,r)=>{let i=r*C,l=i+gt+4,g=a?O?.values[r]:void 0,b=a?g==null?`geen gegevens`:u(g):``,w=a&&g!=null&&_!=null&&g<_,T=`lintje-chart__series ${o?``:`is-off`}`,k=l;return f`
|
|
601
|
+
<g class="lintje-radar__row ${A===r?`is-active`:``}">
|
|
602
|
+
<text x="0" y=${i+14} class="lintje-radar__name">${t}</text>
|
|
603
|
+
${a?f`<g class=${T}><text x=${v} y=${i+14} text-anchor="end"
|
|
604
|
+
class="lintje-chart__data-label lintje-radar__value ${g==null?`lintje-radar__no-value`:``}">${b}</text></g>`:h}
|
|
605
|
+
${w?f`<g class=${T}><text x=${v-p(b,D,700)-6} y=${i+14} text-anchor="end"
|
|
606
|
+
class="lintje-chart__axis-label lintje-radar__value">onder norm</text></g>`:h}
|
|
607
|
+
${x.map(({layer:t,size:i})=>{let a=k;k+=i+Tt;let o=t.values[r],c=s(t)?`is-off`:``;return o==null?f`<rect class="lintje-radar__bar lintje-chart__series ${c}" x="0.5" y=${a} width=${y} height=${i}
|
|
608
|
+
fill="url(#hatch-${n.id})" />`:f`<rect class="lintje-chart__bar lintje-chart__bar--horizontal lintje-radar__bar lintje-chart__series ${c}" x="0.5" y=${a}
|
|
609
|
+
width=${Math.max(0,E(o)-.5)} height=${i} fill=${t.color}
|
|
610
|
+
${e(U(r,m.length))} />`})}
|
|
611
|
+
<line class="lintje-radar__zero" x1="0.5" x2="0.5" y1=${l-2} y2=${l+S+2} />
|
|
612
|
+
${_==null?h:f`<g class="lintje-chart__series ${c?`is-off`:``}">
|
|
613
613
|
<line class="lintje-chart__reference lintje-radar__norm" x1=${E(_)} x2=${E(_)}
|
|
614
|
-
y1=${
|
|
614
|
+
y1=${l-3} y2=${l+S+3} />
|
|
615
615
|
</g>`}
|
|
616
|
-
<rect class="lintje-chart__hit" x="0" y=${
|
|
617
|
-
@mousemove=${e=>
|
|
616
|
+
<rect class="lintje-chart__hit" x="0" y=${i} width=${v} height=${C}
|
|
617
|
+
@mousemove=${e=>n.hoverAt(r,e,d(r))} />
|
|
618
618
|
</g>
|
|
619
|
-
`}),N=[0,...Ot(
|
|
619
|
+
`}),N=[0,...Ot(g,t.step)],P=Math.max(0,...N.map(kt)),F=N.map((e,t)=>f`<text x=${E(e)} y=${w+12}
|
|
620
620
|
text-anchor=${t===0?`start`:t===N.length-1?`end`:`middle`}
|
|
621
|
-
class="lintje-chart__axis-label">${
|
|
622
|
-
id=${r??
|
|
623
|
-
span=${e.span??
|
|
624
|
-
heading=${e.title??
|
|
625
|
-
icon=${e.icon??
|
|
626
|
-
subtitle=${n??
|
|
627
|
-
intro=${e.intro??
|
|
628
|
-
footnote=${e.footnote??
|
|
621
|
+
class="lintje-chart__axis-label">${l(e,P)}</text>`);return{width:v,height:T,body:f`<g @mouseleave=${()=>n.hoverAt(null)}>${M}</g>${F}`,at:j}}function Pt(e,t){switch(t.controller.follow(e),e.kind){case`line`:return fe(e,t);case`bar`:return he(e,t);case`horizontal-bar`:return _e(e,t);case`target-progress`:return ve(e,t);case`grouped-bar`:return we(e,t);case`stacked-bar`:return Oe(e,t);case`stacked-area`:return Ae(e,t);case`pie`:return Fe(e,t);case`dual-axis`:return Ie(e,t);case`scatter`:return Ke(e,t);case`heatmap`:return at(e,t);case`histogram`:return pt(e,t);case`radar`:return jt(e,t)}}var Ft=`.lintje-chart__view{flex:none}@media screen and (width<=767px){.lintje-chart__view{--h-control:var(--h-touch);width:100%}}`,It=`.lintje-chart__svg, .lintje-pie-chart__svg`,Lt=[{value:`chart`,label:`Grafiek`},{value:`table`,label:`Tabel`}];function Rt(e){return(e??``).normalize(`NFD`).replace(/[\u0300-\u036f]/g,``).toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)||`grafiek`}function zt(e){switch(e.kind){case`line`:case`stacked-area`:case`dual-axis`:case`scatter`:return`line`;case`pie`:return e.donut?`donut`:`pie`;case`radar`:return`pie`;case`heatmap`:return`heatmap`;default:return`bar`}}function Bt(e){switch(e.kind){case`horizontal-bar`:case`target-progress`:return e.rows.length?`${ge(e.rows.length)}px`:void 0;case`pie`:case`heatmap`:return;default:return e.small?`var(--chart-h-small)`:void 0}}function Vt(e){switch(e.kind){case`line`:{let t=e.events??[],n=e=>t.filter(t=>t.index===e).map(e=>e.label).join(`; `);return[[``,...e.series.map(e=>e.label),...t.length?[`Gebeurtenis`]:[]],...e.labels.map((r,i)=>[r,...e.series.map(e=>e.values[i]),...t.length?[n(i)]:[]])]}case`bar`:return[[``,e.axisTitle??`Waarde`,...e.trend?[`Trend`]:[]],...e.labels.map((t,n)=>[t,e.values[n],...e.trend?[e.trend[n]]:[]])];case`horizontal-bar`:return[[``,e.unit?`Waarde (${e.unit})`:`Waarde`],...e.rows.map(e=>[e.label,e.value])];case`target-progress`:return[[``,`Voortgang (%)`,`Doel (%)`],...e.rows.map(t=>[t.label,t.value,e.target??100])];case`grouped-bar`:case`stacked-bar`:return[[``,...e.series.map(e=>e.label)],...e.labels.map((t,n)=>[t,...e.series.map(e=>e.values[n])])];case`stacked-area`:return[[``,...e.series.map(e=>e.label),`Totaal`],...e.labels.map((t,n)=>{let r=e.series.map(e=>e.values[n]),i=r.some(e=>e==null)?null:Number(r.reduce((e,t)=>e+t,0).toFixed(Ht(r)));return[t,...r,i]})];case`pie`:return[[``,`Aantal`],...e.segments.map(e=>[e.label,e.value])];case`dual-axis`:{let t=e=>e.unit?`${e.label} (${e.unit})`:e.label;return[[``,t(e.left),t(e.right)],...e.labels.map((t,n)=>[t,e.left.values[n],e.right.values[n]])]}case`scatter`:{let t=(e,t)=>{let n=e.charAt(0).toUpperCase()+e.slice(1);return t?`${n} (${t})`:n};return[[`Reeks`,`Naam`,t(e.xTitle,e.xUnit),t(e.axisTitle,e.unit)],...e.series.flatMap(e=>e.points.map(t=>[e.label,t.label,t.x,t.y]))]}case`heatmap`:return[[``,...e.columnLabels],...e.rowLabels.map((t,n)=>[t,...e.values[n]??[]])];case`radar`:{let t=e.threshold==null?[]:[e.thresholdLabel??`Norm`];return[[``,...e.series.map(e=>e.label),...t],...e.axes.map((t,n)=>[t,...e.series.map(e=>e.values[n]??null),...e.threshold==null?[]:[e.threshold]])]}case`histogram`:{let t=t=>e.unit?`${t} (${e.unit})`:t;return[[`Klasse`,t(`Van`),t(`Tot`),`Aantal`],...e.bins.map(t=>[dt(t,e.unit),t.from,t.to??``,t.count])]}}}function Ht(e){return e.reduce((e,t)=>{if(typeof t!=`number`||Number.isInteger(t))return e;let n=String(t).split(`.`)[1]??``;return Math.max(e,n.length)},0)}function Ut(e,t){let[n=[],...r]=Vt(e),i=n.map((e,t)=>{let n=r.map(e=>e[t]??null);return t===0||n.some(e=>typeof e==`string`&&e!==``)?{key:`c${t}`,header:String(e??``),format:`text`,sortable:!1}:{key:`c${t}`,header:String(e??``),format:`decimal`,decimals:Ht(n),align:`right`,sortable:!1}});return{caption:t,columns:i,rows:r.map((e,t)=>({row:String(t),...Object.fromEntries(i.map((t,n)=>[t.key,e[n]??null]))})),rowKey:`row`,defaultSort:{key:`row`,direction:`asc`},pageSize:Math.max(r.length,1)}}var Wt=class extends C{constructor(...e){super(...e),this.view=`chart`,this.#e=new j(()=>this.requestUpdate()),this.#t=null,this.#n=new a(this)}static{this.styles=[t,v(S),v(i),...X,v(Ft)]}static{this.properties={data:{attribute:!1},view:{state:!0}}}#e;#t;#n;get dataSettings(){return this.data??void 0}disconnectedCallback(){this.#e.detach(),this.#t?.detach(),this.#t=null,super.disconnectedCallback()}get ready(){return(this.data?.state??`ready`)===`ready`}get showsTable(){return!!this.data?.tableSwitch&&this.ready&&this.view===`table`}get expandable(){return this.data?.expandable!==!1}get downloadName(){let e=this.data?.download;return e===!1?null:e?.filename??Rt(this.data?.title)}csv(){let e=this.data,t=this.downloadName;e&&t!==null&&T(t,Vt(e.chart))}png(){let e=this.data;if(!e)return;let t=this.renderRoot.querySelector(this.expanded?`lintje-modal`:`lintje-tile`)?.querySelector(It);t&&w(this.downloadName??Rt(e.title),t)}expandChanged(e){e?this.#t??=new j(()=>this.requestUpdate()):(this.#t?.detach(),this.#t=null)}render(){let e=this.data;if(!e)return h;let t=this.ready,n=this.#n.matches&&e.mobileSubtitle?e.mobileSubtitle:e.subtitle,r=this.id?`${this.id}-tile`:void 0,i=e.tableSwitch&&t?this.viewSwitch():h,a=this.showsTable;return s`<lintje-tile
|
|
622
|
+
id=${r??h}
|
|
623
|
+
span=${e.span??h}
|
|
624
|
+
heading=${e.title??h}
|
|
625
|
+
icon=${e.icon??h}
|
|
626
|
+
subtitle=${n??h}
|
|
627
|
+
intro=${e.intro??h}
|
|
628
|
+
footnote=${e.footnote??h}
|
|
629
629
|
?legend-below=${!!e.legendBelow}
|
|
630
630
|
?expandable=${this.expandable&&t}
|
|
631
631
|
?download=${this.downloadName!==null&&t}
|
|
632
632
|
state=${e.state??`ready`}
|
|
633
|
-
message=${e.message??
|
|
634
|
-
last-known=${e.lastKnown??
|
|
635
|
-
content-height=${Bt(e.chart)??
|
|
633
|
+
message=${e.message??h}
|
|
634
|
+
last-known=${e.lastKnown??h}
|
|
635
|
+
content-height=${Bt(e.chart)??h}
|
|
636
636
|
@lintje-tile-expand=${e=>{e.stopPropagation(),this.expand(!0)}}
|
|
637
637
|
@lintje-tile-download=${e=>{e.stopPropagation(),this.csv()}}
|
|
638
638
|
>
|
|
639
639
|
${i}
|
|
640
|
-
${e.notice?
|
|
640
|
+
${e.notice?s`<lintje-announcement
|
|
641
641
|
slot="notice"
|
|
642
642
|
compact
|
|
643
643
|
.data=${e.notice}
|
|
644
|
-
></lintje-announcement>`:
|
|
644
|
+
></lintje-announcement>`:h}
|
|
645
645
|
${this.content()}
|
|
646
646
|
</lintje-tile>
|
|
647
647
|
|
|
648
|
-
${this.renderExpandModal(this.expanded?a?this.table():this.#t?Pt(e.chart,{...this.chartOptions(this.#t),expanded:!0}):
|
|
648
|
+
${this.renderExpandModal(this.expanded?a?this.table():this.#t?Pt(e.chart,{...this.chartOptions(this.#t),expanded:!0}):h:h,{heading:e.title,subtitle:n,footnote:e.footnote,csv:()=>this.csv(),png:a?void 0:()=>this.png()})}`}content(){let e=this.data;switch(e.state??`ready`){case`loading`:return s`<div slot="loading">
|
|
649
649
|
${ne({kind:zt(e.chart),height:Bt(e.chart),status:!1})}
|
|
650
|
-
</div>`;case`empty`:case`error`:return
|
|
650
|
+
</div>`;case`empty`:case`error`:return h;default:return this.showsTable?this.table():Pt(e.chart,this.chartOptions(this.#e))}}viewSwitch(){let e=this.#n.matches;return s`<lintje-segmented
|
|
651
651
|
class="lintje-chart__view"
|
|
652
652
|
slot=${e?`notice`:`actions`}
|
|
653
653
|
label="Weergave"
|
|
@@ -656,8 +656,8 @@ import{$t as e,F as t,H as n,I as r,Jt as i,O as a,St as o,Zt as s,_ as c,an as
|
|
|
656
656
|
.value=${this.view}
|
|
657
657
|
.options=${Lt}
|
|
658
658
|
@lintje-change=${e=>{e.stopPropagation(),this.view=e.detail===`table`?`table`:`chart`}}
|
|
659
|
-
></lintje-segmented>`}table(){let e=this.data,t=e.title?`${e.title}, als tabel`:`Grafiek als tabel`;return
|
|
659
|
+
></lintje-segmented>`}table(){let e=this.data,t=e.title?`${e.title}, als tabel`:`Grafiek als tabel`;return s`<lintje-data-table
|
|
660
660
|
class="lintje-chart__table"
|
|
661
661
|
bare
|
|
662
662
|
.data=${Ut(e.chart,t)}
|
|
663
|
-
></lintje-data-table>`}select(e,t=!1){t?e.href&&this.followLink(e.href,void 0,void 0,{newTab:!0}):this.emit(`lintje-mark-select`,e)&&e.href&&this.followLink(e.href)}async focusMark(e){await this.updateComplete;let t=this.renderRoot.querySelector(this.expanded?`lintje-modal`:`lintje-tile`),n=t?.querySelector(`[data-mark-id="${CSS.escape(e)}"]`)??t?.querySelector(`${It}, .lintje-heatmap`);n&&!n.hasAttribute(`tabindex`)&&n.setAttribute(`tabindex`,`-1`),n?.focus()}chartOptions(e){return{controller:e,description:this.data?.description??``,mobile:this.#n.matches,selectedId:this.data?.selectedId??null,onSelect:({id:e,label:t,href:n},r)=>this.select({id:e,label:t,href:n},r),onClear:e=>{this.select({id:null,label:null,href:this.data?.clearHref}),this.focusMark(e)}}}};
|
|
663
|
+
></lintje-data-table>`}select(e,t=!1){t?e.href&&this.followLink(e.href,void 0,void 0,{newTab:!0}):this.emit(`lintje-mark-select`,e)&&e.href&&this.followLink(e.href)}async focusMark(e){await this.updateComplete;let t=this.renderRoot.querySelector(this.expanded?`lintje-modal`:`lintje-tile`),n=t?.querySelector(`[data-mark-id="${CSS.escape(e)}"]`)??t?.querySelector(`${It}, .lintje-heatmap`);n&&!n.hasAttribute(`tabindex`)&&n.setAttribute(`tabindex`,`-1`),n?.focus()}chartOptions(e){return{controller:e,description:this.data?.description??``,mobile:this.#n.matches,selectedId:this.data?.selectedId??null,onSelect:({id:e,label:t,href:n},r)=>this.select({id:e,label:t,href:n},r),onClear:e=>{this.select({id:null,label:null,href:this.data?.clearHref}),this.focusMark(e)}}}};y(`lintje-chart`,Wt);export{Wt as LintjeChart};
|