{"version":3,"file":"static/chunks/5718.e4f54b13846b1dcb.js","mappings":"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","sources":["webpack://_N_E/./public/img/legend-check.svg","webpack://_N_E/./components/ProductDiagram/ProductDiagram.js","webpack://_N_E/./components/ProductDiagram/index.js","webpack://_N_E/./components/ProductDiagram/ProductDiagram.module.scss"],"sourcesContent":["var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgLegendCheck = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 9.75,\n height: 8.461,\n fill: \"none\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5,\n d: \"M9 .75 4.617 7.71.75 3.587\"\n})));\nexport default SvgLegendCheck;","import React, { useEffect, useState } from 'react';\nimport { defaults } from 'chart.js';\nimport { Line } from 'react-chartjs-2';\nimport { useTranslation } from 'next-i18next';\nimport Check from '../../public/img/legend-check.svg';\nimport classNames from 'classnames';\nimport debounce from 'debounce';\nimport Papa from 'papaparse';\nimport PropTypes from 'prop-types';\nimport 'chart.js/auto';\n\nimport styles from './ProductDiagram.module.scss';\n\nconst ProductDiagram = ({ title = '', sheets = [], note = '' }) => {\n // // Bypass for SSR\n if (typeof window === 'undefined') {\n return null;\n }\n\n defaults.font.family = 'Inter, sans-serif';\n const { t } = useTranslation();\n const palette = [\n 'rgba(0, 91, 117, 1)',\n 'rgba(254, 202, 1, 1)',\n 'rgba(15, 177, 193, 1)',\n 'rgba(237, 111, 136, 1)',\n 'rgba(29, 172, 44, 1)',\n ];\n const unit = 'Öre/kWh';\n const [chartData, setChartData] = useState({\n labels: [],\n datasets: [],\n });\n const [mounted, setMounted] = useState(false);\n const [sheet, setSheet] = useState(\n sheets.length > 0 ? sheets[0].file.url : null\n );\n const [downloadSheet, setDownloadSheet] = useState(\n sheets.length > 0 ? sheets[0].downloadFile.url : null\n );\n const [displayYears, setDisplayYears] = useState(2);\n const [addDiscount, setAddDiscount] = useState(false);\n const [hasDiscount, setHasDiscount] = useState(false);\n const [minMax, setMinMax] = useState([99999, 0]);\n const [activeDatasets, setActiveDatasets] = useState([true, true]);\n const [windowWidth, setWindowWidth] = useState(window.innerWidth);\n\n useEffect(() => {\n setMounted(true);\n getChartData();\n\n window.addEventListener('resize', handleResize);\n\n // Clean up the event listener when the component unmounts\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n useEffect(() => {\n getChartData();\n }, [displayYears, sheet, addDiscount, activeDatasets, windowWidth]);\n\n const handleResize = debounce(\n () => setWindowWidth(window.innerWidth),\n 1000\n );\n\n const handleLegendClick = (datasetIndex) => {\n setActiveDatasets((prevActiveDatasets) => {\n const updatedActiveDatasets = [...prevActiveDatasets];\n updatedActiveDatasets[datasetIndex] =\n !updatedActiveDatasets[datasetIndex];\n return updatedActiveDatasets;\n });\n };\n\n const updateMinMax = (values) => {\n setMinMax((prevMinMax) => {\n const [currentMinValue, currentMaxValue] = prevMinMax;\n\n const newMinValue = Math.min(currentMinValue, ...values);\n const newMaxValue = Math.max(currentMaxValue, ...values);\n\n return [newMinValue, newMaxValue];\n });\n };\n\n const getChartData = () => {\n Papa.parse(`${sheet}`, {\n download: true,\n header: true,\n skipEmptyLines: true,\n complete: (result) => {\n const dataByYear = result.data.reduce((acc, item) => {\n const year = item.Year;\n\n if (!acc[year]) {\n acc[year] = [];\n }\n\n acc[year].push(item);\n return acc;\n }, {});\n\n const keys = Object.keys(dataByYear);\n const firstKey = keys[0];\n const lastKey = keys[keys.length - 1];\n const datasets = [];\n let lastDisplayYears = {};\n let labels = [];\n\n if (displayYears === 2) {\n lastDisplayYears = Object.fromEntries(\n Object.entries(dataByYear).slice(-(displayYears + 1))\n );\n const months = Object.keys(dataByYear[firstKey][0]).slice(\n 2,\n -1\n );\n let values = {};\n let discount = false;\n\n for (const year in lastDisplayYears) {\n const monthsAndYear = months.map(\n (item) => `${item} ${year}`\n );\n labels = [...labels, ...monthsAndYear];\n\n const yearData = dataByYear[year];\n\n yearData.forEach((item) => {\n const label = item[''];\n discount = item.Discount;\n setHasDiscount(Boolean(discount));\n\n if (!values[label]) {\n values[label] = [];\n }\n\n values[label].push(\n ...Object.values(item).slice(2, -1)\n );\n });\n }\n\n let emptyPos = 36;\n\n for (const key in values) {\n const valuesArray = values[key];\n emptyPos = valuesArray.findIndex(\n (value) => value === ''\n );\n emptyPos = emptyPos === -1 ? 36 : emptyPos;\n }\n\n labels = labels.slice(emptyPos - 24, emptyPos);\n\n for (const key in values) {\n const valuesArray = values[key];\n let finalValues = valuesArray\n .slice(emptyPos - 24, emptyPos)\n .map((item) => parseFloat(item));\n\n if (addDiscount && discount) {\n finalValues.forEach((value, index) => {\n finalValues[index] = value - discount;\n });\n }\n\n values[key] = finalValues;\n\n datasets.push({\n label: `${key}`,\n data: values[key],\n });\n }\n } else {\n const availableYearsLength = Object.keys(dataByYear).length;\n const averagePerYear = {};\n labels = keys.slice(\n availableYearsLength - (displayYears + 1),\n availableYearsLength - 1\n );\n lastDisplayYears = Object.fromEntries(\n Object.entries(dataByYear).slice(\n availableYearsLength - (displayYears + 1),\n availableYearsLength - 1\n )\n );\n\n for (const year in lastDisplayYears) {\n const yearData = dataByYear[year];\n\n yearData.forEach((item) => {\n const label = item[''];\n const values = Object.values(item).slice(2, -1);\n const discount = item.Discount;\n updateMinMax(values);\n setHasDiscount(Boolean(discount));\n\n if (addDiscount && discount) {\n values.forEach((value, index) => {\n values[index] = value - discount;\n });\n }\n\n const average =\n values.reduce(\n (sum, value) => sum + parseFloat(value),\n 0\n ) / values.length;\n\n if (!averagePerYear[label]) {\n averagePerYear[label] = [];\n }\n\n averagePerYear[label].push(average.toFixed(2));\n });\n }\n\n for (const label in averagePerYear) {\n datasets.push({\n label: `${label}`,\n data: averagePerYear[label],\n });\n }\n }\n\n setChartData({\n labels,\n datasets: datasets.map((item, index) => ({\n ...item,\n backgroundColor: activeDatasets[index]\n ? palette[index]\n : palette[index].replace(/[^,]+(?=\\))/, '0.1'),\n borderColor: activeDatasets[index]\n ? palette[index]\n : palette[index].replace(/[^,]+(?=\\))/, '0.1'),\n borderRadius: 5,\n maxBarThickness: 70,\n pointHoverRadius: 10,\n pointRadius: windowWidth < 768 ? 4 : 6,\n dimmed: false,\n })),\n });\n },\n });\n };\n\n // const handleSetSheet = (e) => {\n // setSheet(e.target.value);\n // };\n\n const handleSetSheet = (e) => {\n const sheet = sheets[e.target.value].file.url;\n const downloadSheet = sheets[e.target.value].downloadFile.url;\n setSheet(sheet);\n setDownloadSheet(downloadSheet);\n };\n\n const handleSetDiscount = (e) => {\n setAddDiscount(parseInt(e.target.value));\n };\n\n const chartOptions = {\n maintainAspectRatio: false,\n scales: {\n x: {\n grid: {\n display: false,\n },\n ticks: {\n color: '#005b75',\n maxTicksLimit: 12,\n },\n },\n y: {\n ticks: {\n callback: function (value, index) {\n if (index === 0) return 'Öre/kWh';\n return value;\n },\n color: '#005b75',\n padding: 15,\n },\n // suggestedMax: minMax[1],\n },\n },\n plugins: {\n legend: { display: false },\n tooltip: {\n mode: 'index',\n intersect: true,\n position: 'nearest',\n backgroundColor: '#ffffff',\n bodyColor: '#005b75',\n borderColor: '#005b75',\n borderWidth: 1,\n boxPadding: 8,\n padding: 10,\n pointStyle: 'circle',\n titleColor: '#005b75',\n titleFont: {\n size: 16,\n weight: 'bold',\n },\n usePointStyle: true,\n callbacks: {\n label: ({ dataset, formattedValue }) => {\n return `${dataset.label}: ${formattedValue} ${unit}`;\n },\n afterBody: (data) => {\n return `\\n Diff: ${((Math.abs(data[0].raw - data[1].raw) * 100) / 100).toFixed(2)} Öre/kWh`;\n },\n },\n },\n },\n };\n\n return (\n mounted && (\n <div className={styles['ProductDiagram']}>\n {chartData ? (\n <div className={styles['ProductDiagram__Container']}>\n {!!title && (\n <h2 className={styles['ProductDiagram__Title']}>\n {title}\n </h2>\n )}\n <div className={styles['ProductDiagram__Filters']}>\n <span\n className={[\n styles['ProductDiagram__Buttons'],\n styles[\n 'ProductDiagram__Buttons--AlignLeft'\n ],\n ].join(' ')}>\n <button\n className={classNames(\n styles['ProductDiagram__Button'],\n {\n [styles[\n 'ProductDiagram__Button--Active'\n ]]: displayYears === 2,\n }\n )}\n onClick={() => setDisplayYears(2)}>\n 2 {t('ProductDiagram.years')}\n </button>\n <button\n className={classNames(\n styles['ProductDiagram__Button'],\n {\n [styles[\n 'ProductDiagram__Button--Active'\n ]]: displayYears === 6,\n }\n )}\n onClick={() => setDisplayYears(6)}>\n 6 {t('ProductDiagram.years')}\n </button>\n </span>\n <span\n className={\n styles['ProductDiagram__FiltersRight']\n }>\n {hasDiscount && (\n <>\n <span\n className={classNames([\n styles[\n 'ProductDiagram__Buttons'\n ],\n styles[\n 'ProductDiagram__Buttons--NoMobile'\n ],\n ])}>\n <button\n className={classNames(\n styles[\n 'ProductDiagram__Button'\n ],\n {\n [styles[\n 'ProductDiagram__Button--Active'\n ]]: addDiscount,\n }\n )}\n onClick={() =>\n setAddDiscount(true)\n }>\n {t(\n 'ProductDiagram.withDiscount'\n )}\n </button>\n <button\n className={classNames(\n styles[\n 'ProductDiagram__Button'\n ],\n {\n [styles[\n 'ProductDiagram__Button--Active'\n ]]: !addDiscount,\n }\n )}\n onClick={() =>\n setAddDiscount(false)\n }>\n {t(\n 'ProductDiagram.withoutDiscount'\n )}\n </button>\n </span>\n <span\n className={classNames([\n styles[\n 'ProductDiagram__Buttons'\n ],\n styles[\n 'ProductDiagram__Buttons--NoDesktop'\n ],\n ])}>\n <label className={styles['ProductDiagram__SelectLabel']} htmlFor=\"discount\">\n {t('ProductDiagram.chooseDiscount')}\n </label>\n <select\n id=\"discount\"\n className={\n styles[\n 'ProductDiagram__Select'\n ]\n }\n onChange={(e) =>\n handleSetDiscount(e)\n }>\n <option\n key=\"discount_0\"\n value={0}>\n {t(\n 'ProductDiagram.withoutDiscount'\n )}\n </option>\n <option\n key=\"discount_1\"\n value={1}>\n {t(\n 'ProductDiagram.withDiscount'\n )}\n </option>\n </select>\n </span>\n </>\n )}\n <span\n className={\n styles['ProductDiagram__Buttons']\n }>\n <label className={styles['ProductDiagram__SelectLabel']} htmlFor=\"area\">\n {t('ProductDiagram.chooseArea')}\n </label>\n <select\n className={\n styles['ProductDiagram__Select']\n }\n id=\"area\"\n onChange={(e) => handleSetSheet(e)}>\n {sheets.map((item, index) => (\n <option key={index} value={index}>\n {item.file.title}\n </option>\n ))}\n </select>\n </span>\n <span\n className={classNames([\n styles['ProductDiagram__Buttons'],\n styles[\n 'ProductDiagram__Buttons--NoMobile'\n ],\n ])}>\n <a\n className={\n styles['ProductDiagram__Download']\n }\n href={\n downloadSheet\n ? downloadSheet\n : sheet\n }\n download>\n <span className=\"sr-only\">\n {t('ProductDiagram.download')}\n </span>\n </a>\n </span>\n </span>\n </div>\n <div className={styles['ProductDiagram__Chart']}>\n <Line options={chartOptions} data={chartData} />\n </div>\n <span className={styles['ProductDiagram__Legend']}>\n {chartData.datasets.map((item, index) => (\n <span\n role=\"button\"\n className={classNames(\n styles['ProductDiagram__LegendButton'],\n {\n [styles[\n 'ProductDiagram__LegendButton--Dark'\n ]]: index === 0,\n [styles[\n 'ProductDiagram__LegendButton--Active'\n ]]: activeDatasets[index],\n }\n )}\n key={index}\n onClick={() => handleLegendClick(index)}\n style={{ '--color': palette[index] }}>\n <span\n className={\n styles[\n 'ProductDiagram__LegendButtonCheck'\n ]\n }>\n <Check />\n </span>\n {item.label}\n </span>\n ))}\n </span>\n <p className={styles['ProductDiagram__Note']}>{note}</p>\n </div>\n ) : (\n <div>Loading...</div>\n )}\n </div>\n )\n );\n};\n\nProductDiagram.propTypes = {\n title: PropTypes.string,\n sheets: PropTypes.array,\n};\n\nexport default ProductDiagram;\n","import ProductDiagram from './ProductDiagram';\n\nexport default ProductDiagram;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ProductDiagram\":\"ProductDiagram_ProductDiagram__1tWYu\",\"ProductDiagram__Title\":\"ProductDiagram_ProductDiagram__Title__3vAcE\",\"ProductDiagram__Container\":\"ProductDiagram_ProductDiagram__Container__jrNnR\",\"ProductDiagram__Filters\":\"ProductDiagram_ProductDiagram__Filters__tT7tJ\",\"ProductDiagram__FiltersRight\":\"ProductDiagram_ProductDiagram__FiltersRight__NYupX\",\"ProductDiagram__Buttons\":\"ProductDiagram_ProductDiagram__Buttons__HcYCD\",\"ProductDiagram__Buttons--AlignLeft\":\"ProductDiagram_ProductDiagram__Buttons--AlignLeft__9DZzE\",\"ProductDiagram__Buttons--NoMobile\":\"ProductDiagram_ProductDiagram__Buttons--NoMobile___LoUC\",\"ProductDiagram__Buttons--NoDesktop\":\"ProductDiagram_ProductDiagram__Buttons--NoDesktop__3Vv3j\",\"ProductDiagram__Button\":\"ProductDiagram_ProductDiagram__Button__u3xh3\",\"ProductDiagram__Button--Active\":\"ProductDiagram_ProductDiagram__Button--Active__PTTDa\",\"ProductDiagram__SelectLabel\":\"ProductDiagram_ProductDiagram__SelectLabel__9UDQY\",\"ProductDiagram__Select\":\"ProductDiagram_ProductDiagram__Select__bgj4N\",\"ProductDiagram__Download\":\"ProductDiagram_ProductDiagram__Download___dt6F\",\"ProductDiagram__Legend\":\"ProductDiagram_ProductDiagram__Legend__iRbU6\",\"ProductDiagram__LegendButton\":\"ProductDiagram_ProductDiagram__LegendButton__g4kdh\",\"ProductDiagram__LegendButton--Active\":\"ProductDiagram_ProductDiagram__LegendButton--Active__s800N\",\"ProductDiagram__LegendButton--Dark\":\"ProductDiagram_ProductDiagram__LegendButton--Dark__ka3xO\",\"ProductDiagram__LegendButtonCheck\":\"ProductDiagram_ProductDiagram__LegendButtonCheck__xcyMU\",\"ProductDiagram__Chart\":\"ProductDiagram_ProductDiagram__Chart__lJ5Wa\",\"ProductDiagram__Note\":\"ProductDiagram_ProductDiagram__Note__U1_xU\"};"],"names":["_path","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","legend_check","props","react","createElement","xmlns","width","height","fill","stroke","strokeLinecap","strokeLinejoin","strokeWidth","d","ProductDiagram","title","sheets","note","param","defaults","font","family","useTranslation","palette","chartData","setChartData","useState","labels","datasets","mounted","setMounted","sheet","setSheet","file","url","downloadSheet","setDownloadSheet","downloadFile","displayYears","setDisplayYears","addDiscount","setAddDiscount","hasDiscount","setHasDiscount","minMax","setMinMax","activeDatasets","setActiveDatasets","windowWidth","setWindowWidth","window","innerWidth","useEffect","getChartData","addEventListener","handleResize","removeEventListener","debounce","handleLegendClick","updatedActiveDatasets","prevActiveDatasets","datasetIndex","updateMinMax","currentMinValue","currentMaxValue","prevMinMax","Math","min","values","max","Papa","download","header","skipEmptyLines","complete","dataByYear","result","data","reduce","acc","item","year","Year","push","keys","firstKey","lastDisplayYears","fromEntries","entries","slice","months","discount","map","yearData","forEach","label","Boolean","Discount","emptyPos","key","valuesArray","findIndex","value","finalValues","parseFloat","index","availableYearsLength","averagePerYear","average","sum","toFixed","backgroundColor","replace","borderColor","borderRadius","maxBarThickness","pointHoverRadius","pointRadius","dimmed","handleSetSheet","target","handleSetDiscount","parseInt","jsx_runtime","jsx","div","className","styles","jsxs","h2","span","join","button","classNames","onClick","Fragment","htmlFor","select","id","onChange","option","a","href","Line","options","maintainAspectRatio","scales","x","grid","display","ticks","color","maxTicksLimit","y","callback","padding","plugins","legend","tooltip","mode","intersect","position","bodyColor","borderWidth","boxPadding","pointStyle","titleColor","titleFont","size","weight","usePointStyle","callbacks","dataset","formattedValue","afterBody","abs","raw","role","style","Check","p","propTypes","PropTypes","components_ProductDiagram","module","exports"],"sourceRoot":""}