{"version":3,"file":"QuestionViz.mjs","names":["React","useMemo","useTranslation","UdpText","UdpLink","UdpDetailListItem","UdpAgDonutChart","UdpAgBarChart","UdpAgAreaChart","MAX_BARS","messageStyle","color","fillStyle","position","height","width","centerStyle","display","alignItems","presenceRowStyle","gap","presenceDonutStyle","flexShrink","statGridStyle","gridTemplateColumns","tuplesToData","top","map","label","count","String","buildChartOptions","insight","answered","t","viz","data","filter","d","length","series","type","angleKey","legendItemKey","innerRadiusRatio","calloutLabel","enabled","innerLabels","text","toLocaleString","fontSize","defaultValue","legend","slice","direction","xKey","yKey","axes","x","paddingInner","paddingOuter","y","interpolation","marker","skipped","renderStat","stat","cells","avg","min","max","p50","p90","k","v","message","QuestionViz","t0","$","_c","t1","undefined","t2","chartOptions","noInsightText","t3","Symbol","for","bb0","t4","t5","reason","isFile","kind","uploaded","provided","t6","_temp","t7","t8","Chart","e","preventDefault"],"sources":["../../../../src/udp/pages/UdpQuestionFormOverviewPage/QuestionViz.jsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { UdpText, UdpLink } from '../../../UI/fluent-web-components';\nimport { UdpDetailListItem } from '../../../UI/dataDisplay';\nimport {\n  UdpAgDonutChart,\n  UdpAgBarChart,\n  UdpAgAreaChart,\n} from '../../../UI/charts/ag';\n\n// One question's visualization, picked per field type from `insight.viz`. It\n// always FILLS its parent's height (the card gives it a fixed area) so every\n// question card is the same size — charts stretch to fill; stat/presence/\n// message center vertically.\n//\n//   'donut'    — single-choice / yes-no (part-to-whole)\n//   'bar-h'    — multi-choice / free-text frequency (ranked)\n//   'bar-v'    — time-of-day buckets\n//   'area'     — date buckets over time\n//   'stat'     — numeric Avg/Min/Max/P50/P90 grid\n//   'presence' — file/signature/location/table completeness donut + link\n//   'message'  — muted fallback (unsupported / tally)\n\nconst MAX_BARS = 8;\n\nconst messageStyle = { color: 'var(--colorNeutralForeground3)' };\nconst fillStyle = { position: 'relative', height: '100%', width: '100%' };\nconst centerStyle = { height: '100%', display: 'flex', alignItems: 'center' };\nconst presenceRowStyle = { ...centerStyle, gap: 16 };\nconst presenceDonutStyle = { width: 110, height: 110, position: 'relative', flexShrink: 0 };\nconst statGridStyle = {\n  width: '100%',\n  display: 'grid',\n  gridTemplateColumns: 'repeat(5, minmax(0, 1fr))',\n  gap: 16,\n};\n\nconst tuplesToData = (top) => (top ?? []).map(([label, count]) => ({ label: String(label), count }));\n\nconst buildChartOptions = (insight, answered, t) => {\n  if (!insight) return null;\n  switch (insight.viz) {\n    case 'donut': {\n      const data = tuplesToData(insight.top).filter((d) => d.count > 0);\n      if (data.length === 0) return null;\n      return {\n        data,\n        series: [\n          {\n            type: 'donut',\n            angleKey: 'count',\n            legendItemKey: 'label',\n            innerRadiusRatio: 0.7,\n            calloutLabel: { enabled: false },\n            innerLabels: [\n              { text: answered.toLocaleString(), fontSize: 22 },\n              {\n                text: t('formOverview.viz.answered', { defaultValue: 'answered' }),\n                color: 'var(--colorNeutralForeground3)',\n              },\n            ],\n          },\n        ],\n        legend: { enabled: true, position: 'right' },\n      };\n    }\n    case 'bar-h': {\n      const data = tuplesToData(insight.top).slice(0, MAX_BARS);\n      if (data.length === 0) return null;\n      return {\n        data,\n        series: [{ type: 'bar', direction: 'horizontal', xKey: 'label', yKey: 'count' }],\n        axes: {\n          x: { type: 'category', position: 'left', paddingInner: 0.3, paddingOuter: 0.2 },\n          y: { type: 'number', position: 'bottom' },\n        },\n        legend: { enabled: false },\n      };\n    }\n    case 'bar-v': {\n      const data = tuplesToData(insight.top);\n      if (data.length === 0) return null;\n      return {\n        data,\n        series: [{ type: 'bar', xKey: 'label', yKey: 'count' }],\n        axes: {\n          x: { type: 'category', position: 'bottom', paddingInner: 0.3, paddingOuter: 0.2 },\n          y: { type: 'number', position: 'left' },\n        },\n        legend: { enabled: false },\n      };\n    }\n    case 'area': {\n      const data = tuplesToData(insight.top);\n      if (data.length === 0) return null;\n      return {\n        data,\n        series: [\n          { type: 'area', xKey: 'label', yKey: 'count', interpolation: { type: 'smooth' }, marker: { enabled: true } },\n        ],\n        axes: {\n          x: { type: 'category', position: 'bottom' },\n          y: { type: 'number', position: 'left' },\n        },\n        legend: { enabled: false },\n      };\n    }\n    case 'presence': {\n      if (answered + insight.skipped === 0) return null;\n      return {\n        data: [\n          { label: t('formOverview.viz.provided', { defaultValue: 'Provided' }), count: answered },\n          { label: t('formOverview.viz.skipped', { defaultValue: 'Skipped' }), count: insight.skipped },\n        ].filter((d) => d.count > 0),\n        series: [\n          {\n            type: 'donut',\n            angleKey: 'count',\n            legendItemKey: 'label',\n            innerRadiusRatio: 0.72,\n            calloutLabel: { enabled: false },\n            innerLabels: [{ text: answered.toLocaleString(), fontSize: 18 }],\n          },\n        ],\n        legend: { enabled: false },\n      };\n    }\n    default:\n      return null;\n  }\n};\n\nconst renderStat = (stat, t) => {\n  if (!stat)\n    return (\n      <UdpText variant='caption1' block style={messageStyle}>\n        {t('formOverview.viz.noNumericAnswers', { defaultValue: 'No numeric answers yet.' })}\n      </UdpText>\n    );\n  const cells = [\n    [t('formOverview.viz.avg', { defaultValue: 'Avg' }), stat.avg],\n    [t('formOverview.viz.min', { defaultValue: 'Min' }), stat.min],\n    [t('formOverview.viz.max', { defaultValue: 'Max' }), stat.max],\n    [t('formOverview.viz.p50', { defaultValue: 'P50' }), stat.p50],\n    [t('formOverview.viz.p90', { defaultValue: 'P90' }), stat.p90],\n  ];\n  return (\n    <div style={statGridStyle}>\n      {cells.map(([k, v]) => (\n        <UdpDetailListItem key={k} label={k} value={String(v)} emphasis='strong' />\n      ))}\n    </div>\n  );\n};\n\nconst message = (text) => (\n  <div style={centerStyle}>\n    <UdpText variant='caption1' block style={messageStyle}>{text}</UdpText>\n  </div>\n);\n\nexport const QuestionViz = ({ insight, answered = 0 }) => {\n  const { t } = useTranslation();\n  const chartOptions = useMemo(\n    () => buildChartOptions(insight, answered, t),\n    [insight, answered, t]\n  );\n\n  const noInsightText = t('formOverview.viz.noInsight', { defaultValue: 'No insight available.' });\n  if (!insight) return message(noInsightText);\n  if (insight.viz === 'stat') return <div style={centerStyle}>{renderStat(insight.stat, t)}</div>;\n  if (insight.viz === 'message') return message(insight.reason ?? noInsightText);\n  if (!chartOptions)\n    return message(t('formOverview.viz.noAnswersInView', { defaultValue: 'No answers in this view.' }));\n\n  if (insight.viz === 'presence') {\n    const isFile = insight.kind === 'file';\n    return (\n      <div style={presenceRowStyle}>\n        <div style={presenceDonutStyle}>\n          <UdpAgDonutChart shape='rounded' chartOptions={chartOptions} customHeight='100%' />\n        </div>\n        <UdpText variant='caption1' block style={messageStyle}>\n          {isFile\n            ? t('formOverview.viz.uploadedSkipped', {\n                defaultValue: '{{uploaded}} uploaded · {{skipped}} skipped · ',\n                uploaded: answered.toLocaleString(),\n                skipped: insight.skipped.toLocaleString()\n              })\n            : t('formOverview.viz.providedSkipped', {\n                defaultValue: '{{provided}} provided · {{skipped}} skipped',\n                provided: answered.toLocaleString(),\n                skipped: insight.skipped.toLocaleString()\n              })}\n          {isFile && (\n            <UdpLink href='#' onClick={(e) => e.preventDefault()}>{t('formOverview.viz.browseFiles', { defaultValue: 'Browse files' })}</UdpLink>\n          )}\n        </UdpText>\n      </div>\n    );\n  }\n\n  const Chart = insight.viz === 'donut' ? UdpAgDonutChart : insight.viz === 'area' ? UdpAgAreaChart : UdpAgBarChart;\n  return (\n    <div style={fillStyle}>\n      <Chart shape='rounded' chartOptions={chartOptions} customHeight='100%' />\n    </div>\n  );\n};\n"],"mappings":"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"}