{"version":3,"file":"DonutChartWidget.mjs","names":["React","forwardRef","Fragment","Grid","Box","Typography","MuiVegaLite","WidgetCard","FluentStatsSnippet","ChartSummaryToggle","convertISODate","layout","w","default","min","max","h","DonutChartWidget","props","ref","$","_c","children","other","params","setParam","mockData","theme","dateRange","t0","from","to","t1","stats","map","_temp","t2","t3","Symbol","for","overflow","display","alignItems","justifyContent","padding","t4","data","t5","type","field","t6","name","values","transform","t7","expr","as","t8","source","fields","groupby","ops","value","t9","t10","domain","range","scheme","t11","encode","enter","fill","scale","x","signal","y","padAngle","update","startAngle","endAngle","innerRadius","outerRadius","t12","style","align","baseline","fontSize","t13","labels","text","t14","t15","direction","orient","labelColor","t16","$schema","width","height","scales","marks","legends","t17","body","t18","t19","mode","t20","title","t21","t22","stat","label","currentValue","previousValue"],"sources":["../../../../../src/UI/widgets/library/DonutChartWidget/DonutChartWidget.jsx"],"sourcesContent":["import React, { forwardRef, Fragment } from 'react'\nimport { Grid, Box, Typography } from '@material-ui/core'\nimport { MuiVegaLite } from '@material-vega/material-ui'\nimport WidgetCard from '../../WidgetCard'\nimport FluentStatsSnippet from '../../FluentComponents/atoms/FluentStatsSnippet'\nimport ChartSummaryToggle from '../../FluentComponents/ChartSummaryToggle'\nimport { convertISODate } from '../../utils/ConvertISODate'\n\nexport const layout = {\n  w: { default: 2, min: 0, max: 4 },\n  h: { default: 2, min: 0, max: 4 }\n}\n\nconst DonutChartWidget = (props, ref) => {\n  const { children, params, setParam, ...other } = props\n  const { mockData, apiUrl, theme, dateRange } = params\n\n  let body = (\n    <Fragment>\n      {dateRange && (\n        <Typography gutterBottom variant='caption' component='h3'>\n          From: {convertISODate(dateRange.from)} to:{' '}\n          {convertISODate(dateRange.to)}\n        </Typography>\n      )}\n      <Grid container>\n        {mockData?.stats?.map((stat) => (\n          <Grid item xs={3} key={stat.label}>\n            <FluentStatsSnippet\n              label={stat.label}\n              amount={stat.currentValue}\n              prevAmount={stat.previousValue}\n            />\n          </Grid>\n        ))}\n      </Grid>\n      <Box clone flex={1} mt={1} overflow='hidden'>\n        <MuiVegaLite\n          variant='donutChart'\n          style={{\n            overflow: 'auto',\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            padding: 0\n          }}\n          spec={{\n            $schema: 'https://vega.github.io/schema/vega/v5.json',\n            width: 200,\n            height: 200,\n            data: [\n              {\n                name: 'table',\n                values: mockData?.data,\n                transform: [\n                  {\n                    type: 'pie',\n                    field: 'value'\n                  }\n                ]\n              },\n              {\n                name: 'used',\n                source: 'table',\n                transform: [\n                  {\n                    type: 'formula',\n                    expr: \"datum.id === 'Other' ? 'Other' : 'Main'\",\n                    as: 'id'\n                  },\n                  {\n                    type: 'aggregate',\n                    fields: ['field'],\n                    groupby: ['id'],\n                    ops: ['sum'],\n                    as: ['sum']\n                  },\n                  {\n                    type: 'pivot',\n                    field: 'label',\n                    value: 'sum'\n                  }\n                ]\n              }\n            ],\n            scales: [\n              {\n                name: 'color',\n                type: 'ordinal',\n                domain: { data: 'table', field: 'label' },\n                range: { scheme: 'greys' }\n              }\n            ],\n            marks: [\n              {\n                type: 'arc',\n                from: { data: 'table' },\n                encode: {\n                  enter: {\n                    fill: { scale: 'color', field: 'label' },\n                    x: { signal: 'width / 2' },\n                    y: { signal: 'height / 2' },\n                    padAngle: { value: 0.01 }\n                  },\n                  update: {\n                    startAngle: { field: 'startAngle' },\n                    endAngle: { field: 'endAngle' },\n                    innerRadius: { signal: 'width / 2 - 10' },\n                    outerRadius: { signal: 'width / 2' }\n                  }\n                }\n              },\n              {\n                type: 'text',\n                from: { data: 'used' },\n                style: ['percent'],\n                encode: {\n                  enter: {\n                    x: { signal: 'width / 2' },\n                    y: { signal: 'height / 2' },\n                    align: { value: 'center' },\n                    baseline: { value: 'middle' },\n                    fontSize: { value: 24 }\n                  }\n                }\n              }\n            ],\n            legends: [\n              {\n                fill: 'color',\n                direction: 'vertical',\n                encode: {\n                  labels: {\n                    name: 'legendLabel',\n                    enter: { text: { field: 'label' } }\n                  }\n                },\n                orient: 'right',\n                labelColor: theme === 'dark' ? 'white' : 'rgba(0, 0, 0, 0.87)'\n              }\n            ]\n          }}\n        />\n      </Box>\n      {children}\n    </Fragment>\n  )\n\n  return (\n    <WidgetCard\n      theme={theme}\n      ref={ref}\n      headerActions={\n        <ChartSummaryToggle\n          value={params.mode}\n          onChange={(value) => setParam('mode', value)}\n        />\n      }\n      {...other}\n      title={mockData?.title}\n    >\n      {mockData ? (\n        body\n      ) : (\n        <Typography variant='subtitle2'>\n          Could not retrieve widget data. Please contact support.\n        </Typography>\n      )}\n    </WidgetCard>\n  )\n}\n\nexport default forwardRef(DonutChartWidget)\n"],"mappings":"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"}