{"version":3,"sources":["components/dashboard/Dashboard.types.ts","colors.ts","components/dashboard/Dashboard.style.ts","components/chart/Chart.style.ts","util/format-utils.ts","img/stenlager_ny_e.svg","components/chart/Chart.tsx","img/Power-to-X.svg","api/EnergiDataApi.tsx","components/loadingIndicator/LoadingIndicator.style.ts","components/loadingIndicator/LoadingIndicator.tsx","components/consumptionSliders/ConsumptionSliders.style.ts","img/Varmeforsyning.svg","img/Transport.svg","components/consumptionSliders/ConsumptionSliders.types.ts","components/consumptionSliders/ConsumptionSliders.tsx","img/solceller_ny_e.svg","components/dashboard/util.ts","img/ai_logo.png","components/dashboard/infoDialog/InfoDialog.style.ts","components/dashboard/infoDialog/InfoDialog.tsx","img/reel_logo.png","components/productionSliders/ProductionSliders.style.ts","img/windmill_ny_e.svg","components/productionSliders/ProductionSliders.tsx","components/productionSurplusWithSufficiency/ProductionSurplusWithSufficiency.style.tsx","components/productionSurplus/ProductionSurplus.style.tsx","components/productionSurplus/ProductionSurplus.tsx","components/productionSurplusWithSufficiency/ProductionSurplusWithSufficiency.tsx","components/dashboard/Dashboard.tsx","components/startPage/energisystem.png","components/startPage/ressourcesystem.png","components/startPage/StartPage.style.ts","components/startPage/StartPage.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["BundleMode","DateMode","Texts","colors","titleSize","titleWeight","styles","main","display","width","height","minHeight","minWidth","left","flex","background","flexDirection","leftTop","fontWeight","color","leftUpper","justifyContent","leftLower","infoHeader","alignItems","leftBottom","padding","sliderGroups","verticalSlidersContainer","verticalSlider","marginRight","sliderIcon","verticalSliderHeader","fontSize","textAlign","verticalSliderGroup","horizontalSliderHeader","paddingLeft","horizontalSliderGroup","marginBottom","margin","horizontalSlider","horizontalSlidersContainer","marginLeft","infoButtons","marginTop","paddingBottom","infoButtonsContainer","infoButtonsTitle","map","hand","resetButton","paddingRight","backgroundColor","boxShadow","right","rightMiddle","alignContent","rightLower","chartTitle","chartSubTitle","dateSliderContainer","dateTitle","dialog","dialogLeft","dialogRight","dialogRightTop","dialogImage","maxWidth","dialogCloseButton","position","top","zIndex","infoAndReset","loading","noDataBox","loadingLabel","chartYLabel","_defs","_g","valueWithDecimalsAndLocale","value","decimals","arguments","length","undefined","locale","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","format","CustomTooltip","_ref","active","payload","label","mode","extraConsumptionMwh","sun","parseFloat","sunExtra","windExtra","wind","stoneStorage","productionTotal","consumptionWithExtra","consumption","surplus","surplusStyle","surplusComponent","_jsx","style","children","isNaN","toString","toFixed","replace","_jsxs","borderRadius","DAY","concat","padStart","Chart","_ref2","dateMode","extraSun","extraWind","currentConsumptionData","currentProductionData","isBigScreen","areas","dot","fill","key","opacity","stackIndex","stroke","values","d","solar","combinedWind","_Fragment","MultiAreaChart","legend","show","tooltip","trigger","customTooltip","data","xAxis","timeLabel","timeUnit","parseInt","MONTH","YEAR","getXAxisLabel","yAxis","min","max","getYMax","lines","legendDisplayZeroValues","_excluded","_extends","Object","assign","target","i","source","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgStenlagerNyE","svgRef","title","titleId","props","xmlns","viewBox","id","ref","transform","className","x","y","rx","ry","_g2","_g3","ForwardRef","getProductionData","_asyncToGenerator","_regeneratorRuntime","mark","_callee","startDate","response","wrap","_context","prev","next","fetch","sent","json","abrupt","records","stop","_x","getConsumptionData","_callee2","_context2","_x2","loadingContainer","paddingTop","loadingItem","loadingText","LoadingIndicator","_ref$padding","loadingTexts","text","_objectSpread","CircularProgress","size","slidersContainer","slider","SvgPowerToX","points","_line","_line2","SvgVarmeforsyning","x1","y1","x2","y2","_path","_path2","_path3","_path4","SvgTransport","Forecast","FORECASTS","powerToX","Map","start","mid","end","heatSupply","transport","miscellaneous","ConsumptionSliders","onHeatSupplyChanged","onTransportChanged","onPowerToXChanged","onMiscellaneousChanged","forecast","_ref$isBigScreen","_ref$steps","steps","_useState","useState","_useState2","_slicedToArray","heatSupplyValue","setHeatSupplyValue","_useState3","_useState4","transportValue","setTransportValue","_useState5","_useState6","powerToXValue","setPowerToXValue","_useState7","stepSize","_useState8","heatSupplyConf","setHeatSupplyConf","_useState9","_useState10","transportConf","setTransportConf","_useState11","_useState12","powerToXConf","setPowerToXConf","valueDisplay","valueFormatter","val","horizontalModePos","HorizontalModeValuePosition","periodValueFromTotalValue","useCallback","useEffect","_periodValueFromTotal","_periodValueFromTotal2","_periodValueFromTotal3","powerToXPeriodValue","get","Math","round","ceil","transportPeriodValue","IconSlider","valueWidth","valueInterval","LabelPosition","bottom","orientation","SliderOrientation","vertical","horizontal","icon","PowerToX","onChange","event","HeatSupply","Transport","bundleRawData","selectedDate","bundleMode","dateFilter","getTimeUnit","HOURS","date","Date","HourDK","getFullYear","year","getMonth","month","getDate","day","getHours","DAYS","MONTHS","YEARS","bundles","filter","reverse","reduce","current","push","rawDataPoints","Number","rawProductionsToDataPoint","offshoreWind","n","OffshoreWindGe100MW_MWh","OffshoreWindLt100MW_MWh","onshoreWind","_ref3","OnshoreWindMWh","_ref4","SolarMWh","thermalPower","_ref5","ThermalPowerMWh","rawConsumptionsToDataPoint","_ref6","ConsumptionkWh","sumRawBundlesToDataPoints","sumFunc","rawDataBundles","timeUnitOffset","fillMissingDataPoints","dataBundle","rdb","fillMissingTimes","dataPoints","toReturn","index","dp","getDateMode","isDay","isMonth","isYear","UNKNOWN","selectedDateToBundleMode","calculateStoneStorageValue","numberOfFacilities","logo","maxHeight","logos","float","closeButton","InfoDialog","open","onClose","tabValue","setTabValue","tutorial","textsDa","tutorialExploreTitle","body","tutorialExploreBody","tutorialAdjustTitle","tutorialAdjustBody","tutorialMapTitle","tutorialMapBody","tutorialMobileTitle","tutorialMobileBody","Dialog","IconButton","onClick","CloseIcon","TabContext","TabList","newValue","Tab","TabPanel","introduction","src","logoAI","alt","t","SvgSolcellerNyE","SvgWindmillNyE","cx","cy","r","ProductionSliders","onWindValueChanged","onSunValueChanged","windValue","setWindValue","sunValue","setSunValue","sunConf","setSunConf","windConf","setWindConf","windPeriodValue","sunPeriodValue","SolarUnit","WindFarm","textColor","percentageColor","totalValue","ProductionSurplus","_valueWithDecimalsAnd","production","_ref$unit","unit","_ref$decimals","ProductionSurplusWithSufficiency","periodName","productionSurplus","selfSufficiency","getHoursInPeriod","period","currentDate","toDate","getTime","abs","_selfSufficiency$sele","percentageComponent","selfSufficciencyHours","Dashboard","_yearlyProduction$sol","_yearlyProduction$com","_yearlyConsumption$co","backLink","useMediaQuery","dialogOpen","setDialogOpen","dialogData","setDialogData","infoDialogOpen","setInfoDialogOpen","setStoneStorage","setExtraSun","setExtraWind","initialDate","today","twoMonthsAgo","sub","months","getInitialDate","_useState13","_useState14","extraHeatSupplyConsumption","setExtraHeatSupplyConsumption","_useState15","_useState16","extraTransportConsumption","setExtraTransportConsumption","_useState17","_useState18","extraPowerToXConsumption","setExtraPowerToXConsumption","_useState19","_useState20","extraMiscellaneousConsumption","setExtraMiscellaneousConsumption","_useState21","_useState22","rawProductionData","setRawProductionData","_useState23","_useState24","rawConsumptionData","setRawConsumptionData","_useState25","_useState26","setCurrentConsumptionData","_useState27","_useState28","setCurrentProductionData","_useState29","_useState30","isLoadingConsumptionData","setIsLoadingConsumptionData","_useState31","_useState32","isLoadingProductionData","setIsLoadingProductionData","_useState33","_useState34","yearlyProduction","setYearlyProduction","_useState35","_useState36","yearlyConsumption","setYearlyConsumption","_useState37","_useState38","datePeriod","setDatePeriod","_useState39","_useState40","dateHasImport","setDateHasImport","_useState41","_useState42","dateHasOffshoreWind","setDateHasOffshoreWind","_useState43","importImportWindMap","_useState44","lollandMap","setLollandMap","_useState45","_useState46","setSelectedDate","_useState47","_useState48","selfSufficientHoursYearly","setSelfSufficientHoursYearly","hasData","isLoadingData","updateDate","useLottie","animationData","loop","autoplay","View","getExtraProductionMW","useMemo","getExtraConsumptionMW","exportImportWindMap","importNoWindMap","exportNoWindMap","dateFilterFunc","accumulatedConsumptions","deepCopyConEle","HourUTC","MunicipalityNo","Branche","accumulatedConEle","localeCompare","selfSufficiencyHours","conEle","prodInd","k","ele","splice","p","_p$OffshoreWindGe100M","_p$OffshoreWindLt100M","_p$OnshoreWindMWh","_p$SolarMWh","_p$ThermalPowerMWh","countSelfSufficientHours","productionData","find","consumptionData","curr","_curr$offshoreWind","stoneStorageMW","extraConsumptionMW","extraProductionMW","_curr$solar","_curr$combinedWind","_curr$consumption","calculateTotal","getSliderInfoTexts","CONSUMPTION","PRODUCTION","STORAGE","storage","getSliderHeader","headerText","infoSections","sections","Info","_getQuickFetchDate","fullDate","quickDate","getQuickFetchDate","then","finally","catch","err","console","error","productionJson","result","consumptionJson","productionSliders","consumptionSliders","Box","mr","Help","MUIButton","window","location","href","variant","startIcon","ArrowBackIcon","reload","StoneStorage","SlidingDateSelector","compact","labelColor","maxYear","minYear","onDateUpdated","primaryButtonColor","primaryButtonSelectedColor","secondaryButtonColor","disableTodaySelection","img","pt","pl","pr","mb","content","container","inner","buttonContainer","link","linkImg","StartPage","energySystemUrl","returnUrl","sx","ButtonBase","Link","LinkEnergy","LinkResource","theme","createTheme","palette","primary","App","startPage","URLSearchParams","search","startPageLink","origin","pathname","useIdleTimer","timeout","onIdle","ThemeProvider","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","React","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.93e3d041.chunk.js","sourcesContent":["import { RawDataPointConsumption, RawDataPointProduction } from \"../../api/EnergiDataApi\"\nimport { ReactNode } from \"react\"\n//TODO: Fetch SelectedDate type from dataviz-lib\nexport interface SelectedDate {\n day?: number\n month?: number\n year: number\n}\n \nexport interface RawDataBundle {\n timeUnit: string,\n rawDataPoints: (RawDataPointConsumption | RawDataPointProduction)[]\n}\n\nexport enum BundleMode {\n HOURS = \"hours\",\n DAYS = \"days\",\n MONTHS = \"months\",\n YEARS = \"years\"\n}\n\nexport enum DateMode {\n DAY,\n MONTH,\n YEAR,\n UNKNOWN\n}\nexport interface DialogData {\n title: string,\n sections: {title: string, body: string}[],\n content?: ReactNode\n img?: ReactNode\n}\n \nexport enum Texts {\n PRODUCTION,\n STORAGE,\n CONSUMPTION\n}","export const colors = {\n lightGreen: '#8FC1B5',\n darkGreen: '#146552',\n darkGrey: '#2d2d2d'\n}","\nimport { colors } from '../../colors'\nimport { createStyles } from '../../styles'\n\nconst titleSize = '22px'\nconst titleWeight = 500\n\nexport const styles = createStyles({\n main: {\n display: 'flex',\n width: '100%',\n height: '100vh',\n minHeight: '800px',\n minWidth: '360px'\n },\n\n //LEFT\n left: {\n display: 'flex',\n flex: 1, \n background: 'rgb(210, 210, 210)',\n flexDirection: 'column'\n },\n leftTop: {\n fontWeight: 700,\n color: colors.darkGrey,\n },\n leftUpper: {\n display: 'flex',\n justifyContent: 'center',\n flex: 1,\n minHeight: '0'\n },\n leftLower: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center'\n },\n infoHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n leftBottom: {\n padding: '8px',\n display: 'flex',\n alignItems: 'center'\n },\n sliderGroups: {\n justifyContent: 'space-evenly',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n },\n verticalSlidersContainer: {\n height: '100%',\n display: 'flex',\n padding: '8px'\n },\n verticalSlider: {\n marginRight: \"15px\",\n },\n sliderIcon: {\n height: '35px',\n width: 'auto'\n },\n verticalSliderHeader: {\n fontSize: titleSize,\n fontWeight: titleWeight,\n textAlign: 'center',\n },\n verticalSliderGroup: {\n height: '290px',\n display: 'flex',\n flexDirection: 'column',\n },\n horizontalSliderHeader: {\n paddingLeft: '36px',\n fontWeight: 'bold'\n },\n horizontalSliderGroup: {\n marginBottom: '40px',\n margin: '8px'\n },\n horizontalSlider: {\n marginBottom: '10px',\n },\n horizontalSlidersContainer: {\n marginLeft: \"20px\", \n marginRight: \"20px\", \n marginBottom: \"10px\"\n },\n infoButtons: {\n textAlign: 'center',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: 'auto',\n paddingBottom: '32px'\n },\n infoButtonsContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n width: '400px',\n },\n infoButtonsTitle: {\n fontSize: titleSize,\n fontWeight: titleWeight,\n marginBottom: '16px',\n color: colors.darkGrey\n },\n map: {\n height: '100%',\n width: '100%'\n },\n hand: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n },\n resetButton: {\n paddingLeft: '10px',\n paddingRight: '10px',\n marginRight: '15px',\n backgroundColor: 'rgb(176 130 17)',\n boxShadow: 'none',\n color: 'white'\n },\n\n //RIGHT\n right: {\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n background: 'white',\n },\n rightMiddle: {\n display: 'flex',\n justifyContent: 'start',\n alignContent: 'space-between'\n },\n rightLower: {\n display: 'flex',\n justifyContent: 'center',\n flexDirection: 'column'\n },\n chartTitle: {\n fontSize: titleSize,\n fontWeight: titleWeight,\n color: colors.darkGrey\n },\n chartSubTitle: {\n color: colors.darkGrey\n },\n dateSliderContainer : {\n width: '100%'\n },\n dateTitle: {\n fontSize: titleSize,\n marginBottom: '16px',\n fontWeight: titleWeight,\n color: colors.darkGrey\n },\n\n //OTHER\n dialog: {\n display: 'flex',\n },\n dialogLeft: {\n flex: 1\n },\n dialogRight: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n },\n dialogRightTop: {\n fontSize: '24px',\n fontWeight: 500\n },\n dialogImage: {\n maxWidth: '800px'\n },\n dialogCloseButton: {\n position: 'absolute',\n right: '4px',\n top: '4px',\n zIndex: 1000\n },\n infoAndReset: {\n display: 'flex',\n padding: '8px'\n },\n loading: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '128px 32px 32px 32px',\n color: '#777'\n },\n noDataBox: {\n display: 'flex',\n width: '100%',\n height: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n color: '#777',\n fontSize: '14px',\n fontWeight: 600\n },\n loadingLabel: {\n paddingLeft: '16px'\n }\n})","\nimport { createStyles } from '../../styles'\n\nexport const styles = createStyles({\n chartYLabel: {\n color: '#444',\n paddingLeft: '32px',\n marginTop: '14px',\n position: 'absolute',\n marginLeft: '32px'\n }\n})\n","export const valueWithDecimalsAndLocale = (value: number, decimals: number = 0, locale: string = 'da-DK') => {\n return new Intl.NumberFormat(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals\n }).format(value)\n}","var _defs, _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgStenlagerNyE(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24.344313mm\",\n height: \"20.162573mm\",\n viewBox: \"0 0 24.344313 20.162573\",\n id: \"svg8\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", {\n id: \"defs2\"\n }, /*#__PURE__*/React.createElement(\"style\", {\n id: \"style833\"\n }, \".cls-stenlager-1{fill:#589a8d;}.cls-stenlager-2{fill:#8fc1b5;}\"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"layer1\",\n transform: \"translate(-23.735586,-4.6597866)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g855\",\n transform: \"matrix(0.26458333,0,0,0.26458333,-101.11335,-36.61389)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-stenlager-1\",\n d: \"m 521.7,157.09 c -2.36,-1.46 -5.31,-1.46 -7.66,0 l -42.17,26.07 v 49.04 h 12.34 v -41.91 c 0,-0.67 0.54,-1.21 1.21,-1.21 h 66.66 c 0.67,0 1.21,0.54 1.21,1.21 v 41.91 h 10.59 v -49.04 l -42.17,-26.07 z\",\n id: \"path837\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-stenlager-2\",\n x: 489,\n y: 193.55,\n width: 60,\n height: 9.8699999,\n rx: 0.34,\n ry: 0.34,\n id: \"rect839\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-stenlager-2\",\n x: 489,\n y: 221.14999,\n width: 60,\n height: 9.8699999,\n rx: 0.34,\n ry: 0.34,\n id: \"rect841\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-stenlager-2\",\n x: 489,\n y: 207.35001,\n width: 60,\n height: 9.8699999,\n rx: 0.34,\n ry: 0.34,\n id: \"rect843\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgStenlagerNyE);\nexport default __webpack_public_path__ + \"static/media/stenlager_ny_e.87924a51.svg\";\nexport { ForwardRef as ReactComponent };","import { MultiAreaChart } from 'dataviz-lib'\nimport { styles } from './Chart.style'\nimport { ChartProps} from './Chart.types'\nimport { DateMode } from '../dashboard/Dashboard.types'\nimport { valueWithDecimalsAndLocale } from '../../util/format-utils'\n\nconst CustomTooltip = ({ active, payload, label, mode, extraConsumptionMwh}: any) => {\n if (active && payload && payload.length) {\n const sun = parseFloat(payload[0].payload['sun'])\n const sunExtra = parseFloat(payload[0].payload['sunExtra'])\n const windExtra = parseFloat(payload[0].payload['windExtra'])\n const wind = parseFloat(payload[0].payload['wind'])\n const stoneStorage = payload[0].payload['stoneStorage'] !== undefined ? parseFloat(payload[0].payload['stoneStorage']) : 0\n const productionTotal = sun + wind + stoneStorage + sunExtra + windExtra\n const consumptionWithExtra = parseFloat(payload[0].payload['consumption'])\n const consumption = consumptionWithExtra - extraConsumptionMwh\n const surplus = productionTotal - consumptionWithExtra\n const surplusStyle = surplus < 0 ? {color: 'red'} : {color: 'green'}\n const surplusComponent = {isNaN(surplus) ? '-' : parseFloat(surplus.toString()).toFixed(2).replace('.', ',')}\n return (\n
\n {mode !== DateMode.DAY ? label : `${(label-1).toString().padStart(2, '0')}:00 - ${label.padStart(2, '0')}:00`}\n
\n Enhed: MWh\n
\n {`Sol: ${isNaN(sun) ? '-' : valueWithDecimalsAndLocale(sun as number, 2)}`}\n
\n {`Sol tilføjet: ${isNaN(sunExtra) ? '-' : valueWithDecimalsAndLocale(sunExtra as number, 2)}`}\n
\n {`Vind: ${isNaN(wind) ? '-' : valueWithDecimalsAndLocale(wind as number, 2)}`}\n
\n {`Vind tilføjet: ${isNaN(windExtra) ? '-' : valueWithDecimalsAndLocale(windExtra as number, 2)}`}\n
\n {`Stenlager tilføjet: ${valueWithDecimalsAndLocale(stoneStorage as number, 2)}`}\n
\n {`Total produktion: ${isNaN(productionTotal) ? '-' : valueWithDecimalsAndLocale(productionTotal as number, 2)}`}\n
\n {`Forbrug: ${isNaN(consumption) ? '-' : valueWithDecimalsAndLocale(consumption as number, 2)}`}\n
\n {`Forbrug tilføjet: ${isNaN(extraConsumptionMwh) ? '-' : valueWithDecimalsAndLocale(extraConsumptionMwh as number, 2)}`}\n
\n {`Totalt forbrug: ${isNaN(consumptionWithExtra) ? '-' : valueWithDecimalsAndLocale(consumptionWithExtra as number, 2)}`}\n
\n {surplus < 0 ? 'Underskud:' : 'Overskud:'} {surplusComponent}\n
\n )\n }\n return null\n}\n\nexport const Chart = ({ dateMode, stoneStorage, extraSun, extraWind, currentConsumptionData, currentProductionData, extraConsumptionMwh, isBigScreen }: ChartProps) => {\n const colors = {\n deficit: '#c20327',\n sun: '#ffd22c',\n wind: '#48adbf',\n consumption: '#444',\n stone: '#777',\n sunExtra: '#dbac11',\n windExtra: '#258195'\n }\n \n const getYMax = () => {\n switch(dateMode) {\n case DateMode.DAY:\n return 1000\n case DateMode.MONTH:\n return 22000\n case DateMode.YEAR:\n return 480000\n default:\n return 0\n }\n }\n\n const areas = [\n {\n dot: false,\n fill: colors.deficit,\n key: 'consumption',\n label: 'Underskud',\n opacity: 0.5,\n stackIndex: 3,\n stroke: 'none',\n values: currentConsumptionData.map(d => d.consumption),\n },\n {\n label: `Stenlager tilføjet`,\n key: \"stoneStorage\",\n stackIndex: 2,\n stroke: 'none',\n fill: colors.stone,\n opacity: 1,\n values: currentProductionData.map(d => stoneStorage),\n dot: false,\n },\n {\n label: `Sol`,\n key: \"sun\",\n stackIndex: 2,\n stroke: 'none',\n fill: colors.sun,\n opacity: 1,\n values: currentProductionData.map(d => d.solar),\n dot: false,\n },\n {\n label: `Sol tilføjet`,\n key: \"sunExtra\",\n stackIndex: 2,\n stroke: 'none',\n fill: colors.sunExtra,\n opacity: 1,\n values: currentProductionData.map(d => d.solar !== undefined ? extraSun : undefined),\n dot: false\n },\n {\n label: `Vind`,\n key: \"wind\",\n stackIndex: 2,\n stroke: 'none',\n fill: colors.wind,\n opacity: 1,\n values: currentProductionData.map(d => d.combinedWind),\n dot: false,\n },\n {\n label: `Vind tilføjet`,\n key: \"windExtra\",\n stackIndex: 2,\n stroke: 'none',\n fill: colors.windExtra,\n opacity: 1,\n values: currentProductionData.map(d => d.combinedWind !== undefined ? extraWind : undefined),\n dot: false,\n }\n ]\n\n const getXAxisLabel = (timeLabel: string, mode: DateMode) => {\n const timeUnit = parseInt(timeLabel)\n switch (mode) {\n case DateMode.DAY:\n return timeLabel.length < 2 ? '0' + timeLabel : timeLabel\n case DateMode.MONTH:\n return timeLabel + '.'\n case DateMode.YEAR:\n return ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'][timeUnit - 1]\n default:\n return ''\n }\n }\n\n return (\n <>\n {isBigScreen &&
MWh
}\n \n }}\n data={{\n xAxis: {\n values: currentProductionData.map(d => getXAxisLabel(d.timeLabel, dateMode))\n },\n yAxis: {\n min: 0,\n max: getYMax()\n },\n areas,\n lines: [\n {\n label: \"Forbrug\",\n key: \"consumption\",\n stroke: colors.consumption,\n width: 2,\n opacity: 1,\n values: currentConsumptionData.map(d => d.consumption !== undefined ? (d.consumption + extraConsumptionMwh) : d.consumption),\n dot: false,\n }\n ]\n }}\n legendDisplayZeroValues={false} /> \n \n )\n}\n","var _defs, _g, _g2, _g3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgPowerToX(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Lag_4\",\n \"data-name\": \"Lag 4\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 66 74\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .cls-PowerToX-1 {\\n fill: #589a8d;\\n }\\n\\n .cls-PowerToX-2 {\\n fill: #307265;\\n }\\n \"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-PowerToX-1\",\n points: \"48.95 20.22 48.95 9.02 16.44 9.02 16.44 20.22 11.2 20.22 11.2 7.05 53.92 7.05 53.92 20.22 48.95 20.22\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-PowerToX-2\",\n d: \"m53.67,7.3v12.67h-4.47v-11.21H16.19v11.21h-4.74V7.3h42.22m.5-.5H10.95v13.67h5.74v-11.21h32.01v11.21h5.47V6.8h0Z\"\n }))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-PowerToX-1\",\n d: \"m3.2,67.64V19.72h20.31v47.92H3.2Zm6.43-12.76l8.84-11.48h-3.96l2.56-7.47h-5.71l-3.15,9.58h3.03l-1.61,9.38Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-PowerToX-2\",\n d: \"m23.26,19.97v47.42H3.45V19.97h19.81m-15.4,25.79h3.08l-1.39,8.09-.34,1.99,1.23-1.6,7.91-10.28.62-.81h-4.12l2.33-6.81.23-.66h-6.24l-.11.34-2.98,9.08-.22.66m15.9-26.29H2.95v48.42h20.81V19.47h0Zm-7.05,16.71l-2.56,7.47h3.8l-7.91,10.28,1.49-8.68h-2.98l2.98-9.08h5.18Z\"\n }))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-PowerToX-1\",\n d: \"m41.92,68.23V20.31h20.31v47.92h-20.31Zm6.43-12.76l8.84-11.48h-3.96l2.56-7.47h-5.71l-3.15,9.58h3.03l-1.61,9.38Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-PowerToX-2\",\n d: \"m61.98,20.56v47.42h-19.81V20.56h19.81m-15.4,25.79h3.08l-1.39,8.09-.34,1.99,1.23-1.6,7.91-10.28.62-.81h-4.12l2.33-6.81.23-.66h-6.24l-.11.34-2.98,9.08-.22.66m15.9-26.29h-20.81v48.42h20.81V20.06h0Zm-7.05,16.71l-2.56,7.47h3.8l-7.91,10.28,1.49-8.68h-2.98l2.98-9.08h5.18Z\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPowerToX);\nexport default __webpack_public_path__ + \"static/media/Power-to-X.20932d40.svg\";\nexport { ForwardRef as ReactComponent };","export interface RawDataPointProduction {\n HourUTC: string \n HourDK: string \n MunicipalityNo: string\n SolarMWh: number | null\n OffshoreWindLt100MW_MWh: number | null\n OffshoreWindGe100MW_MWh: number | null\n OnshoreWindMWh: number | null\n ThermalPowerMWh: number | null\n}\n \nexport interface RawDataPointConsumption {\n HourUTC: string\n HourDK: string\n Branche: string\n MunicipalityNo: string\n ConsumptionkWh: number\n}\n\nexport const getProductionData = async (startDate: string): Promise => {\n const response = await fetch(`https://api.energidataservice.dk/dataset/ProductionMunicipalityHour?offset=0&start=${startDate}&filter=%7B%22MunicipalityNo%22:%22360%22%7D&sort=HourUTC%20DESC&timezone=dk`)\n return (await response.json()).records\n}\n\nexport const getConsumptionData = async (startDate: string): Promise => {\n const response = await fetch(`https://api.energidataservice.dk/dataset/ConsumptionIndustry?offset=0&start=${startDate}&filter=%7B%22MunicipalityNo%22:%22360%22%7D&sort=HourUTC%20DESC&timezone=dk`)\n return (await response.json()).records\n}","\nimport { createStyles } from \"../../styles\"\n\nexport const styles = createStyles({\n loadingContainer: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n paddingTop: '8px',\n paddingBottom: '8px'\n },\n loadingItem: {\n color: '#777',\n fontSize: '14px',\n fontWeight: 600\n },\n loadingText: {\n paddingLeft: '8px'\n }\n})","import { CircularProgress } from '@mui/material'\nimport { styles } from './LoadingIndicator.style'\n\ninterface LoadingIndicatorProps {\n padding?: string\n loadingTexts: string[]\n}\n\nexport const LoadingIndicator = ({ padding = '0 0 0 0', loadingTexts }: LoadingIndicatorProps) => {\n return (\n
\n {loadingTexts.map((text: string, i: number) =>\n
\n \n {text}\n
\n )}\n
\n )\n}\n","import { createStyles } from \"../../styles\";\n\nexport const styles = createStyles({\nslidersContainer: {\n display: 'flex',\n justifyContent: 'space-evenly',\n},\nslider: {\n margin: '8px',\n},\nsliderIcon: {\n height: '35px',\n width: 'auto'\n }\n})","var _defs, _line, _line2, _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgVarmeforsyning(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Suncells\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 66 74\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .cls-varmeforsyning-1 {\\n fill: #589a8d;\\n }\\n\\n .cls-varmeforsyning-2 {\\n fill: #307265;\\n }\\n\\n .cls-varmeforsyning-3 {\\n fill: #fff;\\n stroke: #307265;\\n stroke-miterlimit: 10;\\n stroke-width: .5px;\\n }\\n \"))), _line || (_line = /*#__PURE__*/React.createElement(\"line\", {\n className: \"cls-varmeforsyning-3\",\n x1: 44.5,\n y1: 35.82,\n x2: 55.5,\n y2: 35.82\n })), _line2 || (_line2 = /*#__PURE__*/React.createElement(\"line\", {\n className: \"cls-varmeforsyning-3\",\n x1: 44.5,\n y1: 44.86,\n x2: 55.5,\n y2: 44.86\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-varmeforsyning-1\",\n d: \"m7.03,57.75c-.98,0-1.78-.8-1.78-1.78v-31.68c0-.98.8-1.78,1.78-1.78h50.95c.98,0,1.78.8,1.78,1.78v31.68c0,.98-.8,1.78-1.78,1.78H7.03ZM23.97,25.75c-7.86,0-14.25,6.39-14.25,14.25s6.39,14.25,14.25,14.25,14.25-6.39,14.25-14.25-6.39-14.25-14.25-14.25Zm20.28,28h11.5v-26.5h-11.5v26.5Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-varmeforsyning-2\",\n d: \"m57.97,22.76c.84,0,1.53.69,1.53,1.53v31.68c0,.84-.69,1.53-1.53,1.53H7.03c-.84,0-1.53-.69-1.53-1.53v-31.68c0-.84.69-1.53,1.53-1.53h50.95m-34,31.74c8,0,14.5-6.5,14.5-14.5s-6.5-14.5-14.5-14.5-14.5,6.5-14.5,14.5,6.5,14.5,14.5,14.5m20.03-.5h12v-27h-12v27m13.97-31.74H7.03c-1.12,0-2.03.91-2.03,2.03v31.68c0,1.12.91,2.03,2.03,2.03h50.95c1.12,0,2.03-.91,2.03-2.03v-31.68c0-1.12-.91-2.03-2.03-2.03h0Zm-34,31.74c-7.73,0-14-6.27-14-14s6.27-14,14-14,14,6.27,14,14-6.27,14-14,14h0Zm20.53-.5v-26h11v26h-11Z\"\n })), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-varmeforsyning-1\",\n d: \"m30.38,47.33c-2.4,0-4.42-1.69-6.03-5.03l-.07-.15-.28.02c-.68,0-1.29-.38-1.59-1l-.11-.23-8.38,4.35c-.02-.77.09-2.62,1.34-4.03,1.12-1.26,2.88-1.9,5.24-1.9.57,0,1.18.04,1.82.11l.15.02.09-.12c.33-.48.88-.76,1.46-.76h.25v-9.52c.73.36,2.44,1.38,3.05,3.3.6,1.87.05,4.1-1.63,6.64l-.6-.33.46.78c.17.29.25.59.25.9,0,.27-.07.55-.2.81l-.11.21,8.26,4.84c-.55.37-1.82,1.07-3.34,1.07h0Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-varmeforsyning-2\",\n d: \"m24.5,29.51c.79.45,2.06,1.4,2.57,2.97.56,1.74.06,3.84-1.48,6.24l-1.09-.57v-8.64m0,8.74l.81,1.37c.15.25.22.51.22.78,0,.23-.06.47-.18.7l-.22.42.41.24,7.7,4.52c-.62.36-1.66.82-2.86.82-2.29,0-4.24-1.64-5.8-4.89l-.15-.3-.34.02s-.06,0-.1.01c-.58,0-1.11-.33-1.37-.86l-.23-.46-.45.23-7.78,4.04c.04-.86.26-2.31,1.27-3.45,1.07-1.2,2.76-1.82,5.05-1.82.56,0,1.16.04,1.79.11l.3.03.17-.24c.29-.41.76-.65,1.25-.65h.5v-.61m-.5-9.54v9.66c-.69,0-1.29.34-1.66.87-.66-.08-1.28-.11-1.85-.11-7.63,0-6.8,6.58-6.8,6.58l8.49-4.41c.33.67,1.02,1.14,1.82,1.14.05,0,.09-.01.13-.01,1.97,4.09,4.32,5.17,6.25,5.17,2.16,0,3.8-1.35,3.8-1.35l-8.38-4.92c.14-.28.23-.59.23-.92,0-.38-.11-.73-.29-1.03h0c5.44-8.01-1.75-10.66-1.75-10.66h0Z\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgVarmeforsyning);\nexport default __webpack_public_path__ + \"static/media/Varmeforsyning.ba202825.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTransport(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Suncells\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 66 74\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .cls-transport-1 {\\n fill: #8fc1b5;\\n }\\n\\n .cls-transport-2 {\\n fill: #589a8d;\\n }\\n\\n .cls-transport-3 {\\n fill: none;\\n stroke: #8fc1b5;\\n stroke-miterlimit: 10;\\n stroke-width: 4px;\\n }\\n \"))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-transport-2\",\n d: \"m13.11,52.37s10-2.22,17.77,1.11c7.78,3.33,7.22,6.11,19.44,4.44,0,0,7.22-19.44,7.22-23.88l-24.45-5.04-24.42,5.04s1.67,12.77,4.44,18.33Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-transport-1\",\n d: \"m46.71,15.44s-.16-1.57-2.02-1.34l-23.62-.02s-1.57-.3-2.13,1.92l-2.78,13.33s16.63-3.17,16.92-2.97c.29.2,16.4,2.97,16.4,2.97l-2.78-13.88Zm-15.07,7.29h-10.57l.65-5.62h9.92v5.62Zm2.37,0v-5.62h9.62l1.05,5.62h-10.67Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-transport-3\",\n d: \"m7,60.15s12.18-8.33,25.53,0c13.35,8.33,24,.83,24,.83\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-transport-2\",\n d: \"m32.14,6h1.37c.85,0,1.54.69,1.54,1.54v4.02h-4.44v-4.01c0-.85.69-1.54,1.54-1.54Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTransport);\nexport default __webpack_public_path__ + \"static/media/Transport.0651ba53.svg\";\nexport { ForwardRef as ReactComponent };","import { DateMode } from \"../dashboard/Dashboard.types\"\n\n\nexport interface ConsumptionSlidersProps {\n onHeatSupplyChanged: (value: number) => void\n onTransportChanged: (value: number) => void\n onPowerToXChanged: (value: number) => void\n onMiscellaneousChanged: (value: number) => void\n dateMode: DateMode,\n forecast: Forecast,\n steps?: number,\n isBigScreen?: boolean\n}\n \nexport interface SliderConf {\n max: number,\n stepSize: number\n}\n\nexport enum Forecast {\n start = \"start\",\n mid = \"mid\",\n end = \"end\"\n}","import { styles } from \"./ConsumptionSliders.style\"\nimport { ReactComponent as PowerToX } from './../../img/Power-to-X.svg'\nimport { ReactComponent as HeatSupply } from './../../img/Varmeforsyning.svg'\nimport { ReactComponent as Transport } from './../../img/Transport.svg'\nimport { useCallback, useEffect, useState } from \"react\"\nimport { HorizontalModeValuePosition, IconSlider, LabelPosition, SliderOrientation } from \"dataviz-lib\"\nimport { Forecast, ConsumptionSlidersProps, SliderConf } from \"./ConsumptionSliders.types\"\nimport { DateMode } from \"../dashboard/Dashboard.types\"\nimport { valueWithDecimalsAndLocale } from \"../../util/format-utils\"\n\n//MWh - fra Sweco analysen\nconst FORECASTS = {\n powerToX: new Map([[Forecast.start, 1925000], [Forecast.mid, 3093750], [Forecast.end, 4262500]]),\n heatSupply: new Map([[Forecast.start, 38220], [Forecast.mid, 52159], [Forecast.end, 61498]]),\n transport: new Map([[Forecast.start, 23341], [Forecast.mid, 42620], [Forecast.end, 66242]]),\n miscellaneous: new Map([[Forecast.start, 54345], [Forecast.mid, 128705], [Forecast.end, 250155]])\n}\n\nexport const ConsumptionSliders = ({onHeatSupplyChanged, onTransportChanged, onPowerToXChanged, onMiscellaneousChanged, dateMode, forecast, isBigScreen = true, steps = 10}: ConsumptionSlidersProps) => {\n const [heatSupplyValue, setHeatSupplyValue] = useState(0)\n const [transportValue, setTransportValue] = useState(0)\n const [powerToXValue, setPowerToXValue] = useState(0)\n // const [miscellaneousValue, setMiscellaneousValue] = useState(0)\n\n const [heatSupplyConf, setHeatSupplyConf] = useState({max: 0, stepSize: 0})\n const [transportConf, setTransportConf] = useState({max: 0, stepSize: 0})\n const [powerToXConf, setPowerToXConf] = useState({max: 0, stepSize: 0})\n // const [miscellaneousConf, setMiscellaneousConf] = useState({max: 0, stepSize: 0})\n\n const valueDisplay = {\n valueFormatter: (val: number | number[]) => '+' + valueWithDecimalsAndLocale(val as number, 0) + ' MWh',\n horizontalModePos: isBigScreen ? HorizontalModeValuePosition.end : HorizontalModeValuePosition.label\n }\n\n const periodValueFromTotalValue = useCallback((value: number): number | undefined => {\n switch(dateMode) {\n case DateMode.DAY:\n return value/8760;\n case DateMode.MONTH:\n return value/365\n case DateMode.YEAR:\n return value/12\n default:\n return undefined\n }\n }, [dateMode])\n\n useEffect(() => {\n const powerToXPeriodValue = (periodValueFromTotalValue(FORECASTS.powerToX.get(forecast) as number) ?? 0)\n setPowerToXConf({max: Math.round(powerToXPeriodValue), stepSize: Math.ceil(powerToXPeriodValue/steps)})\n setPowerToXValue(0)\n\n const heatSupplyValue = (periodValueFromTotalValue(FORECASTS.heatSupply.get(forecast) as number) ?? 0)\n setHeatSupplyConf({max: Math.round(heatSupplyValue), stepSize: Math.ceil(heatSupplyValue/steps)})\n setHeatSupplyValue(0)\n\n const transportPeriodValue = (periodValueFromTotalValue(FORECASTS.transport.get(forecast) as number) ?? 0)\n setTransportConf({max: Math.round(transportPeriodValue), stepSize: Math.ceil(transportPeriodValue/steps)})\n setTransportValue(0)\n\n // This should be broken up into the specific sub catagories\n // const miscellaneousPeriodValue = (periodValueFromTotalValue(FORECASTS.miscellaneous.get(forecast) as number) ?? 0)\n // setMiscellaneousConf({max: Math.round(miscellaneousPeriodValue), stepSize: Math.ceil(miscellaneousPeriodValue/steps)})\n // setHeatSupplyValue(0)\n \n }, [dateMode, periodValueFromTotalValue, forecast, steps])\n\n return (\n
\n
\n : undefined}\n onChange={(event, value) => {\n setPowerToXValue(value as number)\n onPowerToXChanged(value as number)\n }} />\n
\n
\n : undefined}\n onChange={(event, value) => {\n setHeatSupplyValue(value as number)\n onHeatSupplyChanged(value as number)\n }} />\n
\n
\n : undefined}\n onChange={(event, value) => {\n setTransportValue(value as number)\n onTransportChanged(value as number)\n }} />\n
\n {/* This should be broken up into the specific sub catagories */}\n {/*
\n {\n setMiscellaneousValue(value as number)\n onMiscellaneousChanged(value as number)\n }} />\n
*/}\n
\n )\n}","var _defs, _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSolcellerNyE(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"34.991146mm\",\n height: \"18.928291mm\",\n viewBox: \"0 0 34.991146 18.928291\",\n id: \"svg8\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", {\n id: \"defs2\"\n }, /*#__PURE__*/React.createElement(\"style\", {\n id: \"style833\"\n }, \".cls-solceller-1{fill:#589a8d;}.cls-solceller-2{fill:#8fc1b5;}\"), /*#__PURE__*/React.createElement(\"style\", {\n id: \"style960\"\n }, \".cls-solceller-1{stroke:#dff4ee;stroke-miterlimit:10;stroke-width:.25px;}.cls-solceller-1,.cls-solceller-2{fill:#dff4ee;}.cls-solceller-3{fill:#589a8d;}.cls-solceller-4{fill:#8fc1b5;}\"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"layer1\",\n transform: \"translate(-32.775261,-57.43764)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1096\",\n transform: \"matrix(0.26458333,0,0,0.26458333,32.775261,57.43764)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g994\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g968\"\n }, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-3\",\n points: \"89.47,61.12 90.7,58.81 106.89,58.81 105.65,61.12 \",\n id: \"polygon964\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-solceller-3\",\n d: \"m 106.05,59.31 -0.7,1.3 H 90.3 l 0.7,-1.3 h 15.05 m 1.67,-1 H 90.4 l -1.77,3.3 h 17.32 z\",\n id: \"path966\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"g974\"\n }, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-3\",\n points: \"66.38,45.56 71.08,0.5 131.7,0.5 127,45.56 \",\n id: \"polygon970\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-solceller-3\",\n d: \"m 131.14,1 -4.6,44.06 H 66.93 L 71.53,1 h 59.61 m 1.11,-1 H 70.63 l -4.81,46.06 h 61.62 z\",\n id: \"path972\"\n })), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-2\",\n points: \"88.41,21.77 70.75,21.77 72.55,3.07 90.21,3.07 \",\n id: \"polygon976\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-2\",\n points: \"86.25,43.18 68.59,43.18 70.39,24.48 88.05,24.48 \",\n id: \"polygon978\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-2\",\n points: \"108.06,21.74 90.4,21.74 92.2,3.04 109.86,3.04 \",\n id: \"polygon980\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-2\",\n points: \"105.9,43.14 88.24,43.14 90.04,24.44 107.7,24.44 \",\n id: \"polygon982\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-2\",\n points: \"127.65,21.74 109.99,21.74 111.79,3.04 129.45,3.04 \",\n id: \"polygon984\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-2\",\n points: \"125.49,43.14 107.83,43.14 109.63,24.44 127.29,24.44 \",\n id: \"polygon986\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"g992\"\n }, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-3\",\n points: \"97.63,59.49 97.9,46.56 100.57,46.56 100.3,59.49 \",\n id: \"polygon988\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-solceller-3\",\n d: \"m 100.06,47.06 -0.25,11.93 h -1.67 l 0.25,-11.93 h 1.67 m 1.02,-1 h -3.67 l -0.29,13.93 h 3.67 z\",\n id: \"path990\"\n }))), /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1026\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1000\"\n }, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-3\",\n points: \"23.65,61.12 24.88,58.81 41.06,58.81 39.83,61.12 \",\n id: \"polygon996\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-solceller-3\",\n d: \"m 40.23,59.31 -0.7,1.3 H 24.48 l 0.7,-1.3 h 15.05 m 1.67,-1 H 24.58 l -1.77,3.3 h 17.32 z\",\n id: \"path998\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1006\"\n }, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-3\",\n points: \"0.55,45.56 5.26,0.5 65.87,0.5 61.17,45.56 \",\n id: \"polygon1002\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-solceller-3\",\n d: \"m 65.32,1 -4.6,44.06 H 1.11 L 5.71,1 H 65.32 M 66.43,0 H 4.81 L 0,46.06 h 61.62 z\",\n id: \"path1004\"\n })), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-2\",\n points: \"22.59,21.77 4.93,21.77 6.73,3.07 24.39,3.07 \",\n id: \"polygon1008\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-2\",\n points: \"20.43,43.18 2.77,43.18 4.57,24.48 22.23,24.48 \",\n id: \"polygon1010\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-2\",\n points: \"42.24,21.74 24.58,21.74 26.38,3.04 44.04,3.04 \",\n id: \"polygon1012\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-2\",\n points: \"40.08,43.14 22.42,43.14 24.22,24.44 41.88,24.44 \",\n id: \"polygon1014\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-2\",\n points: \"61.83,21.74 44.17,21.74 45.97,3.04 63.63,3.04 \",\n id: \"polygon1016\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-2\",\n points: \"59.67,43.14 42.01,43.14 43.81,24.44 61.47,24.44 \",\n id: \"polygon1018\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1024\"\n }, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-3\",\n points: \"31.81,59.49 32.07,46.56 34.75,46.56 34.48,59.49 \",\n id: \"polygon1020\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-solceller-3\",\n d: \"m 34.24,47.06 -0.25,11.93 h -1.67 l 0.25,-11.93 h 1.67 m 1.02,-1 H 31.59 L 31.3,59.99 h 3.67 z\",\n id: \"path1022\"\n }))), /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1046\"\n }, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-4\",\n points: \"72.63,71.54 52.49,71.54 54.55,68.06 74.69,68.06 \",\n id: \"polygon1028\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-4\",\n points: \"93.4,55.14 28.45,55.14 33.52,6.6 98.46,6.6 \",\n id: \"polygon1030\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-1\",\n points: \"52.26,29.55 33.64,29.55 35.54,9.84 54.16,9.84 \",\n id: \"polygon1032\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-1\",\n points: \"49.98,52.11 31.37,52.11 33.27,32.4 51.88,32.4 \",\n id: \"polygon1034\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-1\",\n points: \"72.97,29.51 54.35,29.51 56.25,9.8 74.87,9.8 \",\n id: \"polygon1036\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-1\",\n points: \"70.69,52.07 52.08,52.07 53.98,32.36 72.59,32.36 \",\n id: \"polygon1038\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-1\",\n points: \"93.62,29.51 75,29.51 76.9,9.8 95.52,9.8 \",\n id: \"polygon1040\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-1\",\n points: \"91.34,52.07 72.73,52.07 74.63,32.36 93.24,32.36 \",\n id: \"polygon1042\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-solceller-4\",\n points: \"65.31,69.83 61.44,69.83 61.74,55.14 65.61,55.14 \",\n id: \"polygon1044\"\n }))))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSolcellerNyE);\nexport default __webpack_public_path__ + \"static/media/solceller_ny_e.3431e94e.svg\";\nexport { ForwardRef as ReactComponent };","import { RawDataPointConsumption, RawDataPointProduction } from \"../../api/EnergiDataApi\"\nimport { DataPointProduction, DataPointConsumption } from \"../chart/Chart.types\"\nimport { BundleMode, DateMode, RawDataBundle, SelectedDate } from \"./Dashboard.types\"\nimport sub from 'date-fns/sub'\nimport format from 'date-fns/format'\n\nconst STONE_STORAGE_CAPACITY_HOUR = 10\nconst STONE_STORAGE_CAPACITY_DAY = 200\nconst STONE_STORAGE_CAPACITY_MONTH = 2500\n\nexport const bundleRawData = (selectedDate: SelectedDate, bundleMode: BundleMode, data: K[]): RawDataBundle[] => {\n let dateFilter: (d: K) => boolean\n let getTimeUnit: (d: K) => number\n \n switch(bundleMode) {\n case BundleMode.HOURS:\n dateFilter = (d: K) => {\n const date = new Date(d.HourDK)\n return date.getFullYear() === selectedDate.year && date.getMonth() + 1 === selectedDate?.month && date.getDate() === selectedDate?.day\n }\n getTimeUnit = (d: K) => new Date(d.HourDK).getHours()\n break\n case BundleMode.DAYS:\n dateFilter = (d: K) => {\n const date = new Date(d.HourDK)\n return date.getFullYear() === selectedDate.year && date.getMonth() + 1 === selectedDate?.month\n }\n getTimeUnit = (d: K) => new Date(d.HourDK).getDate()\n break\n case BundleMode.MONTHS:\n dateFilter = (d: K) => {\n const date = new Date(d.HourDK)\n return date.getFullYear() === selectedDate.year\n }\n getTimeUnit = (d: K) => new Date(d.HourDK).getMonth() + 1\n break\n\n case BundleMode.YEARS:\n dateFilter = (d: K) => true\n getTimeUnit = (d: K) => new Date(d.HourDK).getFullYear()\n break\n default:\n return []\n }\n\n const bundles = data\n .filter(dateFilter)\n .reverse()\n .reduce((bundles: K[][], current: K) => {\n const timeUnit = getTimeUnit(current)\n if (!bundles[timeUnit]) {\n bundles[timeUnit] = []\n }\n bundles[timeUnit].push(current)\n return bundles\n }, [])\n\n return Object.keys(bundles).map((timeUnit: string) => ({\n timeUnit,\n rawDataPoints: bundles[Number(timeUnit)]\n }))\n}\n\nexport const rawProductionsToDataPoint = (timeLabel: string, data: RawDataPointProduction[]): DataPointProduction => {\n const offshoreWindGe = data.reduce((n, { OffshoreWindGe100MW_MWh }) => n + (OffshoreWindGe100MW_MWh ?? 0) , 0)\n const offshoreWindLt = data.reduce((n, { OffshoreWindLt100MW_MWh }) => n + (OffshoreWindLt100MW_MWh ?? 0), 0)\n const offshoreWind = offshoreWindGe + offshoreWindLt\n const onshoreWind = data.reduce((n, { OnshoreWindMWh }) => n + (OnshoreWindMWh ?? 0), 0)\n const solarM = data.reduce((n, { SolarMWh }) => n + (SolarMWh ?? 0), 0)\n const thermalPower = data.reduce((n, { ThermalPowerMWh }) => n + (ThermalPowerMWh ?? 0), 0)\n const combinedWind = offshoreWind + onshoreWind\n return {\n solar: solarM,\n offshoreWind,\n onshoreWind,\n thermalPower,\n timeLabel,\n combinedWind\n }\n}\n\nexport const rawConsumptionsToDataPoint = (timeLabel: string, data: RawDataPointConsumption[]): DataPointConsumption => {\n const consumption = (data.reduce((n, { ConsumptionkWh }) => n + (ConsumptionkWh ?? 0), 0)) / 1000 //kwh -> mwh\n return {\n consumption,\n timeLabel\n }\n}\n\nexport const countSelfSufficientHours = (consumption: RawDataPointConsumption[], production: RawDataPointProduction[], selectedDate: SelectedDate, dateMode: DateMode): number => {\n let dateFilterFunc: (d: RawDataPointConsumption | RawDataPointProduction) => boolean\n\n if(dateMode === DateMode.DAY) {\n dateFilterFunc = (d: RawDataPointConsumption | RawDataPointProduction) => {\n const date = new Date(d.HourDK)\n return date.getFullYear() === selectedDate.year && date.getMonth() + 1 === selectedDate?.month && date.getDate() === selectedDate?.day\n }\n } else if(dateMode === DateMode.MONTH) {\n dateFilterFunc = (d: RawDataPointConsumption | RawDataPointProduction) => {\n const date = new Date(d.HourDK)\n return date.getFullYear() === selectedDate.year && date.getMonth() + 1 === selectedDate?.month\n }\n } else {\n dateFilterFunc = (d: RawDataPointConsumption | RawDataPointProduction) => {\n const date = new Date(d.HourDK)\n return date.getFullYear() === selectedDate.year\n }\n }\n\n production = production.filter(dateFilterFunc).reverse()\n consumption = consumption.filter(dateFilterFunc).reverse()\n\n // Consumption data contains datapoints for multiple \"Branche\" types at identical timestamps so these needs to be accumulated\n const accumulatedConsumptions = []\n for (let i = 0; i < consumption.length; i++) {\n const deepCopyConEle = {\n HourUTC: consumption[i].HourUTC,\n HourDK: consumption[i].HourDK,\n MunicipalityNo: \"\",\n Branche: \"\",\n ConsumptionkWh: consumption[i].ConsumptionkWh\n }\n if(accumulatedConsumptions.length === 0) {\n // Push deep copy of the first element\n accumulatedConsumptions.push(deepCopyConEle)\n }\n else {\n const accumulatedConEle = accumulatedConsumptions[accumulatedConsumptions.length - 1]\n if(accumulatedConEle.HourDK.localeCompare(deepCopyConEle.HourDK) === 0) {\n accumulatedConEle.ConsumptionkWh = accumulatedConEle.ConsumptionkWh + deepCopyConEle.ConsumptionkWh\n } else {\n accumulatedConsumptions.push(deepCopyConEle)\n }\n }\n }\n \n let selfSufficiencyHours:number = 0\n for (let i = 0; i < accumulatedConsumptions.length; i++) {\n const conEle:RawDataPointConsumption = accumulatedConsumptions[i]\n\n // Find index of the production datapoint that matches in time\n let prodInd: number = -1\n for (let k = 0; k < production.length; k++) {\n const ele = production[k]\n if(ele.HourDK.localeCompare(conEle.HourDK) === 0) {\n prodInd = k\n break;\n }\n // Stop searching as time of production data is ahead of consumption data\n if(ele.HourDK.localeCompare(conEle.HourDK) > 0) {\n break;\n }\n }\n\n if(prodInd > -1) {\n const totProd = production.splice(prodInd, 1).map(p => (p.OffshoreWindGe100MW_MWh ?? 0) + (p.OffshoreWindLt100MW_MWh ?? 0) + (p.OnshoreWindMWh ?? 0) + (p.SolarMWh ?? 0) + (p.ThermalPowerMWh ?? 0))[0]\n const totCon = conEle.ConsumptionkWh / 1000 //kwh -> mwh\n selfSufficiencyHours = selfSufficiencyHours + (totProd >= totCon ? 1 : 0)\n }\n }\n\n return selfSufficiencyHours\n}\n\nexport const sumRawBundlesToDataPoints = (sumFunc: (timeLabel: string, data: K[]) => T, rawDataBundles: RawDataBundle[], timeUnitOffset: number = 0, fillMissingDataPoints: boolean = true): T[] => \n{\n const dataBundle = rawDataBundles.map(rdb => sumFunc((parseInt(rdb.timeUnit) + timeUnitOffset).toString(), rdb.rawDataPoints as any))\n\n return fillMissingDataPoints ? fillMissingTimes(dataBundle) : dataBundle\n}\n\nexport const isRawDataPointConsumption = (rawDataPoint: RawDataPointConsumption | RawDataPointProduction): rawDataPoint is RawDataPointConsumption => (rawDataPoint as RawDataPointConsumption).ConsumptionkWh !== undefined\n\nexport const isDataPointProduction = (dataPoint: DataPointConsumption | DataPointProduction): dataPoint is DataPointProduction => (dataPoint as DataPointProduction).solar !== undefined\n\nexport const fillMissingTimes = (dataPoints: T[]) => {\n const toReturn: T[] = []\n \n for (let index = 0; index < dataPoints.length; index++) {\n const dp = dataPoints[index]\n toReturn.push(dp)\n if(index + 1 < dataPoints.length && !isNaN(Number(dataPoints[index+1].timeLabel)) && !isNaN(Number(dp.timeLabel)) && Number(dataPoints[index+1].timeLabel) > Number(dp.timeLabel)+1) {\n if(isDataPointProduction(dp)) {\n toReturn.push({\n solar: undefined,\n offshoreWind: undefined,\n onshoreWind: undefined,\n thermalPower: undefined,\n timeLabel: (Number(dp.timeLabel)+1).toString(),\n combinedWind: undefined,\n } as T)\n } else {\n toReturn.push({ \n consumption: undefined,\n timeLabel: (Number(dp.timeLabel)+1).toString()\n } as T)\n }\n }\n }\n \n return toReturn\n}\n\nexport const normalizePercentage = (val: number) => val/100\n\nexport const getDateMode = (date: SelectedDate): DateMode => {\n const isDay = date.day !== undefined && date.month !== undefined && date.year !== undefined\n const isMonth = date.day === undefined && date.month !== undefined && date.year !== undefined\n const isYear = date.day === undefined && date.month === undefined && date.year !== undefined\n if (isDay) {\n return DateMode.DAY\n } else if (isMonth) {\n return DateMode.MONTH\n } else if (isYear) {\n return DateMode.YEAR\n }\n return DateMode.UNKNOWN\n}\n\nexport const selectedDateToBundleMode = (selectedDate: SelectedDate) => {\n const dateMode = getDateMode(selectedDate)\n return dateMode === DateMode.DAY ? BundleMode.HOURS : dateMode === DateMode.MONTH ? BundleMode.DAYS : BundleMode.MONTHS\n}\n\nexport const calculateStoneStorageValue = (mode: DateMode, numberOfFacilities: number) => {\n switch(mode) {\n case DateMode.DAY:\n return STONE_STORAGE_CAPACITY_HOUR * numberOfFacilities\n case DateMode.MONTH:\n return STONE_STORAGE_CAPACITY_DAY * numberOfFacilities\n case DateMode.YEAR:\n return STONE_STORAGE_CAPACITY_MONTH * numberOfFacilities\n default:\n return 0\n }\n}\n\nexport const calculateTotal = (consumption: DataPointConsumption[], production: DataPointProduction[], stoneStorageMW = 0, extraConsumptionMW = 0, extraProductionMW = 0 ): number => \n (production.reduce((prev, curr) => prev + ((curr?.solar ?? 0) + (curr?.combinedWind ?? 0)), 0) + stoneStorageMW + extraProductionMW - consumption.reduce((prev, curr) => prev + (curr?.consumption ?? 0), 0) - extraConsumptionMW)\n\nexport const getInitialDate = (today: Date = new Date()): SelectedDate => {\n const twoMonthsAgo = sub(today, {\n months: 2\n })\n return {\n year: twoMonthsAgo.getFullYear(),\n month: twoMonthsAgo.getMonth() + 1,\n day: twoMonthsAgo.getDate()\n }\n}\n\nexport const getQuickFetchDate = (initialDate: SelectedDate): string | undefined => {\n if (initialDate.day === undefined || initialDate.month === undefined) {\n return undefined\n }\n const quickDate = sub(new Date(initialDate.year, initialDate.month - 1, initialDate.day), {\n months: 2\n })\n return format(quickDate, 'yyyy-MM-dd') + 'T00:00'\n}","export default __webpack_public_path__ + \"static/media/ai_logo.bd8feb06.png\";","\nimport { createStyles } from '../../../styles'\n\nexport const styles = createStyles({\n logo: {\n maxWidth: '80px',\n maxHeight: '24px',\n marginLeft: '16px'\n },\n logos: {\n marginTop: '32px', \n float: 'right'\n },\n closeButton: {\n position: 'absolute',\n right: '4px',\n top: '4px',\n zIndex: 1000\n }\n})\n","import logoReel from './../../../img/reel_logo.png'\nimport logoAI from './../../../img/ai_logo.png'\nimport { Dialog, IconButton, Tab } from '@mui/material'\nimport TabPanel from '@mui/lab/TabPanel'\nimport TabContext from '@mui/lab/TabContext'\nimport TabList from '@mui/lab/TabList'\nimport { useState } from 'react'\nimport { styles } from './InfoDialog.style'\nimport CloseIcon from '@mui/icons-material/Close'\nimport textsDa from '../../../data/da.json'\n\ninterface InfoDialogProps {\n open: boolean\n onClose: () => void\n}\n\ninterface TutorialSection {\n title: string\n body: string\n}\n\nexport const InfoDialog = ({ open, onClose }: InfoDialogProps) => {\n const [tabValue, setTabValue] = useState('1')\n\n const tutorial: TutorialSection[] = [\n {\n title: textsDa.tutorialExploreTitle,\n body: textsDa.tutorialExploreBody\n },\n {\n title: textsDa.tutorialAdjustTitle,\n body: textsDa.tutorialAdjustBody\n },\n {\n title: textsDa.tutorialMapTitle,\n body: textsDa.tutorialMapBody\n },\n {\n title: textsDa.tutorialMobileTitle,\n body: textsDa.tutorialMobileBody\n }\n ]\n\n return (\n \n \n \n \n \n setTabValue(newValue)}>\n \n \n \n \n
\n {textsDa.introduction}\n
\n
\n Alexandra Instituttet logo\n reel logo\n
\n
\n \n {tutorial.map((t, i) => (\n
\n

{t.title}

\n

\n {t.body}\n

\n
\n ))}\n
\n
\n \n )\n}\n\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAA1CAYAAAC+2+58AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsSAAALEgHS3X78AAADVElEQVR42u2cS2hUMRSGv9GhWAXpRkEXWqVu3CgkVnzgQsGl4s6K0KEUV6KiiNCNuBIVFEFbXKjVrShCBUGoiFQ3Jr5AKYhYilDR0o7PQq2PxXTV3nReuXMazQezSXJzc/LPnJOcmzsZAsYoGoF3nrvNacu1hHu1At0J7Q9py/lKbzYnzQmKFCcKIEwUQJgogDBZ6QFUyTCQ89xnXy0NCFoAbfkG01csIRFdkDBRAGGiAMJEAYQJOggbRR2w2nO3g9oyUisbghYAWAo889xnjhqurKILEiYKIEwUQJgogDChB+H3wArPfQ7X0oCgBdCWCWBAehzVEF2QMFEAYaIAwkQBhMkaRQtQV+Z1P4FPwBttSw+CRrEJaJI2ugh92vK2jPbNk0dWKmEwC3QCDZWO1iiGgB7gora8LNK8Hf+PEH2Tg7IE2DP5qYTbPlzQEmAf8NwoLhnF/HTn59/CZwzIUBDivlEskDYsFNIIwuuh8qN6/xtp7YTbjOKctryaUv4DyEsbXYTxGcp9j/17xihGmR6EB7R151iMYiGwDjgA7HA0O60tx1KfrsCp6BegLV+AXqDXKC4DbQnNNksbFwI+YsAZR/lKaeNCwIcAHxzl86SNCwEfAix3lH+WNi4EqhLAKDJAh6P6tbRxIVB2EDaKucBiCqugg8BWR9M7Cde2AM0exz+mrfMLEAQuARqN4k8V/X4ErieUb8dvLigPYQuQxk74D9A+eXQ8UgTfAoxTmPweacNCwacAj4CN2nJF2qiQqCYXNAL0U3il54a2mBKu6QceeBx/8G7OlQsaBNYAq4CHJG+qYq7HAy4X9Ftb8tryBDjsaHPUKHZKGxA6RWOAtnQBtxKqMkC3UTHnUw2lBuF2Cm5pKg3ATaOolzYkVEoSQFtGgRZgIqF6LXBB2pBQKXkZqi2PgeOO6jajZv1ph1lJucvQU8A2kvM/nUbxdKajKUZxAvcTtEr4qi1b0p+m9ChLAG35ZRR7gRfAoinV9RTigdbWmYpeRsFl+SJfo3lKjbJ3wtoyBLRCYrKuCbg6maaOlEBFqQhtuQucdVTvAo5IGxYK1eSCOsCZfjhpVHwoXwpZoAumreOLvqisLeNGsRvY72iygel//XIPv357rDbTlB5/AeWlsC6aeB0NAAAAAElFTkSuQmCC\"","import { createStyles } from \"../../styles\";\n\nexport const styles = createStyles({\nslidersContainer: {\n display: 'flex',\n justifyContent: 'space-evenly',\n},\nslider: {\n margin: '8px',\n},\nsliderIcon: {\n height: '35px',\n width: 'auto'\n }\n})","var _defs, _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgWindmillNyE(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"17.137182mm\",\n height: \"19.574886mm\",\n viewBox: \"0 0 17.137182 19.574886\",\n id: \"svg8\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", {\n id: \"defs2\"\n }, /*#__PURE__*/React.createElement(\"style\", {\n id: \"style833\"\n }, \".cls-windmill-1{fill:#589a8d;}.cls-windmill-2{fill:#8fc1b5;}\"), /*#__PURE__*/React.createElement(\"style\", {\n id: \"style960\"\n }, \".cls-windmill-1{stroke:#dff4ee;stroke-miterlimit:10;stroke-width:.25px;}.cls-windmill-1,.cls-windmill-2{fill:#dff4ee;}.cls-windmill-3{fill:#589a8d;}.cls-windmill-4{fill:#8fc1b5;}\"), /*#__PURE__*/React.createElement(\"style\", {\n id: \"style1116\"\n }, \".cls-windmill-1{stroke:#8fc1b5;stroke-miterlimit:10;}.cls-windmill-1,.cls-windmill-2{fill:#589a8d;}.cls-windmill-3{fill:#ccede2;}.cls-windmill-4{fill:#dff4ee;}.cls-windmill-5{fill:#8fc1b5;}\"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"layer1\",\n transform: \"translate(-36.032604,-26.120295)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1207\",\n transform: \"matrix(0.26458333,0,0,0.26458333,27.164242,26.116014)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1136\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1132\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1124\"\n }, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-windmill-2\",\n points: \"86.66,63.28 83.15,63.28 84.54,45.8 85.23,45.8 \",\n id: \"polygon1120\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-windmill-2\",\n d: \"m 84.89,47.76 1.23,15.01 H 83.7 l 1.19,-15.01 m 0.73,-2.47 h -1.46 c 0,0 -0.08,0.02 -0.08,0.05 l -1.46,18.37 c 0,0 0.03,0.06 0.08,0.06 h 4.42 c 0,0 0.08,-0.03 0.08,-0.06 L 85.69,45.34 c 0,0 -0.04,-0.05 -0.08,-0.05 v 0 z\",\n id: \"path1122\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-windmill-3\",\n d: \"m 84.29,43.3 0.68,-0.04 c 0.06,0 0.1,-0.04 0.11,-0.1 l 2.46,-13.85 c 0.01,-0.07 -0.04,-0.12 -0.11,-0.11 -1.27,0.17 -2.4,0.33 -3.5,6.45 -0.03,0.16 -0.04,0.33 -0.03,0.5 0,0 0.09,5.71 0.39,7.15 z\",\n id: \"path1126\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-windmill-3\",\n d: \"M 83.3,45.25 83.02,44.62 C 83,44.57 82.94,44.54 82.89,44.55 L 69.27,47.2 c -0.07,0.01 -0.1,0.08 -0.07,0.14 0.61,1.14 1.16,2.16 7.19,0.99 0.16,-0.03 0.32,-0.08 0.47,-0.15 0,0 5.22,-2.14 6.44,-2.94 z\",\n id: \"path1128\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-windmill-3\",\n d: \"m 85.46,44.94 -0.26,0.64 c -0.02,0.05 0,0.11 0.04,0.14 l 11.29,8.17 c 0.06,0.04 0.13,0.02 0.15,-0.05 0.39,-1.24 0.73,-2.34 -4.26,-5.96 -0.13,-0.1 -0.28,-0.18 -0.43,-0.24 0,0 -5.13,-2.36 -6.54,-2.7 z\",\n id: \"path1130\"\n })), /*#__PURE__*/React.createElement(\"ellipse\", {\n className: \"cls-windmill-1\",\n cx: 84.919998,\n cy: 44.52,\n rx: 1.89,\n ry: 1.92,\n id: \"ellipse1134\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1154\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1150\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1142\"\n }, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-windmill-2\",\n points: \"55.33,62.37 50.72,62.37 52.46,40.77 53.54,40.77 \",\n id: \"polygon1138\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-windmill-2\",\n d: \"m 53.08,41.27 1.71,20.61 h -3.53 l 1.66,-20.61 h 0.15 m 0.83,-1 h -1.81 c -0.05,0 -0.1,0.03 -0.1,0.07 l -1.81,22.47 c 0,0 0.04,0.07 0.1,0.07 h 5.49 c 0.06,0 0.1,-0.03 0.1,-0.07 L 54,40.34 c 0,0 -0.05,-0.07 -0.1,-0.07 z\",\n id: \"path1140\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-windmill-3\",\n d: \"m 52.26,37.82 0.84,-0.05 c 0.07,0 0.13,-0.05 0.14,-0.12 l 3.05,-16.94 c 0.02,-0.09 -0.04,-0.15 -0.13,-0.14 -1.58,0.21 -2.98,0.4 -4.34,7.89 -0.04,0.2 -0.05,0.4 -0.04,0.61 0,0 0.11,6.99 0.48,8.75 z\",\n id: \"path1144\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-windmill-3\",\n d: \"m 51.03,40.21 -0.35,-0.77 c -0.03,-0.06 -0.1,-0.1 -0.16,-0.08 l -16.9,3.24 c -0.09,0.02 -0.13,0.1 -0.08,0.18 0.76,1.4 1.45,2.64 8.93,1.21 0.2,-0.04 0.39,-0.1 0.58,-0.18 0,0 6.48,-2.62 7.99,-3.59 z\",\n id: \"path1146\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-windmill-3\",\n d: \"m 53.72,39.83 -0.32,0.78 c -0.03,0.06 0,0.14 0.05,0.18 l 14.01,10 c 0.07,0.05 0.16,0.02 0.18,-0.06 0.48,-1.52 0.91,-2.87 -5.28,-7.3 -0.17,-0.12 -0.34,-0.22 -0.53,-0.3 0,0 -6.37,-2.89 -8.11,-3.3 z\",\n id: \"path1148\"\n })), /*#__PURE__*/React.createElement(\"circle\", {\n className: \"cls-windmill-1\",\n cx: 53.040001,\n cy: 39.310001,\n r: 2.3399999,\n id: \"circle1152\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1172\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1164\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-windmill-5\",\n d: \"m 69.97,34.61 h -2.68 c -0.08,0 -0.14,0.05 -0.15,0.11 l -2.69,39.15 c 0,0.07 0.06,0.13 0.15,0.13 h 8.14 c 0.08,0 0.15,-0.06 0.15,-0.13 L 70.12,34.72 c 0,-0.06 -0.07,-0.11 -0.15,-0.11 z\",\n id: \"path1156\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-windmill-4\",\n d: \"m 67.94,31.02 1.45,-0.33 c 0.12,-0.03 0.2,-0.13 0.2,-0.25 L 69.75,0.23 c 0,-0.16 -0.12,-0.25 -0.27,-0.2 -2.66,0.84 -5.03,1.6 -5.12,14.96 0,0.36 0.04,0.71 0.11,1.06 0,0 2.31,12.05 3.48,14.98 z\",\n id: \"path1158\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-windmill-4\",\n d: \"M 66.71,34.59 65.7,33.51 C 65.62,33.42 65.49,33.4 65.38,33.46 L 39.14,48.44 c -0.14,0.08 -0.15,0.23 -0.04,0.34 2.06,1.89 3.9,3.56 15.52,-3.05 0.31,-0.18 0.6,-0.39 0.87,-0.63 0,0 9.28,-8.03 11.23,-10.5 z\",\n id: \"path1160\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-windmill-4\",\n d: \"m 70.57,33.19 -0.29,1.46 c -0.02,0.12 0.04,0.24 0.15,0.29 l 27.45,12.63 c 0.14,0.07 0.28,0 0.3,-0.17 0.34,-2.77 0.63,-5.24 -11.51,-10.84 -0.32,-0.15 -0.66,-0.26 -1.01,-0.34 0,0 -11.93,-2.88 -15.08,-3.02 z\",\n id: \"path1162\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1170\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-windmill-5\",\n d: \"m 68.69,36.17 c -1.64,0 -2.98,-1.33 -2.98,-2.97 0,-1.64 1.33,-2.98 2.98,-2.98 1.65,0 2.97,1.33 2.97,2.98 0,1.65 -1.33,2.97 -2.97,2.97 z\",\n id: \"path1166\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-windmill-2\",\n d: \"m 68.69,30.72 c 1.36,0 2.47,1.11 2.47,2.47 0,1.36 -1.11,2.47 -2.47,2.47 -1.36,0 -2.47,-1.11 -2.47,-2.47 0,-1.36 1.11,-2.47 2.47,-2.47 m 0,-1 c -1.92,0 -3.47,1.56 -3.47,3.47 0,1.91 1.56,3.47 3.47,3.47 1.91,0 3.47,-1.56 3.47,-3.47 0,-1.91 -1.56,-3.47 -3.47,-3.47 z\",\n id: \"path1168\"\n })))))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgWindmillNyE);\nexport default __webpack_public_path__ + \"static/media/windmill_ny_e.5e7963a4.svg\";\nexport { ForwardRef as ReactComponent };","import { styles } from \"./ProductionSliders.style\"\nimport { ReactComponent as SolarUnit } from './../../img/solceller_ny_e.svg'\nimport { ReactComponent as WindFarm } from './../../img/windmill_ny_e.svg'\nimport { useCallback, useEffect, useState } from \"react\"\nimport { HorizontalModeValuePosition, IconSlider, LabelPosition, SliderOrientation } from \"dataviz-lib\"\nimport { ProductionSlidersProps, SliderConf } from \"./ProductionSliders.types\"\nimport { DateMode } from \"../dashboard/Dashboard.types\"\nimport { valueWithDecimalsAndLocale } from \"../../util/format-utils\"\n\n// MWh - fra Sweco analyse\nconst FORECASTS = {\n wind: 2848984, // 1052220 uden fremskrevet produktion\n sun: 107801 // 48955 uden fremskrevet produktion\n}\n\nexport const ProductionSliders = ({onWindValueChanged, onSunValueChanged, dateMode, isBigScreen = true, steps = 10}: ProductionSlidersProps) => {\n const [windValue, setWindValue] = useState(0)\n const [sunValue, setSunValue] = useState(0)\n\n const [sunConf, setSunConf] = useState({max: 0, stepSize: 0})\n const [windConf, setWindConf] = useState({max: 0, stepSize: 0})\n\n const valueDisplay = {\n valueFormatter: (val: number | number[]) => '+' + valueWithDecimalsAndLocale(val as number, 0) + ' MWh',\n horizontalModePos: isBigScreen ? HorizontalModeValuePosition.end : HorizontalModeValuePosition.label\n }\n\n const periodValueFromTotalValue = useCallback((value: number): number | undefined => {\n switch(dateMode) {\n case DateMode.DAY:\n return value/8760;\n case DateMode.MONTH:\n return value/365\n case DateMode.YEAR:\n return value/12\n default:\n return undefined\n }\n }, [dateMode])\n\n useEffect(() => {\n const windPeriodValue = (periodValueFromTotalValue(FORECASTS.wind)) ?? 0\n setWindConf({max: Math.round(windPeriodValue), stepSize: Math.ceil(windPeriodValue/steps)})\n setSunValue(0)\n\n const sunPeriodValue = (periodValueFromTotalValue(FORECASTS.sun)) ?? 0\n setSunConf({max: Math.round(sunPeriodValue), stepSize: Math.ceil(sunPeriodValue/steps)})\n setWindValue(0)\n \n }, [dateMode, periodValueFromTotalValue, steps])\n\n return (\n
\n
\n : undefined}\n onChange={(event, value) => {\n setSunValue(value as number)\n onSunValueChanged(value as number)\n }} />\n
\n
\n : undefined}\n onChange={(event, value) => {\n setWindValue(value as number)\n onWindValueChanged(value as number)\n }} />\n
\n
\n )\n}","import { createStyles } from \"../../styles\"\n\nexport const styles = createStyles({\n textColor: {\n color: '#444'\n },\n percentageColor: {\n color: 'green'\n }\n})","import { createStyles } from \"../../styles\"\n\nexport const styles = createStyles({\n totalValue: {\n color: '#444'\n }\n})","import { valueWithDecimalsAndLocale } from '../../util/format-utils'\nimport { styles } from './ProductionSurplus.style'\n\ninterface ProductionSurplusProps {\n production: number\n consumption: number\n decimals?: number\n unit?: string\n }\n\nexport const ProductionSurplus = ({ \n production,\n consumption,\n unit = 'MWh',\n decimals = 0\n }: ProductionSurplusProps) => {\n const surplus = (production - consumption)\n const surplusStyle = surplus < 0 ? {color: 'red'} : {color: 'green'}\n const surplusComponent = {isNaN(surplus) ? '-' : valueWithDecimalsAndLocale(surplus, decimals)}\n return (\n
\n {`Produktion af grøn strøm: ${valueWithDecimalsAndLocale(production, decimals)} ${unit}`}\n
\n {`Forbrug: ${valueWithDecimalsAndLocale(consumption, decimals) ?? '-'} ${unit}`}\n
\n {`${surplus < 0 ? 'Underskud' : 'Overskud'} af grøn strøm: `} {surplusComponent} {unit}\n
\n )\n}\n","import { valueWithDecimalsAndLocale } from '../../util/format-utils'\nimport { DateMode, SelectedDate } from '../dashboard/Dashboard.types'\nimport { styles } from './ProductionSurplusWithSufficiency.style'\nimport { ProductionSurplus } from \"../productionSurplus/ProductionSurplus\"\n\ninterface ProductionSurplusWithSufficiencyProps {\n periodName: string\n productionSurplus: {\n production: number\n consumption: number\n decimals?: number\n unit?: string\n }\n selfSufficiency: {\n selfSufficciencyHours: number\n period: DateMode\n selectedDate: SelectedDate\n }\n}\n\nexport const ProductionSurplusWithSufficiency = ({\n periodName,\n productionSurplus,\n selfSufficiency\n }: ProductionSurplusWithSufficiencyProps) => {\n\n const getHoursInPeriod = (): number => {\n if(selfSufficiency.period === DateMode.YEAR) {\n const currentDate = new Date()\n\n // Calculate and return the hours between the current date or end of the year and the beginning of the year.\n const toDate = currentDate.getFullYear() === selfSufficiency.selectedDate.year ? currentDate.getTime() : new Date(selfSufficiency.selectedDate.year + 1, 0, 0).getTime()\n return Math.round(Math.abs(toDate - new Date(selfSufficiency.selectedDate.year, 0, 0).getTime()) / 36e5)\n }\n \n if(selfSufficiency.period === DateMode.MONTH) {\n return new Date(selfSufficiency.selectedDate.year, (selfSufficiency.selectedDate.month ?? 0) + 1, 0).getDate() * 24\n }\n \n return 24\n }\n\n const percentageComponent = {\n isNaN(selfSufficiency.selfSufficciencyHours / getHoursInPeriod()) ? \n '-' : \n Number(valueWithDecimalsAndLocale((selfSufficiency.selfSufficciencyHours / getHoursInPeriod()) * 100)) < 1 ? '< 1' : \n valueWithDecimalsAndLocale((selfSufficiency.selfSufficciencyHours / getHoursInPeriod()) * 100, 1)\n }%\n \n return (\n
\n \n {`Nøgletal om Lollands energisystem (faktiske tal for hele ${periodName}):`}\n \n \n {`Forbruget kunne dækkes af grøn strøm`} {percentageComponent} {`af tiden (${valueWithDecimalsAndLocale(selfSufficiency.selfSufficciencyHours)} timer)`}\n
\n )\n}\n","import { styles } from \"./Dashboard.style\"\nimport { SlidingDateSelector, IconSlider, LabelPosition, SliderOrientation, HorizontalModeValuePosition } from \"dataviz-lib\"\nimport { Chart } from '../chart/Chart'\nimport { useCallback, useState, useEffect, useMemo } from 'react'\n// import { ReactComponent as Sun } from './../../img/sun.svg'\nimport { ReactComponent as StoneStorage } from './../../img/stenlager_ny_e.svg'\nimport './styles.css';\nimport { Box, CircularProgress, Dialog, IconButton, useMediaQuery, Button as MUIButton } from '@mui/material'\nimport exportImportWindMap from '../../data/animation/Eksport_import_wind_lolland.json'\nimport exportNoWindMap from '../../data/animation/Eksport_minus_wind_lolland.json'\nimport importImportWindMap from '../../data/animation/Import_all_lolland.json'\nimport importNoWindMap from '../../data/animation/Import_minus_wind_lolland.json'\nimport textsDa from '../../data/da.json'\nimport { useLottie } from \"lottie-react\"\nimport { colors } from '../../colors'\nimport { RawDataPointProduction, RawDataPointConsumption, getProductionData, getConsumptionData } from \"../../api/EnergiDataApi\"\nimport productionJson from '../../data/productionmunicipalityhour_300822.json'\nimport consumptionJson from '../../data/consumptionindustry_300822.json'\nimport {Help, Info} from '@mui/icons-material'\nimport { DataPointConsumption, DataPointProduction } from \"../chart/Chart.types\"\n// import hand from './../../img/hand.gif'\nimport { LoadingIndicator } from \"../loadingIndicator/LoadingIndicator\"\nimport { BundleMode, DateMode, DialogData, SelectedDate, Texts } from \"./Dashboard.types\"\nimport { ConsumptionSliders } from \"../consumptionSliders/ConsumptionSliders\"\nimport { Forecast } from \"../consumptionSliders/ConsumptionSliders.types\"\nimport { bundleRawData, getDateMode, calculateStoneStorageValue, rawConsumptionsToDataPoint, rawProductionsToDataPoint, selectedDateToBundleMode, sumRawBundlesToDataPoints, calculateTotal, getInitialDate, getQuickFetchDate, countSelfSufficientHours } from \"./util\"\nimport { InfoDialog } from \"./infoDialog/InfoDialog\"\nimport { ProductionSliders } from \"../productionSliders/ProductionSliders\"\nimport CloseIcon from '@mui/icons-material/Close'\nimport { ProductionSurplusWithSufficiency } from \"../productionSurplusWithSufficiency/ProductionSurplusWithSufficiency\"\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\n\ntype DashboardProps = {\n backLink?: string\n}\n\nexport const Dashboard = ({ backLink } : DashboardProps) => {\n const isBigScreen = useMediaQuery('(min-width: 1500px)')\n\n const [dialogOpen, setDialogOpen] = useState(false)\n const [dialogData, setDialogData] = useState(undefined)\n\n const [infoDialogOpen, setInfoDialogOpen] = useState(true)\n\n const [stoneStorage, setStoneStorage] = useState(0)\n const [extraSun, setExtraSun] = useState(0)\n const [extraWind, setExtraWind] = useState(0)\n\n const initialDate = getInitialDate()\n\n //MW\n const [extraHeatSupplyConsumption, setExtraHeatSupplyConsumption] = useState(0)\n const [extraTransportConsumption, setExtraTransportConsumption] = useState(0)\n const [extraPowerToXConsumption, setExtraPowerToXConsumption] = useState(0)\n\n // This is not used for now\n const [extraMiscellaneousConsumption, setExtraMiscellaneousConsumption] = useState(0)\n\n const [rawProductionData, setRawProductionData] = useState([])\n const [rawConsumptionData, setRawConsumptionData] = useState([])\n\n const [currentConsumptionData, setCurrentConsumptionData] = useState([])\n const [currentProductionData, setCurrentProductionData] = useState([])\n\n const [isLoadingConsumptionData, setIsLoadingConsumptionData] = useState(true)\n const [isLoadingProductionData, setIsLoadingProductionData] = useState(true)\n\n const [yearlyProduction, setYearlyProduction] = useState()\n const [yearlyConsumption, setYearlyConsumption] = useState()\n\n const [datePeriod, setDatePeriod] = useState(DateMode.DAY)\n\n const [dateHasImport, setDateHasImport] = useState(false)\n\n const [dateHasOffshoreWind, setDateHasOffshoreWind] = useState(true)\n\n const [lollandMap, setLollandMap] = useState(importImportWindMap)\n\n const [selectedDate, setSelectedDate] = useState(initialDate)\n\n const [selfSufficientHoursYearly, setSelfSufficientHoursYearly] = useState(0)\n\n const hasData = (currentProductionData ?? []).length > 0 && (currentConsumptionData ?? []).length > 0\n\n const isLoadingData = isLoadingProductionData || isLoadingConsumptionData\n\n const updateDate = useCallback((date) => setSelectedDate(date), [setSelectedDate])\n\n const { View: map } = useLottie({\n animationData: lollandMap,\n loop: true,\n autoplay: true,\n style: {\n width: '100%'\n }\n })\n\n const getExtraProductionMW = useMemo((): number => extraSun + extraWind, [extraSun, extraWind])\n const getExtraConsumptionMW = useMemo((): number => extraTransportConsumption + extraPowerToXConsumption + extraHeatSupplyConsumption + extraMiscellaneousConsumption, [extraHeatSupplyConsumption, extraMiscellaneousConsumption, extraPowerToXConsumption, extraTransportConsumption])\n\n useEffect(() => {\n setDatePeriod(getDateMode(selectedDate))\n }, [selectedDate])\n\n useEffect(() => {\n setExtraHeatSupplyConsumption(0)\n setExtraMiscellaneousConsumption(0)\n setExtraPowerToXConsumption(0)\n setExtraTransportConsumption(0)\n setExtraSun(0)\n setExtraWind(0)\n }, [datePeriod])\n \n useEffect(() => {\n if(dateHasOffshoreWind) {\n if(dateHasImport) {\n // Set IMPORT map WITH offshore wind\n setLollandMap(importImportWindMap) \n }\n else {\n // Set EXPORT map WITH offshore wind\n setLollandMap(exportImportWindMap) \n }\n }\n else {\n if(dateHasImport) {\n // Set IMPORT map WITHOUT offshore wind\n setLollandMap(importNoWindMap) \n }\n else {\n // Set EXPORT map WITHOUT offshore wind\n setLollandMap(exportNoWindMap) \n }\n }\n }, [dateHasOffshoreWind, dateHasImport])\n\n useEffect(() => {\n setSelfSufficientHoursYearly(countSelfSufficientHours(rawConsumptionData, rawProductionData, selectedDate, DateMode.YEAR))\n }, [isLoadingData, rawConsumptionData, rawProductionData, selectedDate])\n\n useEffect(() => {\n const productionData = sumRawBundlesToDataPoints(rawProductionsToDataPoint, bundleRawData(selectedDate, BundleMode.YEARS, rawProductionData)).find(dp => dp.timeLabel === selectedDate.year.toString())\n setYearlyProduction(productionData)\n }, [isLoadingData, rawProductionData, selectedDate])\n\n useEffect(() => {\n const consumptionData = sumRawBundlesToDataPoints(rawConsumptionsToDataPoint, bundleRawData(selectedDate, BundleMode.YEARS, rawConsumptionData)).find(dp => dp.timeLabel === selectedDate.year.toString())\n setYearlyConsumption(consumptionData)\n }, [isLoadingData, rawConsumptionData, selectedDate])\n\n useEffect(() =>\n { \n const productionData = sumRawBundlesToDataPoints(rawProductionsToDataPoint, bundleRawData(selectedDate, selectedDateToBundleMode(selectedDate), rawProductionData), getDateMode(selectedDate) === DateMode.DAY ? 1 : 0)\n setCurrentProductionData(productionData)\n setDateHasOffshoreWind(productionData.reduce((prev, curr) => prev + (curr?.offshoreWind ?? 0), 0 ) > 0)\n },\n [selectedDate, rawProductionData])\n\n useEffect(() =>\n { \n const consumptionData = sumRawBundlesToDataPoints(rawConsumptionsToDataPoint, bundleRawData(selectedDate, selectedDateToBundleMode(selectedDate), rawConsumptionData), getDateMode(selectedDate) === DateMode.DAY ? 1 : 0)\n setCurrentConsumptionData(consumptionData)\n },\n [selectedDate, rawConsumptionData])\n\n useEffect(() => {\n const stoneStorageMW = calculateStoneStorageValue(getDateMode(selectedDate), stoneStorage) * currentProductionData.length\n const extraConsumptionMW = getExtraConsumptionMW * currentConsumptionData.length\n const extraProductionMW = getExtraProductionMW * currentProductionData.length\n setDateHasImport(calculateTotal(currentConsumptionData, currentProductionData, stoneStorageMW, extraConsumptionMW, extraProductionMW) < 0)\n }, [currentConsumptionData, currentProductionData, getExtraConsumptionMW, selectedDate, stoneStorage, getExtraProductionMW])\n\n const getSliderInfoTexts = (text: Texts): {title: string, body: string}[] => {\n switch(text) {\n case Texts.CONSUMPTION:\n return textsDa.consumption\n case Texts.PRODUCTION:\n return textsDa.production\n case Texts.STORAGE:\n return textsDa.storage\n default: \n return [{title: \"\", body: \"\"}]\n }\n }\n\n const getSliderHeader = (headerText: string, infoSections: {title: string, body: string}[]) =>
{headerText} {\n setDialogData({\n title: headerText,\n sections: infoSections\n })\n setDialogOpen(true)\n }}\n size= {'small'} \n > \n \n
\n\n\n useEffect(() => {\n const fullDate = \"2021-01-01T00:00\"\n const quickDate = getQuickFetchDate(initialDate) ?? fullDate\n getProductionData(quickDate).then(data => setRawProductionData(data)).finally(() => \n getProductionData(fullDate).then(data => setRawProductionData(data)).catch((err) => {\n console.error('error fetching production data, using offline')\n setRawProductionData(productionJson.result.records)\n }).finally(() => setIsLoadingProductionData(false))\n )\n\n\n getConsumptionData(quickDate).then(data => setRawConsumptionData(data)).finally(() => \n getConsumptionData(fullDate).then(data => setRawConsumptionData(data)).catch((err) => {\n console.error('error fetching consumption data, using offline')\n setRawConsumptionData(consumptionJson.result.records)\n }).finally(() => setIsLoadingConsumptionData(false))\n )\n }, [])\n\n const productionSliders = \n setExtraWind(val)} \n onSunValueChanged = {(val) => setExtraSun(val)} \n dateMode={datePeriod} \n isBigScreen={isBigScreen}\n />\n\n const consumptionSliders = \n setExtraHeatSupplyConsumption(val)} \n onMiscellaneousChanged={(val) => setExtraMiscellaneousConsumption(val)} \n onPowerToXChanged={(val) => setExtraPowerToXConsumption(val)} \n onTransportChanged={(val) => setExtraTransportConsumption(val)} \n forecast={Forecast.end} \n dateMode={datePeriod} \n isBigScreen={isBigScreen}\n />\n\n const infoAndReset =\n
\n \n setInfoDialogOpen(true)}\n size= {'small'} \n >\n \n \n \n {backLink !== undefined && \n \n window.location.href = backLink} variant=\"outlined\" startIcon={}>\n Gå tilbage\n \n \n }\n window.location.reload()} style={styles.resetButton}>\n Nulstil alt\n \n
\n\n return (\n
\n\n
\n \n
LOLLANDS ENERGISYSTEM
\n \n
\n {map}\n
\n \n
\n\n {!isBigScreen &&\n
\n\n
{getSliderHeader(\"PRODUKTION\", getSliderInfoTexts(Texts.PRODUCTION))}
\n {productionSliders}\n\n
\n
{getSliderHeader(\"LAGRING\", getSliderInfoTexts(Texts.STORAGE))}
\n
\n '+' + val + ' anlæg', horizontalModePos: HorizontalModeValuePosition.label}} \n value={stoneStorage}\n label={{value:'Stenlager', position: LabelPosition.bottom}}\n orientation = {SliderOrientation.horizontal}\n onChange={(event, newValue) => setStoneStorage(newValue as number)} />\n
\n
\n\n
{getSliderHeader(\"FORBRUG\", getSliderInfoTexts(Texts.CONSUMPTION))}
\n {consumptionSliders}\n
\n }\n\n {isBigScreen &&\n
\n\n
\n
{getSliderHeader(\"PRODUKTION\", getSliderInfoTexts(Texts.PRODUCTION))}
\n {productionSliders}\n
\n\n
\n
{getSliderHeader(\"LAGRING\", getSliderInfoTexts(Texts.STORAGE))}
\n
\n '+' + val + ' anlæg'}}\n value={stoneStorage}\n label={{value:'Stenlager', position: LabelPosition.bottom}}\n orientation = {SliderOrientation.vertical}\n icon={}\n onChange={(event, newValue) => setStoneStorage(newValue as number)} />\n
\n
\n\n
\n
{getSliderHeader(\"FORBRUG\", getSliderInfoTexts(Texts.CONSUMPTION))}
\n {consumptionSliders}\n
\n
\n }\n
\n\n {isBigScreen &&\n
\n {infoAndReset}\n
\n }\n\n
\n\n
\n \n
\n
PRODUKTION OG FORBRUG
\n
Tryk på grafen for at se mere
\n
\n\n
\n {hasData ?\n \n : (isLoadingData && !hasData) ?
Henter data...
\n :
Ingen data tilgængelig for den valgte periode
\n }\n
\n\n
\n {isLoadingData ?\n \n :\n \n }\n
\n\n
\n
SE DATA FOR
\n
\n \n
\n
\n\n {!isBigScreen &&\n infoAndReset\n }\n\n
\n\n {dialogOpen &&\n setDialogOpen(false)} open={dialogOpen} maxWidth='md'>\n setDialogOpen(false)}\n size= {'small'}\n style={styles.dialogCloseButton}\n >\n \n \n \n {dialogData?.img && \n {dialogData?.img}\n }\n \n {dialogData?.title}\n { dialogData?.sections.map((t, i) => (\n
\n

{t.title}

\n

\n {t.body}\n

\n
\n )) }\n {dialogData?.content}\n
\n
\n
\n }\n {infoDialogOpen &&\n setInfoDialogOpen(false)}\n />\n }\n
\n )\n}\n","export default __webpack_public_path__ + \"static/media/energisystem.6fac5f86.png\";","export default __webpack_public_path__ + \"static/media/ressourcesystem.944d9a5e.png\";","\nimport { createStyles } from '../../styles'\n\nexport const styles = createStyles({\n container: { \n background: 'white',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100dvh',\n width: '100dvw' \n },\n inner: {\n height: '90dvh',\n },\n buttonContainer: {\n borderRadius: '16px',\n height: '100%'\n },\n link: {\n height: '100%'\n },\n linkImg: {\n height: '100%'\n }\n})\n","import { Box, ButtonBase, Link } from \"@mui/material\"\nimport LinkEnergy from \"./energisystem.png\"\nimport LinkResource from \"./ressourcesystem.png\"\nimport { styles } from \"./StartPage.style\"\n\nexport const StartPage = () => {\n const energySystemUrl = window.location.href.replace('startPage=true', 'startPage=false')\n const returnUrl = window.location.href\n\n return (\n \n \n \n \n \"link\n \n \n \n \n \"link\n \n \n \n \n )\n}\n","import { createTheme, ThemeProvider } from \"@mui/material\"\nimport { Dashboard } from \"./components/dashboard/Dashboard\"\nimport { colors } from './colors'\nimport { StartPage } from \"./components/startPage/StartPage\"\nimport { useIdleTimer } from \"react-idle-timer\"\n\nconst theme = createTheme({\n palette: {\n primary: {\n main: colors.darkGreen\n }\n }\n})\n\nexport const App = () => {\n const urlParams = new URLSearchParams(window.location.search)\n const startPage = urlParams.get('startPage')\n const startPageLink = window.location.origin + window.location.pathname + '?startPage=true'\n\n const onIdle = () => {\n if (startPage === 'false') {\n window.location.href = startPageLink\n }\n }\n\n useIdleTimer({\n timeout: 90000,\n onIdle \n })\n\n return (\n \n {startPage === 'true' \n ?\n \n :\n \n }\n )\n}\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport './index.css'\nimport { App } from './App'\nimport reportWebVitals from './reportWebVitals'\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}