{"version":3,"sources":["reportWebVitals.ts","locales/en/index.tsx","locales/no/index.tsx","context/appstate.tsx","components/Spinner.tsx","components/Loading/Loading.tsx","components/ErrorBoundry/ErrorBoundry.tsx","utils/apiClient.tsx","components/action/buttons/Button.tsx","components/action/actionStyles.ts","components/action/buttons/Primary.tsx","components/action/buttons/Close.tsx","components/LanguageToggleComponent.tsx","components/NettToggleComponent.tsx","components/UserDropdown/UserDropdown.tsx","components/Navbar/Navbar.tsx","routes/root.tsx","utils/index.tsx","components/Card/Card.tsx","images/ms-symbollockup_signin_light.png","pages/Login.tsx","images/log_in_with_vipps_rect_210_NO.png.png","components/Table/Table.tsx","components/TextPlaceholder/TextPlaceholder.tsx","components/FormatNumber.tsx","utils/helpers/helpers.ts","components/NoMeterPlaceholder.tsx","components/GridCostComponent.tsx","components/Consumption/GridRentModal.tsx","pages/Customers.tsx","components/Tabs/Tabs.tsx","context/meter.tsx","components/MeterFrame.tsx","context/customer.tsx","pages/Meters.tsx","components/BudgetComponent/BudgetGraph.tsx","components/DateChanger/DateChanger.tsx","components/BudgetComponent/BudgetComponent.tsx","pages/CustomerBudget.tsx","components/CustomerFrame.tsx","pages/Budget.tsx","utils/hooks/useDateRange.ts","utils/hooks/useDateChanger.ts","components/FrequencyChanger/FrequencyChanger.tsx","components/SeriesChanger/SeriesChanger.tsx","components/Consumption/utils.tsx","components/Consumption/Graphs.tsx","images/search_data.png","components/GraphPlaceholder/GraphPlaceholder.tsx","components/PowerAgreementComponent.tsx","components/Consumption/PowerAgreementModal.tsx","components/Consumption/Consumption.tsx","pages/Consumption.tsx","components/DetailComponents/Section.tsx","components/HelpModal/HelpModal.tsx","pages/Details.tsx","pages/Enroll/FooterNav.tsx","pages/Enroll/steps/Step1.tsx","pages/Enroll/steps/Step2.tsx","pages/Enroll/steps/Step3.tsx","pages/Enroll/steps/Step4.tsx","pages/Enroll/steps/Step5.tsx","pages/Enroll/steps/Step6.tsx","pages/Enroll/steps/Step7.tsx","pages/Enroll/WizardSteps.tsx","pages/Enroll/index.tsx","components/Peak/PeakGraphs.tsx","pages/Peak.tsx","pages/SpotPrice.tsx","pages/SumCompany.tsx","components/Consumption/ScatterPlot.tsx","components/Dropdown/Dropdown.tsx","components/Consumption/DeviationsGraph.tsx","components/ETComponent/ETComponent.tsx","pages/ET.tsx","pages/ETFelt.tsx","components/InvoiceComponent/useInvoiceData.tsx","components/InvoiceComponent/Table.tsx","components/DeleteDialog/DeleteDialog.tsx","components/InvoiceComponent/format.ts","components/InvoiceComponent/Attribute.tsx","components/InvoiceComponent/utils.tsx","components/InvoiceComponent/useInvoiceCalculator/average.ts","components/InvoiceComponent/useInvoiceCalculator/averageGrid.ts","components/InvoiceComponent/useInvoiceCalculator/averageProfit.ts","components/InvoiceComponent/useInvoiceCalculator/averageTotal.ts","components/InvoiceComponent/useInvoiceCalculator/elecDifference.ts","components/InvoiceComponent/useInvoiceCalculator/gridDifference.ts","components/InvoiceComponent/useInvoiceCalculator/index.tsx","components/InvoiceComponent/InvoiceCard.tsx","components/InvoiceComponent/validations.tsx","components/InvoiceComponent/File/PreviousFilesList.tsx","components/InvoiceComponent/File/utils.tsx","components/InvoiceComponent/File/FileTypeSelect.tsx","components/InvoiceComponent/File/Manager.tsx","components/InvoiceComponent/Form.tsx","components/InvoiceComponent/InvoiceModal.tsx","pages/UploadInvoice.tsx","components/WeatherStationsComponent/Markers.tsx","components/WeatherStationsComponent/Legend.tsx","pages/WeatherStations.tsx","components/powerFactorComponents/powerFactorGraphNew.tsx","pages/PowerFactor.tsx","pages/Settings.tsx","Router.tsx","index.tsx"],"names":["reportWebVitals","onPerfEntry","Function","then","_ref","getCLS","getFID","getFCP","getLCP","getTTFB","en","consumption","global","home","objects","grid","deviations","powerFactor","et","no","AppStateContext","createContext","showNett","toggleShowNett","AppStateContextProvider","children","_useState","useState","_useState2","_slicedToArray","setShowNett","useEffect","nett","JSON","parse","localStorage","getItem","useCallback","s","v","setItem","stringify","data","useMemo","_jsx","Provider","value","useAppState","useContext","Spinner","className","xmlns","x","y","version","viewBox","xmlSpace","d","attributeName","attributeType","dur","from","repeatCount","to","type","FullScreenLoading","Loading","ErrorBoundary","error","useRouteError","console","HTTP_Method","APIClient","_this","_classCallCheck","_request","url","method","body","checkAuth","arguments","length","undefined","headers","fetch","res","status","json","Error","window","location","href","getObjects","GET","setObjectName","objectId","name","cleanName","encodeURIComponent","concat","PUT","getAccount","getSessionAlive","getMe","getMeter","meterId","getUserSettings","getMetersOverview","getWindProduction","areaId","getGridCost","start","end","aggregationType","getPowerAgreementCost","getCustomerPowerAgreementCost","customerId","getConsumption","freq","getMeteringPointSpotPrice","getMeteringPointETChart","felt","getMeteringPointPowerFactor","getMeteringPointPeak","getPlant","getPlantSummary","syncPlant","saveInvoice","invoice","POST","deleteInvoice","userSharedInvoiceId","DELETE","getInvoices","getCustomer","getCustomerOverview","getMeterCustomer","syncCustomer","getCustomerCost","getCustomerGridCost","getSystemPrice","getPoolPrice","getLatestSystemPrices","getLatestPoolPrices","getWeatherStations","_createClass","key","this","Button","forwardRef","props","ref","_objectSpread","cn","disabled","ActionButton","isSubmitting","submittingText","Icon","iconClassName","_objectWithoutProperties","_excluded","_jsxs","CircleBackslashIcon","_Fragment","UpdateIcon","width","height","PrimaryButton","CloseButton","XIcon","LanguageToggleComponent","language","setLanguage","onClick","lang","translate","GlobeAltIcon","toUpperCase","NettToggleComponent","_useAppState","t","useTranslation","CashIcon","UserDropdown","dropdownMenuReference","useRef","visible","setVisible","toggleVisibility","newState","createPopper","dropdownButtonReference","current","placement","externalVisibiltyToggle","pathname","Navbar","navigate","useNavigate","useLocation","goHome","handleCogButtonClick","Disclosure","as","open","src","alt","user","displayName","userName","CogIcon","reload","XMarkIcon","Bars3Icon","Panel","Root","_useQuery","useQuery","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","getUserOrLogin","abrupt","sent","stop","isLoading","Outlet","_ref2","_callee2","_context2","initials","split","map","trim","join","t0","apply","Card","Login","redirectToLogin","loginSource","search","id","Table","columns","_useTable","useTable","disableSortBy","enableSorting","initialState","useSortBy","useExpanded","getTableProps","getTableBodyProps","headerGroups","rows","footerGroups","prepareRow","TableWrapper","headerGroup","getHeaderGroupProps","column","i","thStyleOverride","getHeaderProps","getSortByToggleProps","render","isSorted","isSortedDesc","ChevronUpIcon","ChevronDownIcon","row","trStyleOverride","getRowProps","cells","cell","loading","onRowClick","original","tdStyleOverride","getCellProps","group","getFooterGroupProps","getFooterProps","TextPlaceholder","text","repeat","min","Math","random","max","FormatNumber","number","decimals","isNaN","float","parsedFloat","parseFloat","NumberFormat","toFixed","thousandSeparator","displayType","decimalSeparator","isNumericString","getFooterForColumn","formula","num","toLowerCase","sum","forEach","a","NoMeterPlaceholder","GridCostComponent","queryType","e","dayjs","format","consumptionColumns","Header","accessor","Loader","Cell","Footer","loadingPlaceholderRows","tableStyleOverride","GridRentModal","isOpen","onClose","Transition","appear","show","Fragment","Dialog","Overlay","Child","enter","enterFrom","enterTo","leave","leaveFrom","leaveTo","Title","withTranslation","gridRentCustomerID","setGridRentCustomerID","_useState3","_useState4","showGridRentModal","setShowGridRentModal","_useState5","_useState6","gridRentFromDate","setGridRentFromDate","_useState7","_useState8","gridRentToDate","setGridRentToDate","_useQuery2","getCustomerMeteringPoint","isCustomerMeteringPointLoading","customerMeteringPoint","_customerMeteringPoin","objectIds","rowClickHandler","customerMeteringpoint","_result$objectIds","result","find","obj","sortType","totalMeters","plantCount","_ref3","_ref4","subtract","startOf","_ref5","rowData","Tabs","_tabs$find","tabs","_ref$prefix","prefix","isActive","tab","fullUrl","htmlFor","defaultValue","onChange","target","hiddenOnMobile","label","NavLink","MeterContext","useMeter","MeterFrame","useParams","meter","parseInt","Navigate","replace","ArrowLeftIcon","objectName","description","meteringPointId","CustomerContext","gridRentObjectId","setGridRentObjectId","customer","getCustomerMeteringPointOverview","BudgetGraph","graphData","budget","forecast","real","timestamp","baseBudget","time","toString","totalCost","totalGrossCost","yLabel","ResponsiveContainer","aspect","ComposedChart","margin","bottom","left","right","CartesianGrid","strokeDasharray","XAxis","dataKey","tickFormatter","xAxisTickFormatter","Label","offset","position","YAxis","toLocaleString","angle","style","textAnchor","Tooltip","cursor","content","BudgetGraphTooltip","wrapperStyle","outline","Bar","fill","stackId","Line","stroke","strokeWidth","CustomLegend","active","payload","entry","index","round","pow","DateChanger","dateChangeHandler","dateDisplay","disablePrev","disableNext","side","isDisabled","textTransform","role","ChevronLeftIcon","ChevronRightIcon","BudgetComponent","_useSearchParams","useSearchParams","_useSearchParams2","params","setParams","get","add","getCustomerBudget","getMeteringPointBudget","isBefore","initialTableState","_step","total","_iterator","_createForOfIteratorHelper","n","done","_item$budget","item","err","f","field","_step2","_iterator2","_item$forecast$consum","_item$forecast","_step3","_iterator3","_item$forecast2","_item$real","_step4","_iterator4","_item$real2","_step5","_iterator5","_item$budget2","_item$budget3","Krone","_ref6","_step6","_iterator6","_item$forecast3","_item$forecast4","_ref7","_step7","_iterator7","_item$forecast5","_item$forecast6","_item$real3","_item$real4","_ref8","_step8","_iterator8","_item$real5","_item$real6","tmpFrom","tmpTo","changeByFreq","_ref9","_ref10","FormatNumberBase","CustomerBudgetPage","CustomerFrame","partyId","BudgetPage","useDateRange","defaultFreq","defaultFrom","defaultTo","defaultPeriod","searchParams","setSearchParams","period","setDateRange","useDateChanger","_props$freq","_props$from","_props$to","i18n","defaultFromDay","defaultToDay","defaultFromMonth","defaultToMonth","dateRange","is_power_factor","_useMemo","loc","isAfter","locale","fmt","FrequencyChanger","freqOptions","freqChangeHandler","SeriesChanger","seriesChangeHandler","seriesOptions","altSeriesOptions","graphSeries","options","require","extend","isoWeeksInYear","isoWeek","isLeapYear","pad","arr","toObject","Object","keys","year","set","_toConsumableArray","values","month","daysInMonth","day","date","ConsumptionGraph","series","consumptionType","onGraphClick","_pad","production","netConsumption","spotPrice","spotCostPrice","spotCostGrossPrice","spotAmount","spotCost","spotGrossCost","powerAgreement","powerAgreementCost","powerAgreementGrossCost","yLabel1","yLabel2","xLabel","activeLabel","top","stackOffset","yAxisId","orientation","ConsumptionTooltip","ReferenceLine","animateNewValues","SpotPriceGraph","_data$spotPrices$","tempData","spotPrices","areaIndex","tempData2","_tempData2$i","_tempData2$i2","spotGrossPrice","sysPrice","SpotPriceTooltip","GraphPlaceholder","dataType","noDataSymbol","PowerAgreementComponent","quality","FieldQuality","PowerAgreementModal","Consumption","_useDateRange","showPowerAgreementModal","setShowPowerAgreementModal","_useState9","_useState10","powerAgreementFromDate","setPowerAgreementFromDate","_useState11","_useState12","powerAgreementToDate","setPowerAgreementToDate","_useState13","_useState14","setConsumptionType","_useState15","_useState16","setGraphSeries","_useDateChanger","onRowClickHanler","tmpFreq","hasProduction","some","sortBy","desc","gridRentClickHandler","powerAgreementClickHandler","startCols","String","IsNotComplete","isConsumptionComplete","consumptionQuality","cols","maxConsumptionCol","monthlyCols","gridCost","gridGrossCost","powerAgreementCol","isPowerAgreementComplete","powerAgreementQuality","ConsumptionTypeChanger","consumptionTypeChangeHandler","ClockIcon","color","tooltip","CheckCircleIcon","ExclamationCircleIcon","ConsumptionPage","Section","Heading","button","updatedTime","Grid","Container","Item","Tag","HelpComponent","helpVideoUrl","helpText","title","frameBorder","allow","allowFullScreen","HelpModal","tagKeys","meteringKeys","propertyKeys","detailKeys","otherKeys","customerAddressesKeys","customerCommunicationsKeys","Details","isMeterLoading","meterError","meteringPoint","reloadObject","refetch","enabled","isCustomerLoading","customerError","onChangeName","log","_x","HeaderSection","MeteringSection","PropertySection","DetailsSection","CustomerDetailsSection","CustomerAddressesSection","CustomerCommunicationsSection","EditableText","onSubmit","setValue","editing","setEditing","autoFocus","EditableButtonWrapper","CheckIcon","PencilIcon","showHelpModal","setShowHelpModal","accessType","QuestionMarkCircleIcon","SyncDetailsButton","_useMutation","useMutation","promises","Promise","all","p","resolve","mutate","isSuccess","handleClick","_callee3","_context3","RefreshIcon","extendedStorage","_ref11","_customer$customerCom","communications","customerCommunications","comm","_ref12","_customer$customerAdd","addresses","customerAddresses","addr","includes","addressType","FooterNav","currentStep","prevStep","confirm","Step1","results","searchValue","searchPerformed","state","setState","preventDefault","nextStep","sumbitFormData","prevState","placeholder","Step2","otherContactAddress","submitData","required","Step3","Step4","Step5","accept","Step6","meterColumns","Step7","termsAgree","onClickPrevStep","step","WizardSteps","steps","activeStep","selectedStep","Enroll","activeTab","path","slice","renderStep","PeakGraph","measured","isPayable","isPeak","peak","measuredLastYear","payableAverage","payable","limitDown","limitUp","PeakTooltip","dot","PeakLegend","ConsumptionQuality","Peak","meteringpointPeakColumns","timestampCol","measuredCol","payableAverageCol","lastYearCol","SpotPrice","_data$spotPrices","_useTranslation","balanceAreaId","SumCompanyPage","AdvancedFormat","trendLines","_decimals","graphColours","ScatterPlot","weatherStations","dayData","weekdays","filter","isWeekend","isHoliday","weekends","allData","lastSevenWeekdayData","lastSevenWeekendData","weekData","thisWeekData","lastTwoWeeksData","monthData","thisMonthData","plotLookup","Scatter","week","hour","unparsedTrendLine","trendLine","capitalize","stationName","CustomTooltip","activeDot","legendType","_payload$","_payload$$payload","_payload$2","_payload$2$payload","_payload$3","_payload$3$payload","_payload$4","_payload$4$payload","_payload$5","_payload$5$payload","_payload$6","_payload$7","_payload$7$payload","str","lower","match","Dropdown","stopPropagation","option","DeviationsGraph","periodParent","yLabelDeviations","scrappedData","element","deviationPeriod","setDeviationPeriod","deviationData","lastMonth","last3Months","last6Months","lastYear","deviationScrappedData","setDeviationScrappedData","periodData","DeviationPeriodOptions","BarChart","DeviationTooltip","ETComponent","apiClient","isWeatherLoading","weatherError","windowChangeHandler","trend","trendLineSetter","ETPage","ETFelt","useInvoiceData","isFetching","invoices","TableData","ng","_ref$formatter","formatter","gross","FilesIndicicator","fileCount","DocumentDuplicateIcon","TableLabel","DeleteConfirmationDialog","_ref$title","cancelButtonRef","initialFocus","ExclamationIcon","langage","maximumFractionDigits","minimumFractionDigits","formatForInput","region","tempValue","AttributeLabel","InvoiceAttribute","unit","getMonthData","dateStr","formatNumberInput","input","NaN","checkNaN","makePostBody","userInvoiceId","fromDate","toDate","base64Files","file","base64","comment","elecInvoice","gridAmount","gridInvoice","spotGrossAmount","elecInvoiceGross","gridGrossAmount","gridInvoiceGross","applyInvoiceFromServerToInvoice","quantity","price","amount","rent","priceGross","amountGross","rentGross","totalGross","calculateAverage","calculateAverageGross","calculateAverageGridNett","calculateAverageGridGross","calculateAverageProfitNett","calculateAverageProfitGross","calculateAverageTotalNett","calculateAverageTotalGross","calculateElecDifferenceNett","calculateElecDifferenceGross","calculateGridDifferenceNett","calculateGridDifferenceGross","useInvoiceCalculator","average","gridDifference","elecDifference","averageProfit","averageGrid","averageTotal","TimeLabel","FileLabel","InvoiceCard","_ref$clickable","clickable","_ref$onClick","calculator","twoDecimals","fourDecimals","isValidYear","nextYear","Date","setFullYear","getFullYear","inputYear","test","isValidMonth","inputMonth","FileLink","typeLabel","invoiceType","buildFileURL","rel","fileId","PreviousFilesList","files","toBase64","reject","reader","FileReader","readAsDataURL","onload","parts","onerror","FileTypeSelect","filename","dataUrl","FileManager","selectedFiles","fileTypes","setFileTypes","_useDropzone","useDropzone","onDrop","handleSubmit","isDragActive","acceptedFiles","getRootProps","getInputProps","previousFiles","Array","fileName","_go","tmpFiles","URL","createObjectURL","t1","go","clone","onChooseFileType","Input","_ref4$showError","showError","errorMessage","Calculated","_ref5$formatter","FormHeader","FormButton","_ref7$isLoading","_ref7$disabled","Form","handleClose","queryClient","useQueryClient","showCommentBox","setShowCommentBox","disableSave","loadingInvoice","setLoadingInvoice","modifiedOriginalInvoice","setInvoice","unsavedFiles","setUnsavedFiles","mutation","invoiceForSubmission","invoiceBody","isValid","alert","onSuccess","invalidateQueries","findInvoice","dateString","monthlyInvoiceFromServer","applied","newMonth","InvoiceModal","InvoiceComponent","showNewInvoiceModal","setShowNewInvoiceModal","_useInvoiceData","deleteInvoiceMutation","setIsOpen","buildDefaultInvoice","getMonth","gridDiff","gridDiffGross","elecDiff","elecDiffGross","averageGross","MeterPopup","Popup","LightBulbIcon","StationPopup","LocationMarkerIcon","Permatip","lime","direction","opacity","permanent","Legend","useMap","legend","L","Control","onAdd","div","DomUtil","create","innerHTML","renderToStaticMarkup","CardList","addTo","remove","WeatherStationCard","station","CardDataItem","distance","stationId","CardListHeading","WeatherStations","staleTime","Infinity","isPlantLoading","plantError","plant","MapContainer","bounds","lat","lon","stationLat","stationLon","boundsOptions","padding","scrollWheelZoom","TileLayer","attribution","Marker","netOwnerName","PowerFactorGraph","plantId","z","q","cosPhi","x1","y1","x2","y2","stopColor","stopOpacity","PowerFactorTooltip","Area","PowerFactor","relativeTime","utc","Settings","payloadData","isPayloadLoading","userData","isUserDataLoading","diff","createdDate","val","setVal","inter","setInterval","clearInterval","leftColW","SettingItem","provider","eMail","mobilePhone","tenantName","oid","expiryDate","overflowWrap","navigator","clipboard","writeText","access_token","toast","success","o365ApiVersion","o365Api","solverApiVersion","solverApi","router","createBrowserRouter","createRoutesFromElements","Route","AppRoot","errorElement","Customers","SumCompany","SumBudget","Meters","ET","UploadInvoice","Budget","use","initReactI18next","init","resources","lng","fallbackLng","interpolation","escapeValue","QueryClient","defaultOptions","queries","refetchOnWindowFocus","ReactDOM","React","StrictMode","Toaster","QueryClientProvider","client","RouterProvider","fallbackElement","document","getElementById"],"mappings":"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","file":"static/js/main.c9669a9e.chunk.js","sourcesContent":["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 home from './home.json'\nimport global from './global.json'\nimport objects from './objects.json'\nimport consumption from './consumption.json'\nimport grid from './grid.json'\nimport deviations from './deviations.json'\nimport powerFactor from './powerFactor.json'\nimport et from './et.json'\n\nconst en = {\n consumption,\n global,\n home,\n objects,\n grid,\n deviations,\n powerFactor,\n et,\n}\n\nexport default en\n","import home from './home.json'\nimport global from './global.json'\nimport objects from './objects.json'\nimport consumption from './consumption.json'\nimport grid from './grid.json'\nimport deviations from './deviations.json'\nimport powerFactor from './powerFactor.json'\nimport et from './et.json'\n\nconst no = {\n consumption,\n global,\n home,\n objects,\n grid,\n deviations,\n powerFactor,\n et,\n}\n\nexport default no\n","import type { PropsWithChildren } from 'react'\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\n\ninterface AppState {\n showNett: boolean\n toggleShowNett: Function\n}\n\nconst AppStateContext = createContext({\n showNett: false,\n toggleShowNett: () => {},\n})\n\nconst AppStateContextProvider = ({ children }: PropsWithChildren) => {\n const [showNett, setShowNett] = useState(false)\n\n useEffect(() => {\n let nett = JSON.parse(localStorage.getItem('nett') as string)\n setShowNett(nett)\n }, [setShowNett])\n\n const toggleShowNett = useCallback(() => {\n setShowNett((s) => {\n let v = !s\n localStorage.setItem('nett', JSON.stringify(v))\n return v\n })\n }, [setShowNett])\n\n const data = useMemo(\n () => ({\n showNett: showNett,\n toggleShowNett: toggleShowNett,\n }),\n [toggleShowNett, showNett]\n )\n\n return (\n {children}\n )\n}\n\nconst useAppState = () => useContext(AppStateContext)\n\nexport { AppStateContextProvider, useAppState }\n","export const Spinner = () => (\n \n \n \n \n \n)\n\nexport default Spinner\n","import Spinner from '../Spinner'\n\nexport function FullScreenLoading() {\n return (\n
\n \n
\n )\n}\n\nexport function Loading() {\n return (\n
\n \n
\n )\n}\n","import { useRouteError } from 'react-router-dom'\n\nexport default function ErrorBoundary() {\n const error = useRouteError()\n\n console.error(error)\n\n return
There was an unexpected error.
\n}\n","import { Invoice } from 'src/components/InvoiceComponent/types'\n\nimport {\n MeteringPointConsumptionCost,\n MeteringPointDetails,\n MeteringPointOverview,\n Object,\n MeteringPointBudgetOverview,\n MeteringPointCustomer,\n MeteringPointWeatherStation,\n Customer,\n CustomerOverview,\n CustomerMeteringPointOverview,\n CustomerMeteringPoint,\n MeteringPointGridCost,\n MeteringPointPeak,\n ETChart,\n MeteringPointPowerFactor,\n SolverUser,\n MeteringPointPowerAgreementCost,\n} from 'src/generated/client'\n\nenum HTTP_Method {\n GET = 'GET',\n POST = 'POST',\n PUT = 'PUT',\n DELETE = 'DELETE',\n}\n\nclass APIClient {\n _request = (\n url: string,\n method: HTTP_Method,\n body?: any,\n checkAuth: boolean = true\n ) => {\n let headers = undefined\n if (body != null) {\n headers = {\n 'Content-Type': 'application/json; charset=utf-8',\n }\n }\n\n return fetch(url, {\n method: method,\n headers: headers,\n body: body != null ? JSON.stringify(body) : null,\n }).then((res) => {\n if (checkAuth && res.status === 401) {\n window.location.href = '/Login'\n } else {\n if (res.status !== 500) return res.json()\n\n throw new Error('Something went wrong.')\n }\n })\n }\n\n // --- Objects ---\n getObjects = (): Promise => {\n return this._request('/objects', HTTP_Method.GET)\n }\n\n setObjectName = (objectId: any, name: any): Promise => {\n const cleanName = encodeURIComponent(name)\n return this._request(\n `/api/object/rename/${objectId}/${cleanName}`,\n HTTP_Method.PUT\n )\n }\n\n // --- Users ---\n getAccount = (): Promise => {\n return this._request('/Account', HTTP_Method.GET)\n }\n\n getSessionAlive = (): Promise => {\n return fetch('/api/session/alive', { method: HTTP_Method.GET }).then(\n (res) => {\n if (res.status !== 200) {\n throw new Error('')\n }\n }\n )\n }\n\n getMe = (): Promise => {\n return this._request('/api/users/me', HTTP_Method.GET)\n }\n\n // --- Meters\n getMeter = (meterId: any): Promise => {\n return this._request(`/api/object/${meterId}`, HTTP_Method.GET)\n }\n getUserSettings = (): Promise => {\n return this._request(`/home/UserSettings`, HTTP_Method.GET)\n }\n\n getMetersOverview = (): Promise => {\n return this._request('/home/JSONObjectMetersOverview', HTTP_Method.GET)\n }\n\n getWindProduction = (areaId: any): Promise => {\n return this._request(\n '/home/JSONObjectDailyWindProduction?balanceArea=' + areaId,\n HTTP_Method.GET\n )\n }\n\n getGridCost = (\n objectId: string,\n start: string,\n end: string,\n aggregationType?: string\n ): Promise => {\n return this._request(\n `/home/JSONObjectMeteringPointGridCost?objectId=${objectId}&from=${start}&to=${end}&aggregationType=${aggregationType}`,\n HTTP_Method.GET\n )\n }\n\n getPowerAgreementCost = (\n objectId: string,\n start: string,\n end: string,\n aggregationType?: string\n ): Promise => {\n return this._request(\n `/home/JSONObjectMeteringPointPowerAgreementCost?objectId=${objectId}&from=${start}&to=${end}&aggregationType=${aggregationType}`,\n HTTP_Method.GET\n )\n }\n getCustomerPowerAgreementCost = (\n customerId: string,\n start: string,\n end: string,\n aggregationType?: string\n ): Promise => {\n return this._request(\n `/home/JSONObjectCustomerPowerAgreementCost?customerId=${customerId}&from=${start}&to=${end}&aggregationType=${aggregationType}`,\n HTTP_Method.GET\n )\n }\n\n getConsumption = (\n objectId: string,\n start: string,\n end: string,\n freq: string\n ): Promise => {\n return this._request(\n `/home/JSONObjectMonthlyCost?objectId=${objectId}&from=${start}&to=${end}&aggregationType=${freq}`,\n HTTP_Method.GET\n )\n }\n\n getMeteringPointSpotPrice = (\n objectId: string,\n start: string,\n end: string,\n freq: string\n ): Promise => {\n return this._request(\n `/home/JSONObjectMeteringPointSpotPrice?objectId=${objectId}&from=${start}&to=${end}&aggregationType=${freq}`,\n HTTP_Method.GET\n )\n }\n\n getMeteringPointBudget(\n objectId: string,\n start: string,\n end: string\n ): Promise {\n return this._request(\n `/home/JSONObjectMeteringPointBudget?objectId=${objectId}&from=${start}&to=${end}`,\n HTTP_Method.GET\n )\n }\n\n getMeteringPointETChart = (\n objectId: string,\n start: string,\n end: string,\n freq: string,\n felt: boolean\n ): Promise => {\n return this._request(\n `/home/JSONObjectMeteringPointETChart?objectId=${objectId}&from=${start}&to=${end}&aggregationType=${freq}&feltTemperature=${felt}`,\n HTTP_Method.GET\n )\n }\n\n getMeteringPointPowerFactor = (\n objectId: string,\n start: string,\n end: string,\n freq: string\n ): Promise => {\n return this._request(\n `/home/JSONObjectMeteringPointPowerFactor?objectId=${objectId}&from=${start}&to=${end}&aggregationType=${freq}`,\n HTTP_Method.GET\n )\n }\n\n getMeteringPointPeak = (\n objectId: string,\n start: string,\n end: string,\n aggregationType: string\n ): Promise => {\n return this._request(\n `/home/JSONObjectMeteringPointPeak?objectId=${objectId}&from=${start}&to=${end}&aggregationType=${aggregationType}`,\n HTTP_Method.GET\n )\n }\n\n getPlant = (objectId: any): Promise => {\n return this._request('/api/meter/' + objectId, HTTP_Method.GET)\n }\n\n getPlantSummary = (objectId: any): Promise => {\n return this._request(`/api/meter/${objectId}/summary`, HTTP_Method.GET)\n }\n\n syncPlant = (objectId: any): Promise<{ actionStatus: string }> => {\n return this._request(`/api/meter/${objectId}/plant/sync`, HTTP_Method.GET)\n }\n\n saveInvoice = (objectId: any, invoice: any): Promise => {\n return this._request(\n `/api/object/${objectId}/invoice`,\n HTTP_Method.POST,\n invoice\n )\n }\n\n deleteInvoice = (objectId: any, userSharedInvoiceId: any): Promise => {\n return this._request(\n `/api/object/${objectId}/invoice?userSharedInvoiceId=${userSharedInvoiceId}`,\n HTTP_Method.DELETE\n )\n }\n\n getInvoices = (objectId: any): Promise => {\n return this._request(`/api/object/${objectId}/invoice`, HTTP_Method.GET)\n }\n\n // --- Customers\n getCustomer = (customerId: any): Promise => {\n return this._request(\n `/home/JSONObjectCustomer?customerId=${customerId}`,\n HTTP_Method.GET\n )\n }\n\n getCustomerMeteringPointOverview(\n customerId: any\n ): Promise {\n return this._request(\n `/home/JSONObjectCustomerMeteringPointOverview?customerId=${customerId}`,\n HTTP_Method.GET\n )\n }\n\n getCustomerMeteringPoint(): Promise {\n return this._request(\n `/home/JSONObjectCustomerMeteringPoint`,\n HTTP_Method.GET\n )\n }\n\n getCustomerOverview = (): Promise => {\n return this._request(`/home/JSONObjectCustomerOverview`, HTTP_Method.GET)\n }\n\n getMeterCustomer = (objectId: any): Promise => {\n return this._request('/api/meter/customer/' + objectId, HTTP_Method.GET)\n }\n\n syncCustomer = (objectId: any): Promise<{ actionStatus: string }> => {\n return this._request(\n `/api/meter/${objectId}/customer/sync`,\n HTTP_Method.GET\n )\n }\n getCustomerBudget(\n customerId: string,\n start: string,\n end: string\n ): Promise {\n return this._request(\n `/home/JSONObjectCustomerBudget?customerId=${customerId}&from=${start}&to=${end}`,\n HTTP_Method.GET\n )\n }\n\n getCustomerCost = (\n customerId: string,\n start: string,\n end: string,\n freq: string\n ): Promise => {\n return this._request(\n `/home/JSONObjectCustomerCost?customerId=${customerId}&from=${start}&to=${end}&aggregationType=${freq}`,\n HTTP_Method.GET\n )\n }\n\n getCustomerGridCost = (\n customerId: string,\n start: string,\n end: string,\n aggregationType?: string\n ): Promise => {\n return this._request(\n `/home/JSONObjectCustomerGridCost?customerId=${customerId}&from=${start}&to=${end}&aggregationType=${aggregationType}`,\n HTTP_Method.GET\n )\n }\n\n // --- Prices ---\n getSystemPrice = (): Promise => {\n return this._request(\n '/home/JSONObjectDailyPxPrice?balanceArea=SYS',\n HTTP_Method.GET\n )\n }\n\n getPoolPrice = (areaId: any): Promise => {\n return this._request(\n '/home/JSONObjectDailyPxPrice?balanceArea=' + areaId,\n HTTP_Method.GET\n )\n }\n\n getLatestSystemPrices = (): Promise => {\n return this._request(\n '/home/JSONObjectPXPriceLastDays?balanceArea=SYS',\n HTTP_Method.GET\n )\n }\n\n getLatestPoolPrices = (areaId: any): Promise => {\n return this._request(\n '/home/JSONObjectPXPriceLastDays?balanceArea=' + areaId,\n HTTP_Method.GET\n )\n }\n\n // -- Weather Stations\n getWeatherStations = (\n objectId: any\n ): Promise => {\n return this._request('/api/meter/weather/' + objectId, HTTP_Method.GET)\n }\n}\n\nexport default new APIClient()\n","import type { ComponentPropsWithRef } from 'react'\nimport { forwardRef } from 'react'\nimport cn from 'classnames'\nimport { CircleBackslashIcon, UpdateIcon } from '@radix-ui/react-icons'\n\nimport type { HeroIcon, RadixIcon } from 'src/types'\nimport { actionStyles } from '../actionStyles'\n\nexport const Button = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithRef<'button'> & { className?: string }\n>((props, ref) => {\n return (\n \n {props.children}\n \n )\n})\n\nexport type ActionButtonProps = ComponentPropsWithRef<'button'> & {\n isSubmitting?: boolean\n submittingText?: string\n iconClassName?: string\n Icon?: RadixIcon | HeroIcon\n}\n\nexport const ActionButton = forwardRef(\n ({ isSubmitting, submittingText, Icon, iconClassName, ...props }, ref) => {\n return (\n \n )\n }\n)\n\nexport default Button\n","export const actionStyles =\n 'border disabled:cursor-not-allowed inline-flex items-center space-x-2 rounded-lg px-2 py-2 hover:bg-gray-50 font-medium text-sm focus:ring-1 focus:ring-opacity-90'\n","import { forwardRef } from 'react'\nimport cn from 'classnames'\nimport { ActionButton, type ActionButtonProps } from './Button'\n\nexport const PrimaryButton = forwardRef(\n ({ className, ...props }, ref) => {\n return (\n \n {props.children}\n \n )\n }\n)\n","import { type ComponentPropsWithRef, forwardRef } from 'react'\nimport { XIcon } from '@heroicons/react/outline'\n\nexport const CloseButton = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithRef<'button'> & { className?: string }\n>((props, ref) => {\n return (\n \n )\n})\n","import { useState } from 'react'\nimport { GlobeAltIcon } from '@heroicons/react/solid'\nimport { PrimaryButton } from 'src/components/action'\n\ninterface LanguageToggleProps {\n language: string\n translate: (lang: string) => void\n}\n\ntype language = string\n\nconst LanguageToggleComponent = (props: LanguageToggleProps) => {\n const [language, setLanguage] = useState(props.language)\n\n const onSetLanguage = () => {\n let lang = language\n if (lang === 'en') {\n lang = 'no'\n } else {\n lang = 'en'\n }\n setLanguage(lang)\n props.translate(lang)\n }\n\n return (\n \n {language.toUpperCase()}\n \n )\n}\n\nexport default LanguageToggleComponent\n","import { CashIcon } from '@heroicons/react/solid'\nimport { useTranslation } from 'react-i18next'\nimport { useAppState } from 'src/context/appstate'\nimport { PrimaryButton } from 'src/components/action'\n\nconst NettToggleComponent = () => {\n const { showNett, toggleShowNett } = useAppState()\n const { t } = useTranslation()\n\n return (\n toggleShowNett()} Icon={CashIcon}>\n \n {showNett ? t('home:nettPrice') : t('home:grossPrice')}\n \n \n )\n}\n\nexport default NettToggleComponent\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPopper } from '@popperjs/core'\nimport { useTranslation } from 'react-i18next'\n\ntype Props = {\n externalVisibiltyToggle: number\n dropdownButtonReference: any\n}\n\nexport function UserDropdown(props: Props) {\n // --- Variables ---\n const dropdownMenuReference = useRef()\n const { t } = useTranslation()\n const [visible, setVisible] = useState(false)\n\n // --- Functionality ---\n const toggleVisibility = useCallback(\n (newState: boolean) => {\n setVisible(newState)\n createPopper(\n props.dropdownButtonReference.current,\n dropdownMenuReference.current,\n { placement: 'bottom-end' }\n )\n },\n [props.dropdownButtonReference]\n )\n\n // --- Setup ---\n useEffect(() => {\n if (props.externalVisibiltyToggle !== 0) {\n toggleVisibility(!visible)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.externalVisibiltyToggle])\n\n // --- Response\n return (\n
\n toggleVisibility(!visible)}\n />\n \n
\n (window.location.pathname = '/api/logout')}\n >\n {t('global:logout')}\n

\n
\n
\n \n )\n}\n\nexport default UserDropdown\n","import { useEffect, useRef, useState, Fragment } from 'react'\nimport { Disclosure } from '@headlessui/react'\nimport {\n MenuAlt3Icon as Bars3Icon,\n XIcon as XMarkIcon,\n CogIcon,\n} from '@heroicons/react/outline'\nimport { useLocation, useNavigate } from 'react-router-dom'\n\nimport LanguageToggleComponent from '../../components/LanguageToggleComponent'\nimport NettToggleComponent from '../../components/NettToggleComponent'\nimport { UserDropdown } from '../../components/UserDropdown'\nimport { PrimaryButton } from 'src/components/action'\nimport { useTranslation } from 'react-i18next'\n\nexport interface UserContainer {\n userName: string\n displayName: string\n eMail: string\n initials?: string | null\n}\n\ninterface NavBarComponentProps {\n user?: UserContainer\n isLoading?: boolean\n}\n\nexport function Navbar(props: NavBarComponentProps) {\n // --- Variables ---\n const { t } = useTranslation()\n const dropdownButtonReference = useRef()\n const [language, setLanguage] = useState()\n // const [dropdownVisibility] = useState(0)\n const dropdownVisibility = 0\n const navigate = useNavigate()\n const location = useLocation()\n\n // --- Functionality ---\n // const updateVisibility = useCallback(() => {\n // if (dropdownVisibility < 100) setDropdownVisibility(dropdownVisibility + 1)\n // else setDropdownVisibility(1)\n // }, [dropdownVisibility])\n\n // --- Setup ---\n useEffect(() => {\n let lang = localStorage.getItem('lang') as string\n setLanguage(lang)\n }, [setLanguage])\n\n const goHome = () => navigate(`/App`)\n\n const handleCogButtonClick = () => {\n if (location.pathname === '/App/Settings') {\n navigate(-1)\n } else {\n navigate('/App/Settings')\n }\n }\n\n // --- Response ---\n\n return (\n \n {({ open }) => (\n <>\n
\n
\n
\n \n \n
\n
\n
\n \n\n \n \n

\n {props.user && props.user.displayName}\n

\n
\n

\n {props.user && props.user.userName}\n

\n
\n
\n handleCogButtonClick()}\n >\n \n \n\n \n\n {language != null ? (\n {\n localStorage.setItem('lang', language)\n window.location.reload()\n }}\n />\n ) : null}\n
\n
\n \n Open main menu\n {open ? (\n \n ) : (\n \n )}\n \n
\n \n \n\n \n
\n
\n
\n
\n {props.user && props.user.displayName}\n
\n
\n {props.user && props.user.userName}\n
\n
\n handleCogButtonClick()}\n >\n \n \n
\n
\n \n\n {language != null ? (\n {\n localStorage.setItem('lang', language)\n window.location.reload()\n }}\n />\n ) : null}\n\n (window.location.pathname = '/api/logout')}\n >\n {t('global:logout')}\n \n
\n
\n
\n \n )}\n
\n )\n}\n","import { useQuery } from '@tanstack/react-query'\nimport { Outlet } from 'react-router-dom'\nimport APIClient from 'src/utils/apiClient'\nimport { Navbar, UserContainer } from 'src/components/Navbar'\nimport { getInitials } from 'src/utils'\n\nexport default function Root() {\n const { data, isLoading, error } = useQuery(\n ['account'],\n async (): Promise => {\n return await getUserOrLogin()\n }\n )\n\n if (error) return

Error loading user. Check console.

\n\n return (\n <>\n \n
\n \n
\n \n )\n}\n\nconst getUserOrLogin = async (): Promise => {\n try {\n let user = await APIClient.getAccount()\n\n return {\n ...user,\n initials: getInitials(user.name),\n }\n } catch {\n window.location.href = `/Login?redirect_to=${encodeURIComponent(\n window.location.pathname\n )}`\n }\n}\n","export function processColumns(columns: Array, data: Array) {\n let columnIndex = 0\n for (let td in data[0]) {\n if (typeof data[0][td] === 'number' && !('Cell' in columns[columnIndex])) {\n columns[columnIndex]['Cell'] = (props: any) => (\n <>{props.value.toLocaleString('en-IN')}\n )\n }\n columnIndex++\n }\n return columns\n}\n\nexport function getInitials(value?: string) {\n if (value != null) {\n return value\n .split(' ')\n .map((s) => (s.trim().length > 0 ? s.trim()[0].toUpperCase() : null))\n .join('')\n }\n return null\n}\n","import cn from 'classnames'\n\ntype Props = {\n className?: string\n children?: any\n}\n\nexport function Card({ children, className }: Props) {\n return (\n
\n
\n
\n
{children}
\n
\n
\n
\n )\n}\n","export default \"data:image/png;base64,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\"","import { useCallback } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport { Card } from 'src/components/Card'\nimport msSymbol from '../images/ms-symbollockup_signin_light.png'\nimport vibbsSymbol from '../images/log_in_with_vipps_rect_210_NO.png.png'\n\nconst Login = () => {\n const location = useLocation()\n const redirectToLogin = useCallback(\n (loginSource) => {\n window.location.href = `/Login/${loginSource + location.search}`\n },\n [location.search]\n )\n\n return (\n
\n \n
\n
\n

\n Strømradar Portal\n

\n
\n\n
\n redirectToLogin('MsLogin')}\n >\n \"microsoftLogin\"\n \n
\n
\n redirectToLogin('VippsLogin')}\n >\n \"vippsLogin\"\n \n
\n
\n
\n
\n )\n}\n\nexport default Login\n","export default \"data:image/png;base64,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\"","import { PropsWithChildren, useMemo } from 'react'\nimport { Column, useExpanded, useSortBy, useTable } from 'react-table'\nimport { ChevronUpIcon, ChevronDownIcon } from '@heroicons/react/solid'\nimport cn from 'classnames'\n\nexport type TableProps = {\n onRowClick?: any\n data: Array | undefined\n columns: Array\n enableSorting?: boolean\n hideHeaders?: boolean\n initialState?: any\n loading?: boolean\n loadingPlaceholderRows?: number\n trStyleOverride?: string | undefined\n tdStyleOverride?: string | undefined\n thStyleOverride?: string | undefined\n tableStyleOverride?: string | undefined\n}\n\nexport function Table(props: TableProps) {\n const data = useMemo(() => props.data || [1, 2, 3], [props.data])\n const columns = useMemo(() => props.columns, [props.columns])\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n footerGroups,\n prepareRow,\n } = useTable(\n // @ts-ignore\n {\n columns,\n data,\n disableSortBy: !props.enableSorting,\n initialState: props.initialState,\n },\n useSortBy,\n useExpanded\n )\n\n return (\n \n \n {/* \n \n \n Name\n \n \n Title\n \n \n Email\n \n \n Role\n \n \n Edit\n \n \n */}\n \n {\n // Loop over the header rows\n headerGroups.map((headerGroup) => (\n // Apply the header row props\n \n {\n // Loop over the headers in each row\n headerGroup.headers.map((column, i) => (\n // Apply the header cell props\n \n {\n // Render the header\n column.render('Header')\n }{' '}\n \n {' '}\n {column.isSorted ? (\n column.isSortedDesc ? (\n \n ) : (\n \n )\n ) : (\n ''\n )}{' '}\n \n \n ))\n }\n \n ))\n }\n \n {/* Apply the table body props */}\n\n \n {\n // Loop over the table rows\n rows.map((row) => {\n // Prepare the row for display\n prepareRow(row)\n return (\n // Apply the row props\n \n {\n // Loop over the rows cells\n row.cells.map((cell, i) => (\n \n !props.loading ? props.onRowClick(row.original) : null\n } // @ts-ignore\n // className={`whitespace-nowrap border-t-2 border-b-2 border-gray-100 py-2 pl-0 text-left first:min-h-full first:max-w-lg ${props.tdStyleOverride} ${cell.column.className}`}\n className={cn(\n 'whitespace-nowrap py-2 text-sm',\n i === 0\n ? 'pl-4 pr-3 font-medium text-gray-900 sm:pl-6 md:pl-0'\n : 'px-3 text-gray-800',\n props.tdStyleOverride,\n // @ts-ignore\n cell.column.className\n )}\n {...cell.getCellProps()}\n >\n {\n // Render the cell contents\n props.loading\n ? cell.render('Loader')\n : cell.render('Cell')\n }\n \n ))\n }\n \n )\n })\n }\n \n\n \n {footerGroups.map((group) => (\n \n {group.headers.map((column, i) => (\n \n {!props.loading && column.render('Footer')}\n \n ))}\n \n ))}\n \n \n \n )\n}\n\nfunction TableWrapper({ children }: PropsWithChildren) {\n return (\n
\n
\n
\n {children}\n
\n
\n
\n )\n}\n","import { useMemo } from 'react'\n\ntype Props = {\n min: number\n max: number\n className?: string\n}\n\nexport function TextPlaceholder(props: Props) {\n const text = useMemo(() => {\n return 'a'.repeat(props.min + Math.random() * (props.max - props.min))\n }, [props])\n\n return (\n \n {text}\n \n )\n}\n","import NumberFormat from 'react-number-format'\n\ninterface FormatNumberProps {\n number: any\n decimals?: number\n}\n\nconst FormatNumber = ({ number, decimals }: FormatNumberProps) => {\n if (number === null || isNaN(number)) {\n return -\n }\n\n let float = number\n\n if (typeof number !== 'number') {\n let parsedFloat = parseFloat(number)\n\n if (isNaN(parsedFloat)) {\n float = 0\n } else {\n float = parsedFloat\n }\n }\n\n return (\n \n )\n}\n\nexport default FormatNumber\n","export const reformArray = (array: Array) => {\n var newArray: Array = []\n\n let group = array.reduce((r: any, a: any) => {\n r[a.label] = [...(r[a.label] || []), a]\n return r\n }, {})\n\n const values: any = Object.values(group)\n\n for (let i = 0; i < values.length; i++) {\n var object: any = {}\n for (let j = 0; j < values[i].length; j++) {\n object[values[i][j].key] = values[i][j].value\n }\n object.timestamp = values[i][0].label\n\n var clean = object.timestamp.toLowerCase().trim()\n if (clean !== 'timestamp' && clean.length > 0) {\n newArray.push(object)\n }\n }\n\n return newArray\n}\n\nexport const formatTimestamp = (time: any) => {\n var timeToFormat = time\n timeToFormat = timeToFormat.split('00-00-00')[0]\n\n return timeToFormat\n}\n\nexport const getFooterForColumn: any = (\n formula: string,\n data: Array,\n key: string\n) => {\n var num: number = 0\n\n if (data.length === 1) return data[0][key]\n\n switch (formula.toLowerCase()) {\n case 'average':\n var sum = 0\n\n for (let i = 0; i < data.length; i++) {\n var numberCheck =\n typeof data[i][key] === 'number'\n ? data[i][key]\n : parseFloat(data[i][key])\n sum = sum + numberCheck\n }\n num = sum / data.length\n break\n\n case 'sum':\n num = 0\n data.forEach((a: any) => {\n if (!isNaN(parseFloat(a[key]))) {\n num += +parseFloat(a[key])\n }\n })\n break\n }\n\n return num\n}\n","import { useTranslation } from 'react-i18next'\n\nconst NoMeterPlaceholder = () => {\n const { t } = useTranslation()\n return (\n
\n

{t('home:placeholderText.line1')}

\n

{t('home:placeholderText.line2')}

\n

\n {t('home:placeholderText.line3')}\n \n {t('home:placeholderText.linkText')}\n \n .\n

\n
\n )\n}\n\nexport default NoMeterPlaceholder\n","import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useQuery } from '@tanstack/react-query'\nimport { Table } from 'src/components/Table'\nimport APIClient from '../utils/apiClient'\nimport dayjs from 'dayjs'\nimport { TextPlaceholder } from 'src/components/TextPlaceholder'\nimport FormatNumber from './FormatNumber'\nimport { getFooterForColumn } from '../utils/helpers/helpers'\nimport { useAppState } from '../context/appstate'\n\ntype GridCostProps = {\n queryType: 'customer' | 'meter'\n objectId?: string\n customerId?: string\n query?: any\n start: any\n end: any\n aggregationType?: string\n}\n\n// \"plantId\": 22,\n// \"fromDate\": \"2021-04-01T00:00:00\",\n// \"toDate\": \"2021-05-01T00:00:00\",\n// \"elementDescription\": \"Forbruksavgift\",\n// \"price\": 0.1669,\n// \"quantity\": 358.835,\n// \"amount\": 59.8895,\n// \"vat\": 0.250\n\nconst GridCostComponent = (props: GridCostProps) => {\n const { t } = useTranslation()\n const { showNett } = useAppState()\n const { queryType, objectId, customerId, start, end, aggregationType } = props\n\n const { isLoading, data, error } = useQuery(\n [`gridCost`, queryType, objectId, customerId, start, end, aggregationType],\n async () => {\n const s = dayjs(props.start).format('YYYY-MM-DD')\n const e = dayjs(props.end).format('YYYY-MM-DD')\n if (props.queryType === 'customer' && customerId) {\n return APIClient.getCustomerGridCost(customerId, s, e, aggregationType)\n } else if (objectId) {\n return APIClient.getGridCost(objectId, s, e, aggregationType)\n }\n }\n )\n\n const consumptionColumns = useMemo(\n () => [\n {\n Header: t('grid:description'),\n accessor: 'elementDescription',\n Loader: (props: any) => ,\n },\n {\n Header: t('grid:from'),\n accessor: 'fromDate',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n

\n {dayjs(props.cell.value).format('DD.MM.YYYY')}\n

\n )\n },\n },\n {\n Header: t('grid:to'),\n accessor: 'toDate',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n

\n {dayjs(props.cell.value).format('DD.MM.YYYY')}\n

\n )\n },\n },\n {\n Header: t('objects:tableModalHeaders.quantity'),\n accessor: 'quantity',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n <>\n

\n \n

\n \n )\n },\n },\n {\n Header: t('objects:tableModalHeaders.unit'),\n accessor: 'unit',\n Loader: (props: any) => ,\n },\n {\n Header: t('objects:tableModalHeaders.price'),\n accessor: showNett ? 'price' : 'grossPrice',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n <>\n

\n = 1 ? 2 : 4}\n />\n

\n \n )\n },\n },\n {\n Header: t('objects:tableModalHeaders.amount'),\n accessor: showNett ? 'amount' : 'grossAmount',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n <>\n

\n \n

\n \n )\n },\n Footer: ({ data }: any) => {\n var num = getFooterForColumn(\n 'sum',\n data,\n showNett ? 'amount' : 'grossAmount'\n )\n return (\n

\n \n

\n )\n },\n },\n // {\n // Header: t('grid:vat'),\n // accessor: 'vat',\n // Loader: (props: any) => ,\n // Cell: (props: any) => {\n // return `${props.cell.value * 100}`\n // },\n // },\n ],\n [showNett, t]\n )\n\n if (error) {\n console.error(error)\n return

Error. Check console.

\n }\n\n return (\n
\n {/*
\n \n {t('consumption:forMonth')}:{' '}\n \n {dayjs(props.start).format('MMMM YYYY')}\n
*/}\n\n {}}\n tableStyleOverride=\"ml-6 md:ml-0 table-fixed md:table-auto pb-0\"\n trStyleOverride=\"cursor-auto\"\n thStyleOverride=\"first:text-left text-right text-xs text-gray-500 font-medium\"\n tdStyleOverride=\"first:text-left text-right px-3 first:w-10 first:max-w-lg first:w-96\"\n />\n
\n )\n}\n\nexport default GridCostComponent\n","import { Fragment } from 'react'\nimport { Dialog, Transition } from '@headlessui/react'\nimport GridCostComponent from '../GridCostComponent'\nimport { useTranslation } from 'react-i18next'\nimport { CloseButton } from 'src/components/action'\ninterface GridRentModalProps {\n isOpen: boolean\n onClose: () => void\n objectId?: string\n customerId?: string\n start: string\n end: string\n queryType: 'customer' | 'meter' // so we know which query to run in the GridRentModal\n aggregationType?: string\n}\n\nconst GridRentModal = ({\n isOpen,\n onClose,\n objectId,\n customerId,\n start,\n end,\n queryType,\n aggregationType,\n}: GridRentModalProps) => {\n const { t } = useTranslation()\n return (\n \n \n
\n {/* */}\n \n {/* */}\n\n {/* This element is to trick the browser into centering the modal contents. */}\n \n ​\n \n \n
\n
\n
\n
\n \n {t('consumption:gridRent')}\n \n
\n \n
\n \n
\n
\n \n
\n \n
\n )\n}\n\nexport default GridRentModal\n","import { useCallback, useEffect, useMemo, useState } from 'react'\nimport { Table } from 'src/components/Table'\nimport { useTranslation, withTranslation } from 'react-i18next'\nimport { useQuery } from '@tanstack/react-query'\nimport APIClient from '../utils/apiClient'\nimport { Card } from 'src/components/Card'\nimport { TextPlaceholder } from 'src/components/TextPlaceholder'\nimport { useNavigate } from 'react-router-dom'\nimport FormatNumber from '../components/FormatNumber'\nimport { getFooterForColumn } from '../utils/helpers/helpers'\nimport dayjs from 'dayjs'\nimport { useAppState } from 'src/context/appstate'\nimport NoMeterPlaceholder from 'src/components/NoMeterPlaceholder'\nimport GridRentModal from 'src/components/Consumption/GridRentModal'\nimport { CustomerMeteringPoint } from 'src/generated/client'\n\nconst CustomersPage = () => {\n const { t } = useTranslation()\n const { showNett } = useAppState()\n const navigate = useNavigate()\n const [gridRentCustomerID, setGridRentCustomerID] = useState('')\n const [showGridRentModal, setShowGridRentModal] = useState(false)\n const [gridRentFromDate, setGridRentFromDate] = useState('')\n const [gridRentToDate, setGridRentToDate] = useState('')\n\n const { isLoading, data } = useQuery(['customers'], () =>\n APIClient.getCustomerOverview()\n )\n const {\n isLoading: isCustomerMeteringPointLoading,\n data: customerMeteringPoint,\n } = useQuery(['customerMeteringPoints'], () =>\n APIClient.getCustomerMeteringPoint()\n )\n\n useEffect(() => {\n if (customerMeteringPoint?.length === 1) {\n if (customerMeteringPoint[0].objectIds?.length === 1) {\n navigate(\n `/App/Meters/${customerMeteringPoint[0].objectIds[0]}/Consumption`\n )\n } else {\n navigate(\n `/App/Customers/${customerMeteringPoint[0].customerId}/SumCompany`\n )\n }\n }\n }, [customerMeteringPoint, navigate])\n\n const gridRentClickHandler = (customerId: string) => {\n setGridRentCustomerID(customerId)\n setShowGridRentModal(true)\n setGridRentFromDate(\n dayjs().subtract(1, 'month').startOf('month').format('YYYY-MM-DD')\n )\n setGridRentToDate(dayjs().startOf('month').format('YYYY-MM-DD'))\n }\n\n const rowClickHandler = useCallback(\n (\n customerMeteringpoint: CustomerMeteringPoint[] | undefined,\n customerId: number\n ) => {\n const result = customerMeteringpoint?.find((obj) => {\n return obj.customerId === customerId\n })\n if (result) {\n if (result.objectIds?.length === 1) {\n navigate(`/App/Meters/${result.objectIds[0]}`)\n } else {\n navigate(`/App/Customers/${customerId}/SumCompany`)\n }\n }\n },\n [navigate]\n )\n\n const columns = useMemo(\n () => [\n //Customer Name\n {\n Header: t('home:tableHeaders.customerName'),\n accessor: 'customerName',\n sortType: 'basic',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const id = props.row.original.customerId\n\n return (\n rowClickHandler(customerMeteringPoint, id)}\n >\n {props.cell.value}\n

\n )\n },\n Footer: ({ data }: any) => {\n return (\n <>\n

\n {`${data.length} ${t('home:customers')}`}\n

\n \n )\n },\n },\n\n //Plant Count\n {\n Header: t('home:tableHeaders.plantCount'),\n accessor: 'plantCount',\n Loader: (props: any) => ,\n sortType: 'basic',\n Footer: ({ data }: any) => {\n var totalMeters = 0\n for (var i = 0; i < data.length; i++) {\n totalMeters += +data[i].plantCount\n }\n return (\n <>\n

\n {`${totalMeters} ${t('objects:meters')}`}\n

\n \n )\n },\n },\n\n //Consumption\n {\n Header: `${t('home:tableHeaders.consumption')} (kWh)`,\n accessor: 'consumption',\n sortType: 'basic',\n className: 'text-right',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n \n rowClickHandler(\n customerMeteringPoint,\n props.row.original.customerId\n )\n }\n >\n \n

\n )\n },\n Footer: ({ data }: any) => {\n var num = getFooterForColumn('sum', data, 'consumption')\n return (\n <>\n

\n \n

\n \n )\n },\n },\n\n //Spot Cost\n {\n Header: t('home:tableHeaders.spotCost'),\n accessor: showNett ? 'spotCost' : 'spotGrossCost',\n sortType: 'basic',\n className: 'text-right',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n \n rowClickHandler(\n customerMeteringPoint,\n props.row.original.customerId\n )\n }\n >\n \n

\n )\n },\n Footer: ({ data }: any) => {\n const selector = showNett ? 'spotCost' : 'spotGrossCost'\n const num = getFooterForColumn('sum', data, selector)\n return (\n <>\n

\n \n

\n \n )\n },\n },\n\n //Grid cost\n {\n Header: t('home:tableHeaders.gridCost'),\n accessor: showNett ? 'gridCost' : 'gridGrossCost',\n sortType: 'basic',\n className: 'text-right',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n \n gridRentClickHandler(props.row.original.customerId)\n }\n className=\"cursor-pointer text-right tracking-wider hover:underline\"\n >\n \n

\n )\n },\n Footer: ({ data }: any) => {\n const selector = showNett ? 'gridCost' : 'gridGrossCost'\n const num = getFooterForColumn('sum', data, selector)\n return (\n <>\n

\n \n

\n \n )\n },\n },\n ],\n [showNett, customerMeteringPoint, rowClickHandler, t]\n )\n\n return (\n
\n
\n
\n
{t('home:allCustomers')}
\n \n {data?.length === 0 ? (\n \n ) : (\n null}\n tableStyleOverride=\"table-fixed md:table-auto block md:table absolute md:relative\"\n tdStyleOverride=\"px-3 first:max-w-lg first:min-h-full border-gray-100 border-t-2 border-b-2 text-gray-600\"\n thStyleOverride=\"text-base text-gray-500 font-medium\"\n />\n )}\n \n setShowGridRentModal(false)}\n start={gridRentFromDate}\n end={gridRentToDate}\n aggregationType=\"month\"\n />\n
\n
\n
\n )\n}\n\nexport default withTranslation('no')(CustomersPage)\n","import { useLocation, NavLink, useNavigate } from 'react-router-dom'\nimport cn from 'classnames'\n\ntype Tab = {\n label: string\n url: string\n hiddenOnMobile?: boolean\n}\n\nexport function Tabs({ tabs, prefix = '' }: { tabs: Tab[]; prefix?: string }) {\n const { pathname } = useLocation()\n const navigate = useNavigate()\n\n function isActive(tab: Tab) {\n const fullUrl = `${prefix}${tab.url}`\n return pathname === fullUrl\n }\n\n return (\n
\n
\n \n isActive(tab))?.url}\n onChange={(e) => {\n navigate(`${prefix}${e.target.value}`)\n }}\n >\n {tabs.map((tab) => {\n return (\n \n {tab.label}\n \n )\n })}\n \n
\n \n
\n )\n}\n","import { createContext, useContext } from 'react'\nimport { MeteringPointOverview } from 'src/generated/client'\n\nexport const MeterContext = createContext({})\n\nexport const useMeter = () => useContext(MeterContext)\n","import { useQuery } from '@tanstack/react-query'\nimport { useTranslation } from 'react-i18next'\nimport { ArrowLeftIcon } from '@heroicons/react/outline'\nimport { Navigate, Outlet, useNavigate, useParams } from 'react-router-dom'\nimport { TextPlaceholder } from 'src/components/TextPlaceholder'\nimport { Tabs } from 'src/components/Tabs'\nimport { MeterContext } from 'src/context/meter'\nimport APIClient from 'src/utils/apiClient'\nimport Spinner from 'src/components/Spinner'\n\nconst MeterFrame = () => {\n const { t } = useTranslation()\n const objectId = useParams<'objectId'>().objectId\n const navigate = useNavigate()\n\n const {\n data: meter,\n isLoading,\n error,\n } = useQuery(['meter', objectId], () => APIClient.getMeter(objectId))\n\n const tabs = [\n { label: t('objects:consumption'), url: `/Consumption` },\n {\n label: t('global:reactive'),\n url: `/Reactive`,\n },\n { label: t('global:ETDiagram'), url: `/ET`, hiddenOnMobile: true },\n {\n label: t('global:ETFelt'),\n url: `/ETFelt`,\n hiddenOnMobile: true,\n },\n { label: t('global:peak'), url: `/Peak` },\n { label: t('objects:details'), url: `/Details` },\n { label: t('objects:budget'), url: `/Budget` },\n {\n label: t('objects:weatherStationsView.weatherStations'),\n url: `/WeatherStations`,\n },\n {\n label: t('objects:uploadInvoice'),\n url: `/UploadInvoice`,\n },\n {\n label: t('objects:spotPrice'),\n url: '/SpotPrice',\n hiddenOnMobile: true,\n },\n ]\n\n // const goBack = () => navigate(`/App/Customers/${meter?.customerId}`)\n\n const goBack = () => navigate(-1)\n\n // Redirect back to /App if objectId is not a number\n if (objectId && isNaN(parseInt(objectId))) {\n return \n }\n\n if (error) {\n console.error(error)\n return

Error. Check console.

\n }\n\n return (\n \n
\n
\n
\n \n \n
\n
\n {/*
goBack()}>\n {t('home:backCustomer')}\n
*/}\n
\n {meter ? (\n <>\n \n {meter.objectName}\n \n {meter.description && (\n \n ({meter.description})\n \n )}\n

\n {t('objects:detailView.meteringPointId')}:{' '}\n {meter.meteringPointId}\n

\n \n ) : (\n \n )}\n
\n
\n\n {/*
\n
\n
\n \n
\n
*/}\n\n {isLoading ? (\n
\n \n
\n ) : (\n
\n
\n \n
\n
\n {isLoading && (\n
\n \n
\n )}\n \n
\n
\n
\n
\n )}\n
\n
\n )\n}\n\nexport default MeterFrame\n","import { createContext, useContext } from 'react'\nimport { Customer } from 'src/generated/client'\n\nexport const CustomerContext = createContext({})\n\nexport const useCustomer = () => useContext(CustomerContext)\n","import { useMemo, useState } from 'react'\nimport { Table } from 'src/components/Table'\nimport { useTranslation, withTranslation } from 'react-i18next'\nimport { useQuery } from '@tanstack/react-query'\nimport APIClient from '../utils/apiClient'\nimport { TextPlaceholder } from 'src/components/TextPlaceholder'\nimport { useNavigate, NavLink } from 'react-router-dom'\nimport FormatNumber from '../components/FormatNumber'\nimport { getFooterForColumn } from '../utils/helpers/helpers'\nimport dayjs from 'dayjs'\nimport { useAppState } from 'src/context/appstate'\nimport NoMeterPlaceholder from 'src/components/NoMeterPlaceholder'\nimport GridRentModal from 'src/components/Consumption/GridRentModal'\nimport { useCustomer } from 'src/context/customer'\n\nconst Meters = () => {\n const { t } = useTranslation()\n const { showNett } = useAppState()\n const navigate = useNavigate()\n const [gridRentObjectId, setGridRentObjectId] = useState('')\n const [showGridRentModal, setShowGridRentModal] = useState(false)\n const [gridRentFromDate, setGridRentFromDate] = useState('')\n const [gridRentToDate, setGridRentToDate] = useState('')\n const customer = useCustomer()\n\n const { isLoading, data } = useQuery(['customerMeters', customer], () =>\n APIClient.getCustomerMeteringPointOverview(customer?.customerId)\n )\n\n const gridRentClickHandler = (objectId: string) => {\n setGridRentObjectId(objectId)\n setShowGridRentModal(true)\n setGridRentFromDate(\n dayjs().subtract(1, 'month').startOf('month').format('YYYY-MM-DD')\n )\n setGridRentToDate(dayjs().startOf('month').format('YYYY-MM-DD'))\n }\n\n const rowClickHandler = (objectId: string) => {\n navigate(`/App/Meters/${objectId}/Consumption`)\n }\n\n const columns = useMemo(\n () => [\n {\n Header: t('home:tableHeaders.objectName'),\n accessor: 'objectName',\n sortType: 'basic',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const id = props.row.original.objectId\n return (\n \n {props.cell.value}\n \n )\n },\n Footer: ({ data }: any) => {\n return (\n <>\n

\n {`${data.length} ${t('objects:meters')}`}\n

\n \n )\n },\n },\n {\n Header: t('home:tableHeaders.description'),\n accessor: 'description',\n sortType: 'basic',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const id = props.row.original.objectId\n return (\n \n {props.cell.value}\n \n )\n },\n },\n {\n Header: t('home:tableHeaders.meteringPointId'),\n accessor: 'meteringPointId',\n sortType: 'basic',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const id = props.row.original.objectId\n return (\n \n {props.cell.value}\n \n )\n },\n },\n\n {\n Header: t('home:tableHeaders.address'),\n accessor: 'address',\n Loader: (props: any) => ,\n sortType: 'basic',\n },\n {\n Header: `${t('home:tableHeaders.consumption')} (kWh)`,\n accessor: 'consumption',\n sortType: 'basic',\n className: 'text-right',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n rowClickHandler(props.row.original.objectId)}\n >\n \n

\n )\n },\n Footer: ({ data }: any) => {\n var num = getFooterForColumn('sum', data, 'consumption')\n return (\n <>\n

\n \n

\n \n )\n },\n },\n {\n Header: t('home:tableHeaders.spotCost'),\n accessor: showNett ? 'spotCost' : 'spotGrossCost',\n sortType: 'basic',\n className: 'text-right',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n rowClickHandler(props.row.original.objectId)}\n >\n \n

\n )\n },\n Footer: ({ data }: any) => {\n const selector = showNett ? 'spotCost' : 'spotGrossCost'\n const num = getFooterForColumn('sum', data, selector)\n return (\n <>\n

\n \n

\n \n )\n },\n },\n {\n Header: t('home:tableHeaders.gridCost'),\n accessor: showNett ? 'gridCost' : 'gridGrossCost',\n sortType: 'basic',\n className: 'text-right',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n gridRentClickHandler(props.row.original.objectId)}\n className=\"cursor-pointer text-right tracking-wider hover:underline\"\n >\n \n

\n )\n },\n Footer: ({ data }: any) => {\n const selector = showNett ? 'gridCost' : 'gridGrossCost'\n const num = getFooterForColumn('sum', data, selector)\n return (\n <>\n

\n \n

\n \n )\n },\n },\n {\n Header: t('home:tableHeaders.accessType'),\n accessor: 'accessType',\n className: 'pl-4',\n Loader: (props: any) => ,\n sortType: 'basic',\n Cell: (props: any) => {\n return

{t(`objects:accessType.${props.cell.value}`)}

\n },\n },\n ],\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [showNett, t]\n )\n\n return (\n
\n
\n
\n
\n {t('objects:customerMeters')}\n
\n {/* {isLoading && (\n
\n \n
\n )} */}\n {data?.length === 0 ? (\n \n ) : (\n null}\n tableStyleOverride=\"table-fixed md:table-auto block md:table absolute md:relative\"\n tdStyleOverride=\"px-3 first:max-w-lg first:min-h-full border-gray-100 border-t-2 border-b-2 text-gray-600\"\n thStyleOverride=\"text-base text-gray-500 font-medium\"\n />\n )}\n setShowGridRentModal(false)}\n start={gridRentFromDate}\n end={gridRentToDate}\n aggregationType=\"month\"\n />\n
\n
\n
\n )\n}\n\nexport default withTranslation('no')(Meters)\n","import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport {\n Label,\n CartesianGrid,\n XAxis,\n YAxis,\n Tooltip,\n Bar,\n ResponsiveContainer,\n Line,\n ComposedChart,\n TooltipProps,\n} from 'recharts'\nimport {\n NameType,\n ValueType,\n} from 'recharts/types/component/DefaultTooltipContent'\nimport { useAppState } from 'src/context/appstate'\nimport { MeteringPointBudgetOverview } from 'src/generated/client'\nimport dayjs from 'dayjs'\n\ninterface BudgetGraphData {\n time: string\n budget: number\n forecast: number\n real: number\n}\n\nexport default function BudgetGraph({\n data,\n}: {\n data: MeteringPointBudgetOverview[]\n}) {\n const { t } = useTranslation()\n const { showNett } = useAppState()\n\n const graphData = useMemo(() => {\n return data.map(\n ({ budget, forecast, real, timestamp }): BudgetGraphData => {\n const baseBudget = {\n time: dayjs(timestamp).toString(),\n real: 0,\n }\n\n if (showNett) {\n return {\n ...baseBudget,\n budget: budget?.totalCost || 0,\n forecast: forecast?.totalCost || 0,\n real: real?.totalCost || 0,\n }\n } else {\n return {\n ...baseBudget,\n budget: budget?.totalGrossCost || 0,\n forecast: forecast?.totalGrossCost || 0,\n real: real?.totalGrossCost || 0,\n }\n }\n }\n )\n }, [data, showNett])\n\n const yLabel = t(`objects:budgetView.cost`)\n return (\n
\n {graphData.length > 0 && (\n \n \n \n xAxisTickFormatter(value, t)}\n >\n \n )}\n \n
\n )\n}\n\nconst CustomLegend = () => {\n const { t } = useTranslation()\n\n return (\n
\n
\n
\n

{t('objects:budgetView.forecast')}

\n
\n
\n
\n

{t('objects:budgetView.real')}

\n
\n
\n
\n

{t('objects:budgetView.budget')}

\n
\n
\n )\n}\n\nconst xAxisTickFormatter = (value: string, t: any) => {\n return t(`global:shortMonths.${dayjs(value).format('MMM').toLowerCase()}`)\n}\n\nconst round = (value: any, decimals: number) =>\n Math.round(value * 10 ** decimals) / 10 ** decimals\n\nconst BudgetGraphTooltip = ({\n active,\n payload,\n}: TooltipProps) => {\n const { t } = useTranslation()\n\n if (active && payload && payload.length) {\n return (\n
\n

\n {`${t(\n `global:shortMonths.${dayjs(payload[0].payload.time)\n .format('MMM')\n .toLowerCase()}`\n )} ${dayjs(payload[0].payload.time).format('YYYY')}`}\n

\n\n
\n
\n {payload.map((entry, index) => (\n

\n {entry.name}: {round(entry.value, 2).toLocaleString('NO')}\n {' kr'}\n

\n ))}\n
\n
\n )\n }\n return null\n}\n","import cn from 'classnames'\nimport { ChevronLeftIcon, ChevronRightIcon } from '@heroicons/react/solid'\n\nconst disabledClasses = 'cursor-not-allowed text-gray-400'\nconst enabledClasses = 'hover:bg-gray-100 text-gray-900'\n\nexport default function DateChanger({\n dateChangeHandler,\n dateDisplay,\n disablePrev,\n disableNext,\n}: {\n dateChangeHandler: Function\n dateDisplay: string\n disablePrev: boolean\n disableNext: boolean\n}) {\n return (\n
\n
\n dateChangeHandler('previous')}\n />\n\n \n {dateDisplay}\n
\n\n dateChangeHandler('next')}\n />\n
\n
\n )\n}\n\nconst Button = ({\n isDisabled,\n onClick,\n side,\n}: {\n isDisabled: boolean\n onClick: Function\n side: 'left' | 'right'\n}) => (\n {\n if (isDisabled) return\n\n onClick()\n }}\n className={cn(\n 'border border-gray-600 px-2 py-2',\n side === 'left' ? 'rounded-l-xl' : 'rounded-r-xl',\n isDisabled ? disabledClasses : enabledClasses\n )}\n >\n {side === 'left' ? (\n \n ) : (\n \n )}\n
\n)\n","import { useMemo } from 'react'\nimport { useSearchParams } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\nimport { useQuery } from '@tanstack/react-query'\nimport dayjs from 'dayjs'\n\nimport type { MeteringPointBudgetOverview } from 'src/generated/client'\nimport type { FreqType } from 'src/types'\n\nimport { useAppState } from 'src/context/appstate'\nimport APIClient from 'src/utils/apiClient'\n\nimport { Table } from 'src/components/Table'\nimport { Loading } from 'src/components/Loading'\nimport FormatNumberBase from 'src/components/FormatNumber'\nimport BudgetGraph from 'src/components/BudgetComponent/BudgetGraph'\nimport DateChanger from 'src/components/DateChanger'\n\ntype BudgetComponentType = {\n objectId?: string\n customerId?: string\n}\n\nexport default function BudgetComponent(props: BudgetComponentType) {\n const { t } = useTranslation()\n const { showNett } = useAppState()\n\n const [params, setParams] = useSearchParams()\n const { objectId } = props\n const { customerId } = props\n\n const from =\n params.get('from') || dayjs().startOf('year').format('YYYY-MM-DD')\n\n const to =\n params.get('to') ||\n dayjs().add(1, 'year').startOf('year').format('YYYY-MM-DD')\n\n const { isLoading, error, data } = useQuery(\n [objectId, customerId, 'budget', from, to],\n () => {\n if (customerId) {\n return APIClient.getCustomerBudget(customerId, from, to)\n }\n\n if (objectId) {\n return APIClient.getMeteringPointBudget(objectId, from, to)\n }\n }\n )\n\n const dateDisplay = useMemo(() => {\n return dayjs(from).format('YYYY')\n }, [from])\n\n const disablePrev = useMemo(() => {\n return dayjs(from).subtract(1, 'year').isBefore(dayjs().startOf('year'))\n }, [from])\n\n const changeDate = (value: string) => {\n let tmpFrom = from\n let tmpTo = to\n let changeByFreq: FreqType = 'year'\n\n if (value === 'previous') {\n tmpFrom = dayjs(tmpFrom).subtract(1, changeByFreq).format('YYYY-MM-DD')\n tmpTo = dayjs(tmpTo)\n .subtract(1, changeByFreq)\n .startOf(changeByFreq)\n .format('YYYY-MM-DD')\n }\n if (value === 'next') {\n tmpFrom = dayjs(tmpFrom).add(1, changeByFreq).format('YYYY-MM-DD')\n tmpTo = dayjs(tmpTo).add(1, changeByFreq).format('YYYY-MM-DD')\n }\n setParams({ from: tmpFrom, to: tmpTo })\n }\n\n const initialTableState = useMemo(() => ({}), [])\n\n const consumptionColumns = useMemo(() => {\n return [\n // Time\n {\n Header: ' ',\n accessor: 'timestamp',\n Footer: () => (\n

\n {t('objects:budgetView.total')}\n

\n ),\n columns: [\n {\n Header: t('objects:tableModalHeaders.time'),\n className: 'w-40 max-w-lg text-center border-r',\n accessor: 'timestamp',\n Footer: () => (\n

\n {t('objects:budgetView.subTotal')}\n

\n ),\n Cell: (props: any) => {\n return (\n \n {dayjs(props.cell.value).format('MM.YYYY')}\n \n )\n },\n },\n ],\n // Cell: (props: any) => {\n // return (\n // \n // {dayjs(props.cell.value).format('MM.YYYY')}\n // \n // )\n // },\n // Footer: () => null,\n },\n /**\n * Consumption\n */\n\n // Budget - budget.consumption\n {\n Header: ' ', // This needs to be a space\n Footer: ({ data }: { data: MeteringPointBudgetOverview[] }) => {\n let total = 0\n for (const item of data) {\n total += item?.budget?.consumption || 0\n }\n\n return (\n <>\n

\n \n

\n \n )\n },\n columns: [\n {\n Header: t('objects:budgetView.budget'),\n accessor: 'budget.consumption',\n className: 'border-t text-right',\n Cell: (props: any) => {\n // const field = formatKwh(props.cell.value)\n const field = props.cell.value\n\n return (\n

\n \n

\n )\n },\n },\n ],\n },\n\n // Forecast - forecast.consumption\n\n {\n Header: t('objects:budgetView.consumption'),\n className: 'whitespace-nowrap',\n Footer: () => null,\n columns: [\n {\n Header: t('objects:budgetView.forecast'),\n accessor: 'forecast.consumption',\n className: 'border-t text-right',\n Cell: (props: any) => {\n // const field = formatKwh(props.cell.value)\n const field = props.cell.value\n\n return (\n

\n \n

\n )\n },\n Footer: ({ data }: { data: MeteringPointBudgetOverview[] }) => {\n let total = 0\n\n for (const item of data) {\n total += item?.forecast?.consumption ?? 0\n }\n\n return (\n <>\n

\n \n

\n \n )\n },\n },\n ],\n },\n\n // Real - real.consumption\n {\n Header: ' ', // This needs to be a space\n Footer: ({ data }: { data: MeteringPointBudgetOverview[] }) => {\n let total = 0\n for (const item of data) {\n total += item?.forecast?.consumption || 0\n total += item?.real?.consumption || 0\n }\n\n return (\n <>\n

\n \n

\n \n )\n },\n columns: [\n {\n Header: t('objects:budgetView.real'),\n accessor: 'real.consumption',\n className: 'border-t text-right',\n Cell: (props: any) => {\n // const field = formatKwh(props.cell.value)\n const field = props.cell.value\n\n return (\n

\n \n

\n )\n },\n Footer: ({ data }: { data: MeteringPointBudgetOverview[] }) => {\n let total = 0\n for (const item of data) {\n total += item?.real?.consumption || 0\n }\n\n return (\n <>\n

\n \n

\n \n )\n },\n },\n ],\n },\n\n /**\n * Peak\n */\n\n // Budget - budget.maxConsumption\n {\n Header: ' ', // This needs to be a space,\n Footer: () => null,\n columns: [\n {\n Header: t('objects:budgetView.budget'),\n className: 'border-l border-t text-right',\n accessor: 'budget.maxConsumption',\n Cell: (props: any) => {\n // const field = formatKw(props.cell.value)\n const field = props.cell.value\n\n return (\n

\n \n

\n )\n },\n },\n ],\n },\n\n // Forecast - forecast.maxConsumption\n {\n Header: t('objects:budgetView.peak'),\n className: 'whitespace-nowrap',\n Footer: () => null,\n columns: [\n {\n Header: t('objects:budgetView.forecast'),\n className: 'border-t text-right',\n accessor: 'forecast.maxConsumption',\n Cell: (props: any) => {\n // const field = formatKw(props.cell.value)\n const field = props.cell.value\n\n return (\n

\n \n

\n )\n },\n },\n ],\n },\n\n // Real - real.maxConsumption\n {\n Header: ' ', // This needs to be a space\n Footer: () => null,\n columns: [\n {\n Header: t('objects:budgetView.real'),\n className: 'border-r border-t text-right',\n accessor: 'real.maxConsumption',\n Cell: (props: any) => {\n // const field = formatKw(props.cell.value)\n const field = props.cell.value\n\n return (\n

\n \n

\n )\n },\n },\n ],\n },\n\n /**\n * Cost\n */\n\n // Budget - nett ? budget.totalCost : budget.totalGrossCost\n {\n Header: ' ',\n Footer: ({ data }: { data: MeteringPointBudgetOverview[] }) => {\n let total = 0\n for (const item of data) {\n total += showNett\n ? item?.budget?.totalCost || 0\n : item?.budget?.totalGrossCost || 0\n }\n\n return (\n <>\n

\n \n

\n \n )\n },\n columns: [\n {\n Header: t('objects:budgetView.budget'),\n Footer: () => null,\n accessor: showNett ? 'budget.totalCost' : 'budget.totalGrossCost',\n className: 'border-t text-right',\n Cell: (props: any) => {\n // const field = formatKr(props.cell.value)\n const field = props.cell.value\n\n return (\n

\n \n

\n )\n },\n },\n ],\n },\n\n // Forecast - nett ? forecast.totalCost : forecast.totalGrossCost :\n {\n Header: t('objects:budgetView.cost'),\n className: 'whitespace-nowrap',\n Footer: () => null,\n columns: [\n {\n Header: t('objects:budgetView.forecast'),\n accessor: showNett\n ? 'forecast.totalCost'\n : 'forecast.totalGrossCost',\n className: 'border-t text-right',\n Cell: (props: any) => {\n // const field = formatKr(props.cell.value)\n const field = props.cell.value\n\n return (\n

\n \n

\n )\n },\n Footer: ({ data }: { data: MeteringPointBudgetOverview[] }) => {\n let total = 0\n for (const item of data) {\n total += showNett\n ? item?.forecast?.totalCost || 0\n : item?.forecast?.totalGrossCost || 0\n }\n return (\n <>\n

\n \n

\n \n )\n },\n },\n ],\n },\n\n // Real - nett ? real.totalCost : real.totalGrossCost\n {\n Header: ' ',\n Footer: ({ data }: { data: MeteringPointBudgetOverview[] }) => {\n let total = 0\n for (const item of data) {\n total += showNett\n ? item?.forecast?.totalCost || 0\n : item?.forecast?.totalGrossCost || 0\n\n total += showNett\n ? item?.real?.totalCost || 0\n : item?.real?.totalGrossCost || 0\n }\n\n return (\n <>\n

\n \n

\n \n )\n },\n columns: [\n {\n Header: t('objects:budgetView.real'),\n className: 'border-r border-t text-right',\n accessor: showNett ? 'real.totalCost' : 'real.totalGrossCost',\n Cell: (props: any) => {\n // const field = formatKr(props.cell.value)\n const field = props.cell.value\n\n return (\n

\n \n

\n )\n },\n Footer: ({ data }: { data: MeteringPointBudgetOverview[] }) => {\n let total = 0\n for (const item of data) {\n total += showNett\n ? item?.real?.totalCost || 0\n : item?.real?.totalGrossCost || 0\n }\n return (\n <>\n

\n \n

\n \n )\n },\n },\n ],\n },\n ]\n }, [t, showNett])\n\n if (error) {\n console.error(error)\n return

Error. Check console.

\n }\n\n if (isLoading) {\n return \n }\n\n return (\n
\n {data ? (\n \n ) : null}\n\n \n\n null} //onRowClickHanler(rowData['timestamp'])}\n tableStyleOverride=\"ml-6 md:ml-0 table-fixed md:table-auto\"\n thStyleOverride=\"text-base text-gray-500 font-medium\"\n tdStyleOverride=\"px-3 first:w-10 first:max-w-lg first:w-96\"\n />\n
\n )\n}\n\nconst Krone = ({ number }: { number: number }) => {\n if (number === 0) return -\n\n return (\n \n \n {' '}kr\n \n )\n}\n\n// Re define FormatNumber for this component to fix decimals to 0\nconst FormatNumber = ({ number }: { number: number }) => {\n return \n}\n","import { useParams } from 'react-router-dom'\nimport BudgetComponent from 'src/components/BudgetComponent'\n\nconst CustomerBudgetPage = () => {\n const customerId = useParams<'customerId'>().customerId as string\n\n return \n}\n\nexport default CustomerBudgetPage\n","import { useQuery } from '@tanstack/react-query'\nimport { useTranslation } from 'react-i18next'\nimport { ArrowLeftIcon } from '@heroicons/react/outline'\nimport { Navigate, Outlet, useNavigate, useParams } from 'react-router-dom'\nimport { TextPlaceholder } from 'src/components/TextPlaceholder'\nimport { Tabs } from 'src/components/Tabs'\nimport APIClient from 'src/utils/apiClient'\nimport Spinner from 'src/components/Spinner'\nimport { CustomerContext } from 'src/context/customer'\n\nconst CustomerFrame = () => {\n const { t } = useTranslation()\n const customerId = useParams<'customerId'>().customerId\n const navigate = useNavigate()\n\n // TODO: Change this query to call customer\n const {\n data: customer,\n isLoading,\n error,\n } = useQuery(['customer', customerId], () =>\n APIClient.getCustomer(customerId)\n )\n\n const tabs = [\n { label: t('objects:sumCompany'), url: `/SumCompany` },\n { label: t('objects:sumBudget'), url: `/SumBudget` },\n { label: t('objects:meters'), url: `/Meters` },\n ]\n\n const goBack = () => navigate('/App/Customers')\n\n // Redirect back to /App if customerId is not a number\n if (customerId && isNaN(parseInt(customerId))) {\n return \n }\n\n if (error) {\n console.error(error)\n return

Error. Check console.

\n }\n\n return (\n \n
\n
\n
\n \n \n
\n
\n {/*
navigate('/App/Customers')}>\n {t('home:backHome')}\n \n Back to customers\n
*/}\n
\n {customer ? (\n <>\n {customer.name}\n {customer.partyId && (\n \n ({customer.partyId})\n \n )}\n

\n {t('objects:customerView.customerId')}: {customer.customerId}\n

\n \n ) : (\n \n )}\n
\n
\n\n {isLoading ? (\n
\n \n
\n ) : (\n
\n
\n \n
\n
\n {isLoading && (\n
\n \n
\n )}\n \n
\n
\n
\n
\n )}\n
\n \n )\n}\n\nexport default CustomerFrame\n","import { useParams } from 'react-router-dom'\nimport BudgetComponent from 'src/components/BudgetComponent'\n\nconst BudgetPage = () => {\n const objectId = useParams<'objectId'>().objectId as string\n\n return \n}\n\nexport default BudgetPage\n","import { useSearchParams } from 'react-router-dom'\nimport { DataPeriod } from 'src/components/ETComponent'\nimport { FreqType } from 'src/types'\n\ninterface IUseDateRange {\n defaultFreq: string\n defaultFrom: string\n defaultTo: string\n defaultPeriod?: DataPeriod\n}\n\nexport default function useDateRange({\n defaultFreq,\n defaultFrom,\n defaultTo,\n defaultPeriod,\n}: IUseDateRange) {\n const [searchParams, setSearchParams] = useSearchParams()\n const freq = (searchParams.get('freq') as FreqType) || defaultFreq\n\n const from = searchParams.get('from') || defaultFrom\n\n const to = searchParams.get('to') || defaultTo\n\n const period: DataPeriod =\n (searchParams.get('period') as DataPeriod) || defaultPeriod || 'lastYear'\n\n const setDateRange = ({\n freq,\n from,\n to,\n period,\n }: {\n freq: FreqType\n from: string\n to: string\n period?: DataPeriod\n }) => {\n if (period) {\n setSearchParams({ freq, from, to, period })\n } else {\n setSearchParams({ freq, from, to })\n }\n }\n\n return {\n freq,\n from,\n to,\n period,\n setDateRange,\n }\n}\n","import dayjs from 'dayjs'\nimport { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { FreqType } from 'src/types'\nimport useDateRange from './useDateRange'\nrequire('dayjs/locale/nb')\n\ntype Props = {\n freq?: FreqType\n from?: string\n to?: string\n is_power_factor?: boolean\n}\n\nexport default function useDateChanger(props?: Props) {\n const {\n i18n: { language },\n } = useTranslation()\n\n const defaultFromDay: string = dayjs()\n .startOf('month')\n .subtract(1, 'month')\n .format('YYYY-MM-DD')\n const defaultToDay: string = dayjs(defaultFromDay)\n .add(1, 'month')\n .startOf('month')\n .format('YYYY-MM-DD')\n\n const defaultFromMonth: string = dayjs().startOf('year').format('YYYY-MM-DD')\n const defaultToMonth: string = dayjs()\n .add(1, 'year')\n .startOf('year')\n .format('YYYY-MM-DD')\n\n const dateRange = useDateRange({\n defaultFreq: props?.freq || props?.is_power_factor ? 'day' : 'month',\n defaultFrom:\n props?.from || props?.is_power_factor ? defaultFromDay : defaultFromMonth,\n defaultTo:\n props?.to || props?.is_power_factor ? defaultToDay : defaultToMonth,\n })\n\n const freq = props?.freq ?? dateRange.freq\n const from = props?.from ?? dateRange.from\n const to = props?.to ?? dateRange.to\n\n const { dateDisplay, disablePrev, disableNext } = useMemo(() => {\n const loc = language === 'no' ? 'nb' : 'en'\n\n if (freq === 'year') {\n return {\n dateDisplay: 'All',\n disablePrev: true,\n disableNext: true,\n }\n } else if (freq === 'month') {\n return {\n dateDisplay: dayjs(from).format('YYYY'),\n disablePrev: dayjs(from)\n .subtract(1, 'year')\n .isBefore(dayjs('2020-01-01')),\n disableNext: dayjs(to).add(1, 'day').isAfter(dayjs()),\n }\n } else if (freq === 'day') {\n return {\n dateDisplay: dayjs(from).locale(loc).format('MMMM YYYY'),\n disablePrev: dayjs(from)\n .subtract(1, 'month')\n .isBefore(dayjs('2020-01-01')),\n disableNext: dayjs(to).add(1, 'day').isAfter(dayjs()),\n }\n } else {\n const fmt = loc === 'nb' ? 'DD.MM.YYYY' : 'YYYY-MM-DD'\n return {\n dateDisplay: dayjs(from).format(fmt),\n disablePrev: dayjs(from)\n .subtract(1, 'day')\n .isBefore(dayjs('2020-01-01')),\n disableNext: dayjs(to).add(1, 'day').isAfter(dayjs()),\n }\n }\n }, [freq, from, to, language])\n\n return {\n dateDisplay,\n disablePrev,\n disableNext,\n }\n}\n","import { useTranslation } from 'react-i18next'\nimport cn from 'classnames'\n\nexport default function FrequencyChanger({\n freqOptions,\n freqChangeHandler,\n freq,\n}: {\n freqOptions: string[]\n freqChangeHandler: Function\n freq: string\n}) {\n const { t } = useTranslation()\n return (\n <>\n
\n \n {\n freqChangeHandler(e.target.value)\n }}\n id=\"tabs\"\n name=\"tabs\"\n className=\"focus:outline-none text-basesm:text-sm block w-full rounded-md border-gray-300 py-2 pl-3 pr-10\"\n defaultValue={freqOptions.find((f) => f === freq)}\n >\n {freqOptions.map((value: string, index: number) => {\n return (\n \n )\n })}\n \n
\n \n \n \n )\n}\n","import type { FreqType, GraphSeriesType } from 'src/types'\nimport { useTranslation } from 'react-i18next'\nimport cn from 'classnames'\n\nexport default function SeriesChanger({\n seriesChangeHandler,\n freq,\n seriesOptions,\n altSeriesOptions,\n graphSeries,\n}: {\n seriesChangeHandler: Function\n freq?: FreqType\n seriesOptions: any\n altSeriesOptions?: any\n graphSeries: GraphSeriesType\n}) {\n const { t } = useTranslation()\n\n const options =\n altSeriesOptions && (freq === 'day' || freq === 'hour')\n ? altSeriesOptions\n : seriesOptions\n\n return (\n
\n
\n {options.map((value: any, index: any) => (\n seriesChangeHandler(value)}\n key={index}\n className={cn(\n 'px-4 py-2 hover:bg-gray-100',\n graphSeries === value &&\n 'border-l border-r border-gray-600 bg-gray-100',\n index === 0 && 'rounded-l-xl border-l-0',\n index === options.length - 1 && 'rounded-r-xl border-r-0'\n )}\n >\n {t(`objects:tableModalHeaders.${value}NoUnit`)}\n
\n ))}\n
\n \n )\n}\n","import dayjs from 'dayjs'\nimport isoWeeksInYear from 'dayjs/plugin/isoWeeksInYear'\nimport isoWeek from 'dayjs/plugin/isoWeek'\nimport isLeapYear from 'dayjs/plugin/isLeapYear'\n\ndayjs.extend(isoWeeksInYear)\ndayjs.extend(isoWeek)\ndayjs.extend(isLeapYear)\n\nconst toObject = (arr: Array) => {\n let result: any = {}\n arr.forEach((a) => (result[a['timestamp']] = a))\n return result\n}\n\nconst pad = (arr: Array, freq: string) => {\n if (arr == null) return arr\n if (arr.length === 0) return arr\n\n const obj = toObject(arr)\n let result: any = {}\n\n if (freq === 'month') {\n if (Object.keys(obj).length === 12) return arr\n\n const year = dayjs(arr[0]['timestamp']).year()\n for (let i = 0; i < 12; i++) {\n const key = dayjs(`${year}-01-01T00:00:00`)\n .set('month', i)\n .format('YYYY-MM-DDTHH:mm:ss')\n result[key] = {\n timestamp: key,\n ...(obj[key] || {}),\n }\n }\n return [...Object.values(result)]\n } else if (freq === 'week') {\n const year = dayjs(arr[0]['timestamp']).year()\n const max = dayjs(arr[0]['timestamp']).isoWeeksInYear()\n\n if (Object.keys(obj).length === max) return arr\n for (let i = 1; i <= max; i++) {\n const key = dayjs(`${year}-01-01`)\n .isoWeek(i)\n .format('YYYY-MM-DDTHH:mm:ss')\n result[key] = {\n timestamp: key,\n ...(obj[key] || {}),\n }\n }\n return [...Object.values(result)]\n } else if (freq === 'day') {\n const year = dayjs(arr[0]['timestamp']).year()\n const month = dayjs(arr[0]['timestamp']).month() + 1\n const max = dayjs(arr[0]['timestamp']).daysInMonth()\n\n if (Object.keys(obj).length === max) return arr\n for (let i = 1; i <= max; i++) {\n const key = dayjs(`${year}-${month}-01T00:00:00`)\n .set('date', i)\n .format('YYYY-MM-DDTHH:mm:ss')\n result[key] = {\n timestamp: key,\n ...(obj[key] || {}),\n }\n }\n return [...Object.values(result)]\n } else if (freq === 'hour') {\n if (Object.keys(obj).length === 24) return arr\n\n const year = dayjs(arr[0]['timestamp']).year()\n const month = dayjs(arr[0]['timestamp']).month() + 1\n const day = dayjs(arr[0]['timestamp']).date()\n\n for (let i = 0; i < 24; i++) {\n const key = dayjs(`${year}-${month}-${day}T00:00:00`)\n .set('hour', i)\n .format('YYYY-MM-DDTHH:mm:ss')\n result[key] = {\n timestamp: key,\n ...(obj[key] || {}),\n }\n }\n return [...Object.values(result)]\n } else {\n return arr\n }\n}\n\nexport { pad }\n","import dayjs from 'dayjs'\nimport { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { FreqType, GraphSeriesType } from '../../types'\nimport {\n Label,\n CartesianGrid,\n XAxis,\n YAxis,\n Tooltip,\n Bar,\n ResponsiveContainer,\n ComposedChart,\n Line,\n ReferenceLine,\n TooltipProps,\n} from 'recharts'\nimport {\n NameType,\n ValueType,\n} from 'recharts/types/component/DefaultTooltipContent'\nimport { pad } from './utils'\nimport { MeteringPointConsumptionCost } from 'src/generated/client'\n\nexport interface ConsumptionGraphData {\n name: string\n timestamp: number\n consumption: number\n spotPrice: number\n spotAmount: number\n totalCost?: number\n}\n\nexport const round = (value: any, decimals: number) =>\n Math.round(value * 10 ** decimals) / 10 ** decimals\n\nexport const ConsumptionGraph = ({\n data,\n series,\n consumptionType,\n freq,\n showNett,\n onGraphClick,\n}: {\n data: MeteringPointConsumptionCost[]\n series: GraphSeriesType\n consumptionType: string\n freq: FreqType\n showNett: boolean\n onGraphClick: (v: string) => void\n}) => {\n const { t } = useTranslation()\n\n const graphData = useMemo(() => {\n return pad(data, freq)?.map((item: any, i: number) => ({\n name: '' + (i + 1),\n timestamp: item.timestamp,\n consumption: item.consumption,\n production: item.production,\n netConsumption: item.consumption + item.production,\n spotPrice: showNett ? item.spotCostPrice : item.spotCostGrossPrice,\n spotAmount: showNett ? item.spotCost : item.spotGrossCost,\n powerAgreement: showNett\n ? item.powerAgreementCost\n : item.powerAgreementGrossCost,\n totalCost: showNett ? item.totalCost : item.totalGrossCost,\n }))\n }, [data, freq, showNett])\n\n const yLabel1 = t(`objects:tableModalHeaders.${series}`)\n const yLabel2 = t('objects:tableModalHeaders.spotPrice')\n const xLabel = t(`consumption:graph.${freq}`)\n\n return (\n
\n \n onGraphClick(data?.activeLabel)}\n data={graphData}\n margin={{ top: 0, right: 50, left: 50, bottom: 30 }}\n stackOffset=\"sign\"\n >\n \n xAxisTickFormatter(value, freq, t)}\n >\n \n
\n )\n}\n\nconst ConsumptionTooltip = ({\n active,\n payload,\n freq,\n label,\n}: TooltipProps & { freq: FreqType }) => {\n const { t } = useTranslation()\n\n if (active && payload && payload.length) {\n return (\n
\n {freq === 'year' ? (\n

{dayjs(payload[0].payload.timestamp).format('YYYY')}

\n ) : freq === 'month' ? (\n

\n {`${t(\n `global:shortMonths.${dayjs(payload[0].payload.timestamp)\n .format('MMM')\n .toLowerCase()}`\n )} ${dayjs(payload[0].payload.timestamp).format('YYYY')}`}\n

\n ) : freq === 'day' ? (\n

{dayjs(payload[0].payload.timestamp).format('DD.MM.YYYY')}

\n ) : freq === 'hour' ? (\n

\n {dayjs(payload[0].payload.timestamp).format('HH:mm DD.MM.YYYY')}\n

\n ) : null}\n\n
\n
\n {payload.map(\n (entry, index) =>\n entry.value !== 0 && (\n

\n {t(`objects:${entry.name}`)}:{' '}\n {round(entry.value, 2).toLocaleString('NO')}{' '}\n {entry.name === 'consumption' ||\n entry.name === 'production' ||\n entry.name === 'netConsumption'\n ? 'kWh'\n : entry.name === 'spotPrice'\n ? 'kr/kWh'\n : 'NOK'}\n

\n )\n )}\n
\n
\n )\n }\n return null\n}\n\nexport const SpotPriceGraph = ({\n data,\n series,\n freq,\n onGraphClick,\n showNett,\n}: {\n data: any\n series: GraphSeriesType\n freq: FreqType\n showNett: boolean\n onGraphClick: (v: string) => void\n}) => {\n const { t } = useTranslation()\n\n const graphData = useMemo(() => {\n const tempData: any[] = pad(\n data?.spotPrices[areaIndex(series)].values,\n freq\n )\n const tempData2: any[] = pad(data?.spotPrices[5]?.values, freq)\n\n if (tempData && tempData2) {\n return tempData?.map((item: any, i: number) => ({\n name: '' + (i + 1),\n timestamp: item.timestamp,\n spotPrice: showNett ? item.spotPrice : item.spotGrossPrice,\n sysPrice: showNett\n ? tempData2[i]?.spotPrice\n : tempData2[i]?.spotGrossPrice,\n }))\n }\n if (tempData && !tempData2) {\n return tempData?.map((item: any, i: number) => ({\n name: '' + (i + 1),\n timestamp: item.timestamp,\n spotPrice: showNett ? item.spotPrice : item.spotGrossPrice,\n }))\n }\n\n return []\n }, [data?.spotPrices, freq, series, showNett])\n\n const xLabel = t(`consumption:graph.${freq}`)\n\n return (\n
\n \n onGraphClick(data?.activeLabel)}\n data={graphData}\n margin={{ top: 0, right: 50, left: 50, bottom: 30 }}\n >\n \n xAxisTickFormatter(value, freq, t)}\n >\n \n \n }\n wrapperStyle={{ outline: 'none' }}\n />\n \n \n \n \n \n
\n )\n}\n\nconst areaIndex = (value: string) => {\n if (value === 'NO1') {\n return 0\n }\n if (value === 'NO2') {\n return 1\n }\n if (value === 'NO3') {\n return 2\n }\n if (value === 'NO4') {\n return 3\n }\n if (value === 'NO5') {\n return 4\n } else return 0\n}\n\nexport const xAxisTickFormatter = (value: string, freq: FreqType, t: any) => {\n if (freq === 'year') {\n return dayjs(value).format('YYYY')\n } else if (freq === 'month') {\n return t(`global:shortMonths.${dayjs(value).format('MMM').toLowerCase()}`)\n } else if (freq === 'week') {\n return `${t('global:week')} ${dayjs(value).isoWeek()} \n ${dayjs(value).format('YYYY')}`\n } else if (freq === 'day') {\n return dayjs(value).format('D')\n } else if (freq === 'hour') {\n return dayjs(value).format('H')\n } else {\n return ''\n }\n}\n\nconst CustomLegend = () => {\n const { t } = useTranslation()\n\n return (\n
\n
\n
\n

{t('global:areaPrice')}

\n
\n
\n
\n

{t('global:systemPrice')}

\n
\n
\n )\n}\n\nconst SpotPriceTooltip = ({\n active,\n payload,\n freq,\n label,\n}: TooltipProps & { freq: FreqType }) => {\n const { t } = useTranslation()\n\n if (active && payload && payload.length) {\n return (\n
\n {freq === 'year' ? (\n

{dayjs(payload[0].payload.timestamp).format('YYYY')}

\n ) : freq === 'month' ? (\n

\n {`${t(\n `global:shortMonths.${dayjs(payload[0].payload.timestamp)\n .format('MMM')\n .toLowerCase()}`\n )} ${dayjs(payload[0].payload.timestamp).format('YYYY')}`}\n

\n ) : freq === 'day' ? (\n

{dayjs(payload[0].payload.timestamp).format('DD.MM.YYYY')}

\n ) : freq === 'hour' ? (\n

\n {dayjs(payload[0].payload.timestamp).format('HH:mm DD.MM.YYYY')}\n

\n ) : null}\n\n
\n
\n {payload.map(\n (entry, index) =>\n entry.value !== 0 && (\n

\n {entry.name === 'spotPrice'\n ? t(`global:areaPrice`)\n : t(`objects:${entry.name}`)}\n : {round(entry.value, 2).toLocaleString('NO')}\n {' kr/kWh'}\n

\n )\n )}\n
\n
\n )\n }\n return null\n}\n","export default __webpack_public_path__ + \"static/media/search_data.cd3281a5.png\";","import noDataSymbol from '../../images/search_data.png'\n\ninterface IGraphPlaceHolderComponent {\n dataType: string\n}\n\nexport function GraphPlaceholder({ dataType }: IGraphPlaceHolderComponent) {\n return (\n
\n
\n \"NoData\"\n

No Data

\n

No {dataType} data for this period.

\n
\n
\n )\n}\n","import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useQuery } from '@tanstack/react-query'\nimport { Table } from 'src/components/Table'\nimport APIClient from '../utils/apiClient'\nimport dayjs from 'dayjs'\nimport { TextPlaceholder } from 'src/components/TextPlaceholder'\nimport FormatNumber from './FormatNumber'\nimport { getFooterForColumn } from '../utils/helpers/helpers'\nimport { useAppState } from '../context/appstate'\nimport { MeteringPointPowerAgreementCost } from 'src/generated/client'\nimport { FieldQuality } from './Consumption'\n\ntype PowerAgreementProps = {\n queryType: 'customer' | 'meter'\n objectId?: string\n customerId?: string\n query?: any\n start: any\n end: any\n aggregationType?: string\n}\n\nconst PowerAgreementComponent = (props: PowerAgreementProps) => {\n const { t } = useTranslation()\n const { showNett } = useAppState()\n const { queryType, objectId, customerId, start, end, aggregationType } = props\n\n const { isLoading, data, error } = useQuery(\n [\n 'powerAgreement',\n objectId,\n queryType,\n customerId,\n start,\n end,\n aggregationType,\n ],\n async () => {\n const s = dayjs(start).format('YYYY-MM-DD')\n const e = dayjs(end).format('YYYY-MM-DD')\n if (props.queryType === 'customer' && customerId) {\n return APIClient.getCustomerPowerAgreementCost(\n customerId,\n s,\n e,\n aggregationType\n )\n } else if (objectId) {\n return APIClient.getPowerAgreementCost(objectId, s, e, aggregationType)\n }\n }\n )\n\n const consumptionColumns = useMemo(\n () => [\n {\n Header: t('grid:description'),\n accessor: 'elementDescription',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const row = props.row.original as MeteringPointPowerAgreementCost\n return (\n
\n {props.cell.value}\n \n {row.quality && (\n \n )}\n \n
\n )\n },\n },\n {\n Header: t('grid:from'),\n accessor: 'fromDate',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n

\n {dayjs(props.cell.value).format('DD.MM.YYYY')}\n

\n )\n },\n },\n {\n Header: t('grid:to'),\n accessor: 'toDate',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n

\n {dayjs(props.cell.value).format('DD.MM.YYYY')}\n

\n )\n },\n },\n {\n Header: t('objects:tableModalHeaders.quantity'),\n accessor: 'quantity',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n <>\n

\n \n

\n \n )\n },\n },\n {\n Header: t('objects:tableModalHeaders.unit'),\n accessor: 'unit',\n Loader: (props: any) => ,\n },\n {\n Header: t('objects:tableModalHeaders.price'),\n accessor: showNett ? 'price' : 'grossPrice',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n <>\n

\n = 1 ? 2 : 4}\n />\n

\n \n )\n },\n },\n {\n Header: t('objects:tableModalHeaders.amount'),\n accessor: showNett ? 'amount' : 'grossAmount',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n <>\n

\n \n

\n \n )\n },\n Footer: ({ data }: any) => {\n var num = getFooterForColumn(\n 'sum',\n data,\n showNett ? 'amount' : 'grossAmount'\n )\n return (\n

\n \n

\n )\n },\n },\n ],\n [showNett, t]\n )\n\n if (error) {\n console.error(error)\n return

Error. Check console.

\n }\n\n return (\n
\n {}}\n tableStyleOverride=\"ml-6 md:ml-0 table-fixed md:table-auto pb-0\"\n trStyleOverride=\"cursor-auto\"\n thStyleOverride=\"first:text-left text-right text-xs text-gray-500 font-medium\"\n tdStyleOverride=\"first:text-left text-right px-3 first:w-10 first:max-w-lg first:w-96\"\n />\n
\n )\n}\n\nexport default PowerAgreementComponent\n","import { Fragment } from 'react'\nimport { Dialog, Transition } from '@headlessui/react'\nimport { useTranslation } from 'react-i18next'\nimport { CloseButton } from 'src/components/action'\nimport PowerAgreementComponent from '../PowerAgreementComponent'\ninterface PowerAgreementModalProps {\n isOpen: boolean\n onClose: () => void\n objectId?: string\n customerId?: string\n start: string\n end: string\n queryType: 'customer' | 'meter' // so we know which query to run in the GridRentModal\n aggregationType?: string\n}\n\nconst PowerAgreementModal = ({\n isOpen,\n onClose,\n objectId,\n customerId,\n start,\n end,\n queryType,\n aggregationType,\n}: PowerAgreementModalProps) => {\n const { t } = useTranslation()\n return (\n \n \n
\n {/* */}\n \n {/* */}\n\n {/* This element is to trick the browser into centering the modal contents. */}\n \n ​\n \n \n
\n
\n
\n
\n \n {t('consumption:powerAgreement')}\n \n
\n \n
\n \n
\n
\n \n
\n \n
\n )\n}\n\nexport default PowerAgreementModal\n","import { useCallback, useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useQuery } from '@tanstack/react-query'\nimport dayjs from 'dayjs'\nimport { CheckCircleIcon, ExclamationCircleIcon } from '@heroicons/react/solid'\nimport { ClockIcon } from '@heroicons/react/outline'\nimport cn from 'classnames'\n\nimport APIClient from 'src/utils/apiClient'\nimport { getFooterForColumn } from 'src/utils/helpers/helpers'\nimport { useAppState } from 'src/context/appstate'\n\nimport type { MeteringPointConsumptionCost } from 'src/generated/client'\nimport type { FreqType, GraphSeriesType } from 'src/types'\n\nimport useDateRange from 'src/utils/hooks/useDateRange'\nimport useDateChanger from 'src/utils/hooks/useDateChanger'\n\nimport { Table } from 'src/components/Table'\nimport { TextPlaceholder } from 'src/components/TextPlaceholder'\nimport FrequencyChanger from 'src/components/FrequencyChanger'\nimport SeriesChanger from 'src/components/SeriesChanger'\nimport FormatNumber from 'src/components/FormatNumber'\nimport DateChanger from 'src/components/DateChanger'\nimport Spinner from 'src/components/Spinner'\n\nimport GridRentModal from './GridRentModal'\nimport { ConsumptionGraph } from './Graphs'\nimport { GraphPlaceholder } from 'src/components/GraphPlaceholder'\nimport PowerAgreementModal from './PowerAgreementModal'\n\nrequire('dayjs/locale/nb')\n\ntype ConsumptionProps = {\n objectId?: string\n customerId?: string\n queryType: 'customer' | 'meter' // so we know which query to run in the GridRentModal\n}\n\ntype fieldQualityType = 'consumption' | 'powerAgreement'\n\nconst freqOptions = ['year', 'month', 'day', 'hour']\n\nconst seriesOptions = [\n 'consumption',\n 'spotAmount',\n 'powerAgreement',\n 'totalCost',\n]\n\nconst altSeriesOptions = ['consumption', 'spotAmount']\n\nexport function Consumption(props: ConsumptionProps) {\n const { t } = useTranslation()\n const { showNett } = useAppState()\n const { objectId, customerId, queryType } = props\n\n const defaultFreq: FreqType = 'month'\n const defaultFrom: string = dayjs().startOf('year').format('YYYY-MM-DD')\n const defaultTo: string = dayjs()\n .add(1, 'year')\n .startOf('year')\n .format('YYYY-MM-DD')\n\n const { freq, from, to, setDateRange } = useDateRange({\n defaultFreq: defaultFreq,\n defaultFrom: defaultFrom,\n defaultTo: defaultTo,\n })\n\n const [showGridRentModal, setShowGridRentModal] = useState(false)\n const [gridRentFromDate, setGridRentFromDate] = useState('')\n const [gridRentToDate, setGridRentToDate] = useState('')\n\n const [showPowerAgreementModal, setShowPowerAgreementModal] =\n useState(false)\n const [powerAgreementFromDate, setPowerAgreementFromDate] =\n useState('')\n const [powerAgreementToDate, setPowerAgreementToDate] = useState('')\n\n const [consumptionType, setConsumptionType] =\n useState('splitConsumption')\n\n const { isLoading, data } = useQuery(\n ['consumption', objectId, customerId, freq, from, to],\n async () => {\n if (customerId) {\n return APIClient.getCustomerCost(customerId, from, to, freq)\n } else if (objectId) {\n return APIClient.getConsumption(objectId, from, to, freq)\n }\n }\n )\n\n const [graphSeries, setGraphSeries] = useState('consumption')\n\n const { dateDisplay, disablePrev, disableNext } = useDateChanger()\n\n const freqChangeHandler = (value: FreqType) => {\n let tmpFrom = from\n let tmpTo = to\n let tmpFreq = value\n\n if (value === 'year') {\n tmpFrom = dayjs(0).format('YYYY-MM-DD')\n tmpTo = dayjs().format('YYYY-MM-DD')\n } else if (value === 'month') {\n tmpFrom = dayjs().startOf('year').format('YYYY-MM-DD')\n tmpTo = dayjs().add(1, 'year').startOf('year').format('YYYY-MM-DD')\n } else if (value === 'day') {\n if (dayjs().date() === 1) {\n tmpFrom = dayjs()\n .startOf('month')\n .subtract(1, 'month')\n .format('YYYY-MM-DD')\n tmpTo = dayjs(tmpFrom)\n .add(1, 'month')\n .startOf('month')\n .format('YYYY-MM-DD')\n } else {\n tmpFrom = dayjs().startOf('month').format('YYYY-MM-DD')\n tmpTo = dayjs(tmpFrom)\n .add(1, 'month')\n .startOf('month')\n .format('YYYY-MM-DD')\n }\n } else if (value === 'hour') {\n tmpFrom = dayjs().subtract(1, 'day').startOf('day').format('YYYY-MM-DD')\n tmpTo = dayjs(tmpFrom).add(1, 'day').startOf('day').format('YYYY-MM-DD')\n }\n\n setDateRange({\n freq: tmpFreq,\n from: tmpFrom,\n to: tmpTo,\n })\n\n if (graphSeries === 'totalCost' && value !== 'month') {\n setGraphSeries('spotAmount')\n }\n }\n\n const consumptionTypeChangeHandler = (value: string) => {\n setConsumptionType(value)\n }\n\n const dateChangeHandler = (value: string) => {\n let tmpFrom = from\n let tmpTo = to\n\n let changeByFreq: FreqType = 'month'\n if (freq === 'month') {\n changeByFreq = 'year'\n } else if (freq === 'day') {\n changeByFreq = 'month'\n } else if (freq === 'hour') {\n changeByFreq = 'day'\n }\n if (value === 'previous') {\n tmpFrom = dayjs(tmpFrom).subtract(1, changeByFreq).format('YYYY-MM-DD')\n tmpTo = dayjs(tmpTo)\n .subtract(1, changeByFreq)\n .startOf(changeByFreq)\n .format('YYYY-MM-DD')\n }\n if (value === 'next') {\n tmpFrom = dayjs(tmpFrom).add(1, changeByFreq).format('YYYY-MM-DD')\n tmpTo = dayjs(tmpTo).add(1, changeByFreq).format('YYYY-MM-DD')\n }\n setDateRange({\n freq,\n from: tmpFrom,\n to: tmpTo,\n })\n }\n\n const onRowClickHanler = useCallback(\n (v: string) => {\n let tmpFrom = from\n let tmpTo = to\n let tmpFreq = freq\n\n let value = dayjs(v)\n if (dayjs(value).isBefore(dayjs())) {\n if (freq === 'year') {\n tmpFreq = 'month'\n tmpFrom = dayjs(value).startOf('year').format('YYYY-MM-DD')\n tmpTo = dayjs(value)\n .add(1, 'year')\n .startOf('year')\n .format('YYYY-MM-DD')\n } else if (freq === 'month') {\n tmpFreq = 'day'\n tmpFrom = dayjs(value).startOf('month').format('YYYY-MM-DD')\n tmpTo = dayjs(value)\n .add(1, 'month')\n .startOf('month')\n .format('YYYY-MM-DD')\n } else if (freq === 'day') {\n tmpFreq = 'hour'\n tmpFrom = dayjs(value).startOf('day').format('YYYY-MM-DD')\n tmpTo = dayjs(value).add(1, 'day').startOf('day').format('YYYY-MM-DD')\n }\n\n setDateRange({ freq: tmpFreq, from: tmpFrom, to: tmpTo })\n\n if (graphSeries === 'totalCost' && freq !== 'month') {\n setGraphSeries('spotAmount')\n }\n }\n },\n [freq, to, from, graphSeries, setDateRange]\n )\n\n const hasProduction = data?.some((row: any) => row.production < 0)\n\n const initialTableState = useMemo(\n () => ({\n sortBy: [\n {\n id: 'timestamp',\n desc: freq === 'month',\n },\n ],\n }),\n [freq]\n )\n\n const gridRentClickHandler = (v: string) => {\n setShowGridRentModal(true)\n setGridRentFromDate(dayjs(v).startOf('month').format('YYYY-MM-DDT00:00:00'))\n if (freq === 'month') {\n setGridRentToDate(\n dayjs(v).add(1, 'month').startOf('month').format('YYYY-MM-DDT00:00:00')\n )\n } else if (freq === 'year') {\n setGridRentToDate(\n dayjs(v).add(1, 'year').startOf('year').format('YYYY-MM-DDT00:00:00')\n )\n }\n }\n const powerAgreementClickHandler = (v: string) => {\n setShowPowerAgreementModal(true)\n setPowerAgreementFromDate(\n dayjs(v).startOf('month').format('YYYY-MM-DDT00:00:00')\n )\n if (freq === 'month') {\n setPowerAgreementToDate(\n dayjs(v).add(1, 'month').startOf('month').format('YYYY-MM-DDT00:00:00')\n )\n } else if (freq === 'year') {\n setPowerAgreementToDate(\n dayjs(v).add(1, 'year').startOf('year').format('YYYY-MM-DDT00:00:00')\n )\n }\n }\n\n const consumptionColumns = useMemo(() => {\n let startCols = [\n // Time\n {\n Header: t('objects:tableModalHeaders.time'),\n accessor: 'timestamp',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const row = props.row.original as MeteringPointConsumptionCost\n\n return (\n
\n onRowClickHanler(String(row.timestamp))}\n className={cn(\n freq === 'hour'\n ? 'tracking-wider'\n : 'cursor-pointer tracking-wider hover:underline'\n )}\n >\n {freq === 'year'\n ? dayjs(props.cell.value).format('YYYY')\n : freq === 'month'\n ? dayjs(props.cell.value).format('MM.YYYY')\n : freq === 'day'\n ? dayjs(props.cell.value).format('DD.MM.YYYY')\n : dayjs(props.cell.value).format('DD.MM.YYYY HH:mm')}\n \n
\n )\n },\n },\n // Consumption (kWh)\n {\n Header: `${t('objects:tableModalHeaders.consumption')}`,\n accessor: 'consumption',\n className: 'text-right',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n let field = props.cell.value\n const row = props.row.original as MeteringPointConsumptionCost\n return (\n
\n onRowClickHanler(props.row.original.timestamp)}\n className={`flex flex-row space-x-2 text-right tracking-wider ${\n freq !== 'hour' && 'cursor-pointer hover:underline'\n } ${freq === 'day' && 'cursor-pointer hover:underline'}`}\n >\n \n \n \n \n {row.consumptionQuality && (\n \n )}\n \n
\n )\n },\n Footer: ({ data }: any) => {\n const selector = 'consumption'\n var num = getFooterForColumn('sum', data, selector)\n return (\n <>\n

\n \n

\n \n )\n },\n },\n\n //Production (kWh)\n {\n Header: `${t('objects:tableModalHeaders.production')}`,\n accessor: 'production',\n className: 'text-right',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n let field = props.cell.value\n return (\n onRowClickHanler(props.row.original.timestamp)}\n className={`text-right tracking-wider ${\n freq !== 'hour' && 'cursor-pointer hover:underline'\n } ${freq === 'day' && 'cursor-pointer hover:underline'}`}\n >\n \n

\n )\n },\n Footer: ({ data }: any) => {\n const selector = 'production'\n var num = getFooterForColumn('sum', data, selector)\n return (\n <>\n

\n \n

\n \n )\n },\n },\n ]\n\n let cols = [\n // Spot Price (kr/kWh)\n {\n Header: t('objects:tableModalHeaders.spotPrice'),\n accessor: showNett ? 'spotCostPrice' : 'spotCostGrossPrice',\n className: 'text-right',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n let field = props.cell.value\n return (\n onRowClickHanler(props.row.original.timestamp)}\n className={\n freq === 'hour'\n ? 'text-right tracking-wider'\n : 'cursor-pointer text-right tracking-wider hover:underline'\n }\n >\n = 1 ? 2 : 4} />\n

\n )\n },\n },\n\n // Spot Amount (NOK)\n {\n Header: t('objects:tableModalHeaders.spotAmount'),\n accessor: showNett ? 'spotCost' : 'spotGrossCost',\n sortType: 'basic',\n className: 'text-right',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n return (\n onRowClickHanler(props.row.original.timestamp)}\n className={\n freq === 'hour'\n ? 'text-right tracking-wider'\n : 'cursor-pointer text-right tracking-wider hover:underline'\n }\n >\n \n

\n )\n },\n Footer: ({ data }: any) => {\n let selector = showNett ? 'spotCost' : 'spotGrossCost'\n var num = getFooterForColumn('sum', data, selector)\n return (\n

\n \n

\n )\n },\n },\n ]\n\n // Max Consumption for period\n const maxConsumptionCol = {\n Header: `${t('objects:tableModalHeaders.maxConsumption')}`,\n accessor: 'maxConsumption',\n className: 'text-right',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n let field = props.cell.value\n return field ? (\n onRowClickHanler(props.row.original.timestamp)}\n className={\n freq === 'hour'\n ? 'text-right tracking-wider'\n : 'cursor-pointer text-right tracking-wider hover:underline'\n }\n >\n \n

\n ) : null\n },\n }\n\n const monthlyCols = [\n // Grid Rent\n {\n Header: t('objects:gridCost'),\n accessor: 'objectId',\n sortType: 'basic',\n className: 'text-right',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const field = showNett\n ? props.row.original.gridCost\n : props.row.original.gridGrossCost\n return (\n gridRentClickHandler(props.row.original.timestamp)}\n className={\n freq === 'hour'\n ? 'text-right tracking-wider'\n : 'cursor-pointer text-right tracking-wider hover:underline'\n }\n >\n \n

\n )\n },\n Footer: ({ data }: any) => {\n let selector = showNett ? 'gridCost' : 'gridGrossCost'\n var num = getFooterForColumn('sum', data, selector)\n return (\n <>\n

\n \n

\n \n )\n },\n },\n // Total Cost\n {\n Header: t('objects:totalCost'),\n accessor: 'totalCost',\n sortType: 'basic',\n className: 'text-right',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const field = showNett\n ? props.row.original.totalCost\n : props.row.original.totalGrossCost\n return (\n

\n \n

\n )\n },\n Footer: ({ data }: any) => {\n let selector = showNett ? 'totalCost' : 'totalGrossCost'\n var num = getFooterForColumn('sum', data, selector)\n return (\n <>\n

\n \n

\n \n )\n },\n },\n ]\n\n const powerAgreementCol = {\n Header: `${t('objects:tableModalHeaders.powerAgreement')}`,\n accessor: 'powerAgreement',\n sortType: 'basic',\n className: 'text-right',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const row = props.row.original as MeteringPointConsumptionCost\n const field = showNett\n ? props.row.original.powerAgreementCost\n : props.row.original.powerAgreementGrossCost\n return (\n
\n \n powerAgreementClickHandler(props.row.original.timestamp)\n }\n className=\"cursor-pointer text-right tracking-wider hover:underline\"\n >\n \n \n \n \n {row.powerAgreementQuality && (\n \n )}\n \n
\n )\n },\n Footer: ({ data }: any) => {\n let selector = showNett\n ? 'powerAgreementCost'\n : 'powerAgreementGrossCost'\n var num = getFooterForColumn('sum', data, selector)\n return (\n <>\n

\n \n

\n \n )\n },\n }\n\n if (freq === 'month') {\n return [\n ...startCols,\n maxConsumptionCol,\n ...cols,\n powerAgreementCol,\n ...monthlyCols,\n ]\n } else if (freq === 'year') {\n return [\n ...startCols,\n maxConsumptionCol,\n ...cols,\n powerAgreementCol,\n ...monthlyCols,\n ]\n } else if (freq === 'day') {\n return [...startCols, maxConsumptionCol, ...cols]\n } else {\n return [...startCols, ...cols]\n }\n }, [\n freq,\n showNett,\n t,\n onRowClickHanler,\n powerAgreementClickHandler,\n gridRentClickHandler,\n hasProduction,\n consumptionType,\n data,\n isLoading,\n graphSeries,\n ])\n\n return (\n <>\n \n {hasProduction && graphSeries === 'consumption' && (\n \n )}\n\n
\n {isLoading ? (\n
\n \n
\n ) : data ? (\n \n ) : (\n \n )}\n
\n\n setGraphSeries(value)}\n />\n\n \n\n null} //onRowClickHanler(rowData['timestamp'])}\n tableStyleOverride=\"ml-6 md:ml-0 table-fixed md:table-auto\"\n thStyleOverride=\"text-base text-gray-500 font-medium\"\n tdStyleOverride=\"px-3 first:w-10 first:max-w-lg first:w-96\"\n />\n\n setShowGridRentModal(false)}\n start={gridRentFromDate}\n end={gridRentToDate}\n aggregationType={freq}\n />\n\n setShowPowerAgreementModal(false)}\n start={powerAgreementFromDate}\n end={powerAgreementToDate}\n aggregationType={freq}\n />\n \n )\n}\n\nexport const ConsumptionTypeChanger = ({\n consumptionTypeChangeHandler,\n consumptionType,\n}: {\n consumptionTypeChangeHandler: Function\n consumptionType: any\n}) => {\n const { t } = useTranslation()\n\n const options = ['netConsumption', 'splitConsumption']\n\n return (\n
\n
\n {options.map((value: any, index: any) => (\n consumptionTypeChangeHandler(value)}\n key={index}\n className={cn(\n 'px-4 py-2 hover:bg-gray-100',\n consumptionType === value &&\n 'border-l border-r border-gray-600 bg-gray-100',\n index === 0 && 'rounded-l-xl border-l-0',\n index === options.length - 1 && 'rounded-r-xl border-r-0'\n )}\n >\n {t(`objects:${value}`)}\n
\n ))}\n
\n
\n )\n}\n\nexport const IsNotComplete = ({\n field,\n}: {\n field: boolean | null | undefined\n}) => {\n const { t } = useTranslation()\n if (field === false) {\n return (\n
\n \n {t('objects:notComplete')}\n \n \n
\n )\n } else return null\n}\n\nexport const FieldQuality = ({\n quality,\n type,\n}: {\n quality: number\n type: fieldQualityType\n}) => {\n const { t } = useTranslation()\n let color = 'text-green-600'\n let tooltip =\n type === 'consumption'\n ? t('objects:consumptionQuality.measured')\n : t('objects:powerAgreementQuality.verified')\n\n let Icon = CheckCircleIcon\n\n switch (quality) {\n case 2:\n color = 'text-yellow-600'\n tooltip =\n type === 'consumption'\n ? t('objects:consumptionQuality.estimated')\n : t('objects:powerAgreementQuality.confirmed')\n break\n case 3:\n color = 'text-red-600'\n tooltip =\n type === 'consumption'\n ? t('objects:consumptionQuality.temporary')\n : t('objects:powerAgreementQuality.notConfirmed')\n Icon = ExclamationCircleIcon\n break\n }\n return (\n
\n \n {tooltip}\n \n \n
\n )\n}\n","import { useParams } from 'react-router-dom'\nimport { Consumption } from 'src/components/Consumption'\n\nconst ConsumptionPage = () => {\n const objectId = useParams<'objectId'>().objectId as string\n\n return \n}\n\nexport default ConsumptionPage\n","import dayjs from 'dayjs'\nimport { FC, HTMLProps } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nconst Heading: FC<{\n button?: HTMLProps\n updatedTime?: string\n}> = ({ children, button, updatedTime }) => {\n const { t } = useTranslation()\n return (\n
\n

\n {children}\n

\n {button ? (\n
\n

\n {t('objects:detailView.lastUpdated')}:{' '}\n {dayjs(updatedTime).format('DD.MM.YYYY HH:mm')}\n

\n {button}\n
\n ) : (\n ''\n )}\n
\n )\n}\n\nconst Grid: FC = ({ children }) => (\n
\n {children}\n
\n)\n\nconst Container: FC = ({ children }) => (\n
{children}
\n)\n\nconst Item = ({ name, value }: { name: string; value: string }) => (\n
\n {name}\n \n {value ? value : ' '}\n \n
\n)\n\nconst Tag = ({ name, value }: { name: string; value: string }) => (\n
\n {name} #{value}\n
\n)\n\nconst Section = { Heading, Grid, Container, Item, Tag }\n\nexport default Section\n","import { Fragment } from 'react'\nimport { Dialog, Transition } from '@headlessui/react'\nimport { useTranslation } from 'react-i18next'\nimport { CloseButton } from '../action'\ninterface HelpModalProps {\n isOpen: boolean\n onClose: () => void\n helpVideoUrl?: string\n helpText?: string\n}\n\nconst HelpModal = ({\n isOpen,\n onClose,\n helpVideoUrl,\n helpText,\n}: HelpModalProps) => {\n const { t } = useTranslation()\n return (\n \n \n
\n {/* */}\n \n {/* */}\n\n {/* This element is to trick the browser into centering the modal contents. */}\n \n ​\n \n \n
\n
\n
\n
\n \n {t('global:help')}\n \n
\n \n
\n \n
\n
\n \n
\n \n
\n )\n}\n\nconst HelpComponent = ({\n helpVideoUrl,\n helpText,\n}: {\n helpVideoUrl?: string\n helpText?: string\n}) => {\n return (\n
\n

{helpText}

\n
\n \n
\n
\n )\n}\nexport default HelpModal\n","import { useState, type PropsWithChildren } from 'react'\nimport {\n CheckIcon,\n PencilIcon,\n XIcon,\n RefreshIcon,\n} from '@heroicons/react/solid'\n\nimport { QuestionMarkCircleIcon } from '@heroicons/react/outline'\nimport { useTranslation } from 'react-i18next'\nimport Section from 'src/components/DetailComponents/Section'\nimport { useMeter } from 'src/context/meter'\nimport { useParams } from 'react-router-dom'\nimport { useMutation, useQuery } from '@tanstack/react-query'\nimport APIClient from 'src/utils/apiClient'\nimport Spinner from 'src/components/Spinner'\nimport { Loading } from 'src/components/Loading'\nimport {\n MeteringPointDetails,\n MeteringPointOverview,\n MeteringPointCustomer,\n MeteringPointCustomerAddress,\n MeteringPointCustomerCommunication,\n} from 'src/generated/client'\nimport HelpModal from 'src/components/HelpModal/HelpModal'\nimport { ActionButton } from 'src/components/action'\n\nconst tagKeys = ['objectId', 'meteringPointId', 'ean'] as const\n\nconst meteringKeys = [\n 'meteringPointId',\n 'meteringPointType',\n // 'accessType', // Access type is rendered independently on \n 'priority',\n 'capacityValue',\n 'estimatedConsumption',\n 'meterIdentification',\n 'numberOfDigits',\n 'constant',\n 'meterLocation',\n] as const\n\nconst propertyKeys = [\n 'streetName',\n 'buildingNumber',\n 'postCode',\n 'cityName',\n 'description',\n] as const\n\nconst detailKeys = [\n 'balanceAreaId',\n 'vat',\n 'naceDevisionCode',\n 'elCertShare',\n 'settlementMethod',\n 'netOwnerName',\n] as const\n\nconst otherKeys = ['companyName'] as const\n\nconst customerAddressesKeys = [\n // 'plantCustomerAddressID',\n // 'addressType',\n 'streetName',\n 'streetCode',\n 'buildingNumber',\n 'floorID',\n 'roomID',\n 'postCode',\n 'city',\n 'citySubDivisionName',\n 'municipalityCode',\n 'country',\n 'addressFreeForm',\n 'postOfficeBox',\n 'careOf',\n 'attentionOf',\n 'onBehalfOf',\n] as const\n\nconst customerCommunicationsKeys = [\n 'communicationChannel',\n 'identification',\n 'description',\n] as const\n\ntype ChangeName = (name: string) => void\n\ntype MeteringPointProps = {\n meteringPoint?: MeteringPointDetails\n}\n\ntype PlantCustomerProps = {\n customer?: MeteringPointCustomer\n}\n\nconst Details = () => {\n const objectId = useParams<'objectId'>().objectId as string\n const meter = useMeter()\n\n const {\n isLoading: isMeterLoading,\n error: meterError,\n data: meteringPoint,\n refetch: reloadObject,\n } = useQuery(['plant', objectId], () => APIClient.getPlant(objectId))\n\n const {\n isLoading: isCustomerLoading,\n error: customerError,\n data: customer,\n } = useQuery(\n ['customer', objectId],\n async () => {\n return APIClient.getMeterCustomer(objectId)\n },\n { enabled: !!objectId }\n )\n\n const onChangeName: ChangeName = async (name: string) => {\n try {\n await APIClient.setObjectName(objectId, name)\n reloadObject()\n } catch (err) {\n console.log('Something went wrong', err)\n }\n }\n\n if (isCustomerLoading || !customer || isMeterLoading || !meteringPoint) {\n return \n }\n\n if (customerError) {\n console.error(customerError)\n return

Error. Check console.

\n }\n\n if (meterError) {\n console.error(meterError)\n return

Error. Check console.

\n }\n\n return (\n
\n \n \n\n \n \n\n \n \n \n
\n )\n}\n\nexport default Details\n\ntype EditableTextProps = {\n text: string\n onSubmit: (text: string) => void\n}\n\nconst EditableText = ({ text, onSubmit }: EditableTextProps) => {\n const [value, setValue] = useState(text)\n const [editing, setEditing] = useState(false)\n\n const startEditing = () => setEditing(true)\n const finishEditing = () => setEditing(false)\n\n const handleSubmit = () => {\n onSubmit(value)\n setEditing(false)\n }\n\n return editing ? (\n
\n setValue(e.target.value)}\n />\n \n \n \n \n \n \n
\n ) : (\n
\n {text}\n \n \n \n
\n )\n}\n\nconst EditableButtonWrapper = ({\n children,\n onClick,\n}: PropsWithChildren<{ onClick?: () => void }>) => {\n return (\n \n {children}\n \n )\n}\n\nconst HeaderSection = ({\n meter,\n onChangeName,\n meteringPoint,\n}: {\n meter?: MeteringPointOverview\n onChangeName: ChangeName\n meteringPoint?: MeteringPointDetails\n}) => {\n const { t } = useTranslation()\n\n const [showHelpModal, setShowHelpModal] = useState(false)\n\n return (\n
\n
\n

\n {t('objects:detailView.facility')}\n

\n
\n \n \n \n {meter && (\n
\n {tagKeys.map((item) => (\n \n ))}\n
\n )}\n
\n
\n\n
\n {meteringPoint && (\n
\n \n {t('objects:detailView.accessType')}\n \n \n {meteringPoint.accessType}\n \n
\n )}\n\n setShowHelpModal(true)}\n Icon={QuestionMarkCircleIcon}\n >\n {t('global:help')}\n \n
\n\n setShowHelpModal(false)}\n helpVideoUrl={t('objects:detailView.helpVideoUrl')}\n helpText={t('objects:detailView.helpText')}\n />\n
\n )\n}\n\nconst SyncDetailsButton = () => {\n const { t } = useTranslation()\n const objectId = useParams<'objectId'>().objectId as string\n\n const { mutate, isLoading, isSuccess } = useMutation(() => {\n const promises = [\n () => APIClient.syncPlant(objectId),\n () => APIClient.syncCustomer(objectId),\n ]\n\n return Promise.all(promises.map((p) => Promise.resolve(p())))\n })\n\n const handleClick = async () => await mutate()\n\n if (isLoading) return \n\n return (\n \n {isSuccess ? (\n <>{t('objects:detailView.synced')}\n ) : (\n <>{t('objects:detailView.sync')}\n )}\n \n )\n}\n\nconst MeteringSection = ({ meteringPoint }: MeteringPointProps) => {\n const { t } = useTranslation()\n\n return (\n \n }\n updatedTime={String(meteringPoint?.updatedTime)}\n >\n {t('objects:detailView.elhubDetails')}\n \n {meteringPoint && (\n \n {meteringKeys.map((item) => (\n \n ))}\n \n )}\n \n )\n}\n\nconst PropertySection = ({ meteringPoint }: MeteringPointProps) => {\n const { t } = useTranslation()\n return (\n \n {/* Property details */}\n {meteringPoint && (\n \n {propertyKeys.map((item) => (\n \n ))}\n \n )}\n \n )\n}\nconst DetailsSection = ({ meteringPoint }: MeteringPointProps) => {\n const { t } = useTranslation()\n return (\n \n {/* Other details */}\n {meteringPoint && (\n \n {detailKeys.map((item) => (\n \n ))}\n \n )}\n \n )\n}\n\nconst CustomerDetailsSection = ({ customer }: PlantCustomerProps) => {\n const { t } = useTranslation()\n\n return (\n \n }\n updatedTime={String(customer?.updatedTime)}\n >\n {t('objects:customerView.customerDetails')}\n \n {customer && (\n \n {otherKeys.map((item) => (\n \n ))}\n \n \n )}\n \n )\n}\n\nconst CustomerCommunicationsSection = ({ customer }: PlantCustomerProps) => {\n const { t } = useTranslation()\n const communications: MeteringPointCustomerCommunication[] =\n customer?.customerCommunications ?? []\n return (\n <>\n {communications.length !== 0 && (\n \n \n {t(\n 'objects:customerView.customerCommunications.customerCommunications'\n )}\n \n {communications.map(\n (comm: MeteringPointCustomerCommunication, index) => (\n
\n \n {customerCommunicationsKeys.map((item) => (\n \n ))}\n \n
\n )\n )}\n
\n )}\n \n )\n}\n\nconst CustomerAddressesSection = ({ customer }: PlantCustomerProps) => {\n const { t } = useTranslation()\n\n const addresses: MeteringPointCustomerAddress[] =\n customer?.customerAddresses ?? []\n\n return (\n <>\n {addresses.length !== 0 && (\n \n \n {t('objects:customerView.customerAddresses.customerAddresses')}\n \n {addresses.map((addr: MeteringPointCustomerAddress, i) => (\n \n \n {customerAddressesKeys.map((item) => (\n \n ))}\n \n ))}\n \n )}\n \n )\n}\n","import { useNavigate } from 'react-router'\n\ninterface FooterNavProps {\n currentStep: string\n prevStep: any\n}\n\nconst FooterNav = ({ currentStep, prevStep }: FooterNavProps) => {\n const OnClickPrevStep = () => {\n console.log('clickeD? ')\n prevStep(parseInt(currentStep) - 1)\n }\n\n const navigate = useNavigate()\n\n const OnClickNextStep = () => {\n // nextStep(parseInt(currentStep) + 1);\n }\n\n const saveAndContinueLater = () => {}\n\n const redirctToHome = () => {\n const alertConfirm = window.confirm('Er du sikker på at du vil avbryte?')\n\n if (alertConfirm) {\n navigate(`/App/index`)\n } else return\n }\n\n return (\n <>\n {' '}\n
\n redirctToHome()}\n >\n Avbryt\n
\n {currentStep !== '1' && (\n OnClickPrevStep()}\n >\n Tilbake\n \n )}\n {currentStep !== '7' && (\n OnClickNextStep()}\n >\n Fortsett\n \n )}\n saveAndContinueLater()}\n >\n Lagre og fortsett senere\n
\n {currentStep === '1' && (\n <>\n \n *\n \n )}\n \n \n )\n}\n\nexport default FooterNav\n","import { useMemo, useState } from 'react'\nimport { Card } from 'src/components/Card'\nimport { Table } from 'src/components/Table'\n\ninterface Step1Props {\n currentStep: string\n nextStep: (step: any) => void\n children: any\n}\ninterface Step1State {\n results: Array\n searchValue: string\n searchPerformed: boolean\n}\n\nconst Step1 = (props: Step1Props) => {\n const initialState = {\n results: [],\n searchValue: '',\n searchPerformed: false,\n }\n\n const [state, setState] = useState(initialState)\n\n const searchValue = (searchValue: string) => {\n setState((prevState) => ({\n ...prevState,\n searchValue,\n }))\n }\n\n const sumbitFormData = (e: any) => {\n e.preventDefault()\n props.nextStep(parseInt(props.currentStep) + 1)\n }\n\n const companySearch = () => {\n setState((prevState) => ({\n ...prevState,\n // results: mockData,\n searchPerformed: true,\n }))\n }\n\n const columns = useMemo(\n () => [\n {\n Header: 'Navn',\n accessor: 'navn',\n sortType: 'basic',\n },\n {\n Header: 'Forretningsadresse',\n accessor: 'forretningsadresse',\n sortType: 'basic',\n },\n {\n Header: 'Postadresse',\n accessor: 'postadresse',\n sortType: 'basic',\n },\n ],\n []\n )\n\n return (\n <>\n
\n

\n Vi henter ut bedriftsinformasjon automatisk fra enhetsregisteret\n basert på org. nummer. Informasjon kan du endre senere i prosessen\n

\n\n
\n \n
sumbitFormData(e)}>\n
\n
\n

{state.searchValue ? `\"${state.searchValue}\"` : 'Søk...'}

\n
\n
\n companySearch()}\n >\n \n \n \n \n
\n
\n searchValue(e.target.value)}\n />\n
\n
\n
\n {props.children}\n \n\n {state.results.length > 0 && (\n
\n

\n Vi fant følgende firma i enhetsregisteret​:\n

\n
\n
\n )}\n {state.results.length > 0 && (\n
\n {\n return\n }}\n />\n
\n )}\n\n {state.results.length === 0 && state.searchPerformed && (\n
\n

\n Ingen treff\n

\n
\n )}\n \n \n \n )\n}\n\nexport default Step1\n","import { useState } from 'react'\nimport { Card } from 'src/components/Card'\n\ninterface Step2Props {\n currentStep: string\n nextStep: any\n children: any\n}\n\ninterface Step2State {\n otherContactAddress: boolean\n}\n\nconst Step2 = ({ currentStep, nextStep, children }: Step2Props) => {\n const initialState = {\n otherContactAddress: false,\n }\n const [state, setState] = useState(initialState)\n\n const setCheckBox = () => {\n setState((prevState) => ({\n ...prevState,\n otherContactAddress: !state.otherContactAddress,\n }))\n }\n\n const submitData = (e: React.FormEvent) => {\n e.preventDefault()\n nextStep(parseInt(currentStep) + 1)\n }\n\n return (\n <>\n
\n
\n

\n Basert på den informasjonen som er registrert på org. nummer du tastet\n inn i forrige sted, har vi fylt ut flere av feltene under. Fyll inn\n den informasjon som mangler eller er feil. (Juridisk navn og org.\n nummer kan ikke endres).\n

\n \n
submitData(e)}>\n
\n
\n Firmaopplysninger\n
\n\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n\n
\n
\n Brukerinformasjon\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n Annen kontaktperson\n
\n
\n setCheckBox()}\n className=\"ml-1\"\n />\n {/* @Html.CheckBoxFor(m => m.StepData.Step2.DefineAnotherContact, new { @id = \"define-contact-checkbox\", onclick = \"onContactCheckboxClick();\" }) */}\n {/* For=\"Step2_DefineAnotherContact\" */}\n \n
\n
\n
\n {state.otherContactAddress && (\n <>\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n )}\n
\n
\n
\n
\n
\n
\n Postadresse\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n Besøkadresse\n
\n
\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n {children}\n \n \n \n \n )\n}\n\nexport default Step2\n","import { useMemo } from 'react'\nimport { Card } from 'src/components/Card'\nimport { Table } from 'src/components/Table'\n\ninterface Step3Props {\n currentStep: string\n children: any\n nextStep: (next: any) => void\n}\n\n// interface Step3State {}\n\nconst Step3 = (props: Step3Props) => {\n // const initialState = {}\n\n // const [state, setState] = useState(initialState)\n\n const columns = useMemo(\n () => [\n {\n Header: 'Product ID',\n accessor: 'ProductID',\n sortType: 'basic',\n },\n {\n Header: 'Product Name',\n accessor: 'ProductName',\n sortType: 'basic',\n },\n {\n Header: 'Description',\n accessor: 'Description',\n sortType: 'basic',\n },\n {\n Header: 'Product Image Url',\n accessor: 'ProductImageUrl',\n sortType: 'basic',\n },\n ],\n []\n )\n\n const submitFormData = () => {\n props.nextStep(parseInt(props.currentStep) + 1)\n }\n\n return (\n <>\n
\n
\n

Produkt

\n
\n \n
submitFormData()}>\n
\n
\n {\n return\n }}\n />\n
\n
\n\n
\n \n Velg hvor langt tilbake du vil at strømradar skal hente data fra\n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n {props.children}\n
\n
\n
\n
\n \n )\n}\n\nexport default Step3\n","import { Card } from 'src/components/Card'\n\ninterface Step4Props {\n currentStep: string\n nextStep: (next: any) => void\n children: any\n}\n\n// interface Step4State {}\n\nconst Step4 = (props: Step4Props) => {\n const submitInvoice = () => {\n props.nextStep(parseInt(props.currentStep) + 1)\n }\n\n // const onClickNextStep = () => {}\n // const onClickPrevStep = () => {}\n\n return (\n <>\n
\n \n
submitInvoice()}>\n
\n
\n

\n Kryss av hvilken type faktura du ønsker\n

\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n
\n

\n Kryss av for hvilken fakturahyppighet du ønsker\n

\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n
\n

Fakturainformasjon

\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n {props.children}\n
\n
\n
\n \n )\n}\n\nexport default Step4\n","import { Card } from 'src/components/Card'\n\ninterface Step5Props {\n currentStep: string\n nextStep: (next: any) => void\n children: any\n}\n\nconst Step5 = (props: Step5Props) => {\n const submitFormData = () => {\n props.nextStep(parseInt(props.currentStep) + 1)\n }\n\n return (\n <>\n
\n
\n

\n For at vi skal vite hvilke anlegg vi skal hente data på, så trenger\n vi målepunkt ID på de adressene du ønsker å ha Strømradar på, ved å\n trykke på knappen under kan du laste opp en .CSV fil, dersom du ikke\n har tilgang til CSV så kan du legge inn målepunkt ID (et eller\n flere) manuelt i feltene under. Du kan også legge til nye anlegg\n etter registrering.\n

\n
\n \n
submitFormData()}>\n
\n
\n \n\n \n \n LastOpp\n \n
\n
\n
\n
\n
\n

Legg til målepunkt ID

\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n \n Legg til anlegg\n \n
\n
\n {props.children}\n
\n
\n
\n \n )\n}\n\nexport default Step5\n","import { useMemo, useState } from 'react'\nimport { Card } from 'src/components/Card'\nimport { Table } from 'src/components/Table'\n\ninterface Step6Props {\n currentStep: string\n nextStep: (next: any) => void\n children: any\n}\n\ninterface Step6State {\n otherContactAddress: boolean\n}\n\nconst Step6 = (props: Step6Props) => {\n const initialState = {\n otherContactAddress: false,\n }\n const [state, setState] = useState(initialState)\n\n const setCheckBox = () => {\n setState((prevState) => ({\n ...prevState,\n otherContactAddress: !state.otherContactAddress,\n }))\n }\n\n const columns = useMemo(\n () => [\n {\n Header: 'Navn',\n accessor: 'Navn',\n sortType: 'basic',\n },\n {\n Header: 'Forretningsadresse',\n accessor: 'Forretningsadresse',\n sortType: 'basic',\n },\n {\n Header: 'Postadresse',\n accessor: 'Postadresse',\n sortType: 'basic',\n },\n ],\n []\n )\n\n const meterColumns = useMemo(\n () => [\n {\n Header: 'Type',\n accessor: 'Type',\n },\n {\n Header: 'Poststed',\n accessor: 'Poststed',\n },\n {\n Header: 'Postadresse',\n accessor: 'Postadresse',\n },\n {\n Header: 'Netteier',\n accessor: 'Netteier',\n },\n ],\n []\n )\n\n const onFormSubmit = () => {}\n\n return (\n \n
onFormSubmit()}>\n
\n
\n
\n

Enroll

\n
\n
\n
\n
Org.nummer
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n {\n return\n }}\n />\n
\n
\n
\n
\n Organisasjon\n
\n
\n
\n
\n Firmaopplysninger\n
\n
\n
\n
\n \n
\n
\n\n
\n \n
\n
\n
\n
\n \n
\n\n
\n \n
\n
\n
\n
\n
\n Brukerinformasjon\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n Annen kontaktperson\n
\n
\n setCheckBox()}\n className=\"ml-1\"\n />\n \n
\n
\n
\n\n {state.otherContactAddress && (\n <>\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n )}\n
\n
\n
\n
\n
\n
\n Postadresse\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n Besøkadresse\n
\n\n
\n \n
\n
\n \n
\n\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n {\n return\n }}\n />\n
\n
\n
\n
\n Faktura\n
\n
\n
\n Fakturainformasjon\n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n Fakturatype\n
\n
\n
\n \n \n Invoice Type\n \n
\n
\n
\n
\n
\n
\n
\n Fakturahyppighet\n
\n
\n
\n \n \n InvoiceFrequency\n \n
\n
\n
\n
\n
\n {\n return\n }}\n />\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n {props.children}\n
\n
\n )\n}\n\nexport default Step6\n","import { useState } from 'react'\nimport { Card } from 'src/components/Card'\n\ninterface Step7Props {\n currentStep: string\n prevStep: (prevStep: any) => void\n}\n\ninterface Step7State {\n termsAgree: boolean\n}\n\nconst Step7 = (props: Step7Props) => {\n const initialState = {\n termsAgree: false,\n }\n const [state, setState] = useState(initialState)\n\n const onWizardSubmission = () => {}\n\n const onClickPrevStep = (step: any) => {\n props.prevStep(parseInt(props.currentStep) - 1)\n }\n\n const onSetTerms = () => {\n setState((prevState) => ({\n ...prevState,\n termsAgree: !state.termsAgree,\n }))\n }\n\n return (\n <>\n
\n \n
onWizardSubmission()}>\n
\n onSetTerms()}\n className=\"mr-2\"\n id=\"accept\"\n />\n \n
\n\n
\n onClickPrevStep(step)}\n >\n Avbryt\n \n onClickPrevStep(step)}\n >\n Tilbake\n \n {!state.termsAgree && (\n \n Signer og send inn\n \n )}\n
\n
\n
\n
\n \n )\n}\n\nexport default Step7\n","import { useEffect } from 'react'\n\ninterface WizardStepsProps {\n steps: Array\n activeStep: string\n selectedStep: (currentStep: number) => void\n}\nconst WizardSteps = ({ steps, activeStep, selectedStep }: WizardStepsProps) => {\n useEffect(() => {\n console.log(activeStep)\n }, [activeStep])\n\n return (\n <>\n
\n
\n {steps.map((step, index) => {\n return (\n selectedStep(index + 1)}\n key={index}\n id={`step-box-${index + 1}`}\n className={`ml-4 rounded-3xl border px-4 py-2 font-semibold md:py-3 ${\n parseInt(activeStep) === index + 1\n ? 'bg-green-400'\n : 'bg-gray-400'\n }`}\n >\n
\n \n {index + 1}\n \n {step}\n
\n
\n )\n })}\n
\n \n \n )\n}\n\nexport default WizardSteps\n","import { useEffect, useState } from 'react'\nimport { useNavigate, useLocation, useParams } from 'react-router'\nimport FooterNav from './FooterNav'\nimport Step1 from './steps/Step1'\nimport Step2 from './steps/Step2'\nimport Step3 from './steps/Step3'\nimport Step4 from './steps/Step4'\nimport Step5 from './steps/Step5'\nimport Step6 from './steps/Step6'\nimport Step7 from './steps/Step7'\n\nimport WizardSteps from './WizardSteps'\n\nconst steps = [\n 'Org. nummer​',\n 'Organisasjon​',\n 'Produkt',\n 'Faktura',\n 'Anlegg​',\n 'Sammendrag',\n 'Signering',\n]\n\ninterface EnrollProps {}\n\ninterface EnrollState {\n activeTab: string\n}\n\nconst Enroll = (props: EnrollProps) => {\n const step = useParams<'step'>().step as string\n\n const initialState = {\n activeTab: step,\n }\n\n const navigate = useNavigate()\n const location = useLocation()\n\n const [state, setState] = useState(initialState)\n\n useEffect(() => {\n const path = `/App/Enroll/${state.activeTab}`\n navigate(path)\n }, [state.activeTab, navigate])\n\n useEffect(() => {\n const path = `/App/Enroll/${location.pathname.slice(-1)}`\n setState((prevState) => ({\n ...prevState,\n activeTab: location.pathname.slice(-1),\n }))\n navigate(path)\n }, [location.pathname, navigate])\n\n const renderStep = () => {\n switch (state.activeTab) {\n case '1':\n return (\n nextStep(next)}\n >\n prevStep(prev)}\n />\n \n )\n case '2':\n return (\n nextStep(next)}\n >\n prevStep(prev)}\n />\n \n )\n case '3':\n return (\n nextStep(next)}\n >\n prevStep(prev)}\n />\n \n )\n case '4':\n return (\n nextStep(next)}\n >\n prevStep(prev)}\n />\n \n )\n case '5':\n return (\n nextStep(next)}\n >\n prevStep(prev)}\n />\n \n )\n case '6':\n return (\n nextStep(next)}\n >\n prevStep(prev)}\n />\n \n )\n case '7':\n return (\n prevStep(step)}\n />\n )\n // default:\n // return (\n // nextStep(next)}\n // >\n // prevStep(prev)}\n // />\n // \n // );\n }\n }\n\n const selectedStep = (currentStep: any) => {\n setState((prevState) => ({\n ...prevState,\n activeTab: currentStep.toString(),\n }))\n }\n\n const prevStep = (prev: any) => {\n setState((prevState) => ({\n ...prevState,\n activeTab: prev.toString(),\n }))\n }\n\n const nextStep = (next: any) => {\n setState((prevState) => ({\n ...prevState,\n activeTab: next.toString(),\n }))\n }\n\n return (\n <>\n
\n selectedStep(currentStep)}\n activeStep={state.activeTab}\n />\n {renderStep()}\n
\n \n )\n}\n\nexport default Enroll\n","import dayjs from 'dayjs'\nimport { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport type { FreqType } from '../../types'\nimport {\n Label,\n CartesianGrid,\n XAxis,\n YAxis,\n Tooltip,\n Bar,\n ResponsiveContainer,\n ComposedChart,\n Line,\n ReferenceLine,\n TooltipProps,\n} from 'recharts'\nimport {\n NameType,\n ValueType,\n} from 'recharts/types/component/DefaultTooltipContent'\nimport { pad } from '../Consumption/utils'\nimport { MeteringPointPeak } from 'src/generated/client'\n\nconst round = (value: any, decimals: number) =>\n Math.round(value * 10 ** decimals) / 10 ** decimals\n\nexport const PeakGraph = ({\n data,\n freq,\n onGraphClick,\n}: {\n data: MeteringPointPeak[]\n freq: FreqType\n showNett: boolean\n onGraphClick: (v: string) => void\n}) => {\n const { t } = useTranslation()\n\n const graphData = useMemo(() => {\n return pad(data, freq)?.map((item: MeteringPointPeak, i: number) => ({\n timestamp: item.timestamp,\n measured: item.isPayable ? 0 : item.isPeak ? 0 : item.measured,\n peak: item.isPeak ? item.measured : 0,\n measuredLastYear: item.measuredLastYear,\n payableAverage: item.payableAverage,\n payable: item.isPayable ? item.measured : 0,\n limitDown: item.limitDown,\n limitUp: item.limitUp,\n }))\n }, [data, freq])\n\n const yLabel1 = t(`objects:peak.peakTableHeaders.peakYAxis`)\n const xLabel = t(`consumption:graph.${freq}`)\n\n return (\n
\n \n onGraphClick(data?.activeLabel)}\n data={graphData}\n margin={{ top: 0, right: 50, left: 50, bottom: 30 }}\n stackOffset=\"sign\"\n >\n \n xAxisTickFormatter(value, freq, t)}\n >\n \n \n
\n )\n}\n\nconst PeakTooltip = ({\n active,\n payload,\n freq,\n label,\n}: TooltipProps & { freq: FreqType }) => {\n const { t } = useTranslation()\n\n if (active && payload && payload.length) {\n return (\n
\n {freq === 'year' ? (\n

{dayjs(payload[0].payload.timestamp).format('YYYY')}

\n ) : freq === 'month' ? (\n

\n {`${t(\n `global:shortMonths.${dayjs(payload[0].payload.timestamp)\n .format('MMM')\n .toLowerCase()}`\n )} ${dayjs(payload[0].payload.timestamp).format('YYYY')}`}\n

\n ) : freq === 'day' ? (\n

{dayjs(payload[0].payload.timestamp).format('DD.MM.YYYY')}

\n ) : freq === 'hour' ? (\n

\n {dayjs(payload[0].payload.timestamp).format('HH:mm DD.MM.YYYY')}\n

\n ) : null}\n\n
\n
\n {payload.map(\n (entry, index) =>\n entry.value !== 0 && (\n

\n {t(`objects:peak.peakTableHeaders.${entry.name}`)}:{' '}\n {round(entry.value, 2).toLocaleString('NO')}\n {' kW'}\n

\n )\n )}\n
\n
\n )\n }\n return null\n}\n\nconst xAxisTickFormatter = (value: string, freq: FreqType, t: any) => {\n if (freq === 'month') {\n return t(`global:shortMonths.${dayjs(value).format('MMM').toLowerCase()}`)\n } else if (freq === 'day') {\n return dayjs(value).format('D')\n } else if (freq === 'hour') {\n return dayjs(value).format('H')\n } else {\n return ''\n }\n}\n\nconst PeakLegend = ({ freq }: { freq: FreqType }) => {\n const { t } = useTranslation()\n\n return (\n
\n
\n
\n

{t(`objects:peak.peakTableHeaders:measured`)}

\n
\n {/* {freq === 'month' && (\n
\n
\n

{t(`objects:peak.peakTableHeaders:measuredLastYear`)}

\n
\n )} */}\n
\n
\n

{t(`objects:peak.peakTableHeaders:payable`)}

\n
\n {freq !== 'month' && (\n
\n
\n

{t(`objects:peak.peakTableHeaders:peak`)}

\n
\n )}\n
\n
\n

{t(`objects:peak.peakTableHeaders:payableAverage`)}

\n
\n\n {freq !== 'hour' && (\n
\n
\n

{t(`objects:peak.peakTableHeaders:limitDown`)}

\n
\n )}\n {freq !== 'hour' && (\n
\n
\n

{t(`objects:peak.peakTableHeaders:limitUp`)}

\n
\n )}\n
\n )\n}\n","import { useParams } from 'react-router-dom'\nimport { useCallback, useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useQuery } from '@tanstack/react-query'\nimport dayjs from 'dayjs'\nimport { CheckCircleIcon, ExclamationCircleIcon } from '@heroicons/react/solid'\nimport cn from 'classnames'\n\nimport APIClient from 'src/utils/apiClient'\nimport { useAppState } from 'src/context/appstate'\n\nimport type { MeteringPointConsumptionCost } from 'src/generated/client'\nimport type { FreqType } from 'src/types'\n\nimport useDateChanger from 'src/utils/hooks/useDateChanger'\n\nimport { Table } from 'src/components/Table'\nimport { TextPlaceholder } from 'src/components/TextPlaceholder'\nimport FrequencyChanger from 'src/components/FrequencyChanger'\nimport FormatNumber from 'src/components/FormatNumber'\nimport DateChanger from 'src/components/DateChanger'\nimport Spinner from 'src/components/Spinner'\nimport { PeakGraph } from 'src/components/Peak'\nimport useDateRange from 'src/utils/hooks/useDateRange'\nimport HelpModal from 'src/components/HelpModal/HelpModal'\nimport { QuestionMarkCircleIcon } from '@heroicons/react/outline'\nimport { ActionButton } from 'src/components/action'\nimport { GraphPlaceholder } from 'src/components/GraphPlaceholder'\n\nrequire('dayjs/locale/nb')\n\nconst freqOptions = ['month', 'day', 'hour']\n\nconst Peak = () => {\n const { t } = useTranslation()\n const { showNett } = useAppState()\n\n const objectId = useParams<'objectId'>().objectId as string\n\n const [showHelpModal, setShowHelpModal] = useState(false)\n\n const defaultFreq: FreqType = 'month'\n const defaultFrom: string = dayjs().startOf('year').format('YYYY-MM-DD')\n const defaultTo: string = dayjs()\n .add(1, 'year')\n .startOf('year')\n .format('YYYY-MM-DD')\n\n const { freq, from, to, setDateRange } = useDateRange({\n defaultFreq: defaultFreq,\n defaultFrom: defaultFrom,\n defaultTo: defaultTo,\n })\n\n const { dateDisplay, disablePrev, disableNext } = useDateChanger()\n\n const { isLoading, data } = useQuery(\n ['Peak', objectId, freq, from, to],\n () => APIClient.getMeteringPointPeak(objectId, from, to, freq),\n {\n enabled: !!objectId,\n }\n )\n\n const freqChangeHandler = (value: FreqType) => {\n let tmpFrom = from\n let tmpTo = to\n let tmpFreq = value\n\n if (value === 'month') {\n tmpFrom = dayjs().startOf('year').format('YYYY-MM-DD')\n tmpTo = dayjs().add(1, 'year').startOf('year').format('YYYY-MM-DD')\n } else if (value === 'day') {\n if (dayjs().date() === 1) {\n tmpFrom = dayjs()\n .startOf('month')\n .subtract(1, 'month')\n .format('YYYY-MM-DD')\n tmpTo = dayjs(tmpFrom)\n .add(1, 'month')\n .startOf('month')\n .format('YYYY-MM-DD')\n } else {\n tmpFrom = dayjs().startOf('month').format('YYYY-MM-DD')\n tmpTo = dayjs(tmpFrom)\n .add(1, 'month')\n .startOf('month')\n .format('YYYY-MM-DD')\n }\n } else if (value === 'hour') {\n tmpFrom = dayjs().subtract(1, 'day').startOf('day').format('YYYY-MM-DD')\n tmpTo = dayjs(tmpFrom).add(1, 'day').startOf('day').format('YYYY-MM-DD')\n }\n\n setDateRange({\n freq: tmpFreq,\n from: tmpFrom,\n to: tmpTo,\n })\n }\n\n const dateChangeHandler = (value: string) => {\n let tmpFrom = from\n let tmpTo = to\n\n let changeByFreq: FreqType = 'month'\n if (freq === 'month') {\n changeByFreq = 'year'\n } else if (freq === 'day') {\n changeByFreq = 'month'\n } else if (freq === 'hour') {\n changeByFreq = 'day'\n }\n if (value === 'previous') {\n tmpFrom = dayjs(tmpFrom).subtract(1, changeByFreq).format('YYYY-MM-DD')\n tmpTo = dayjs(tmpTo)\n .subtract(1, changeByFreq)\n .startOf(changeByFreq)\n .format('YYYY-MM-DD')\n }\n if (value === 'next') {\n tmpFrom = dayjs(tmpFrom).add(1, changeByFreq).format('YYYY-MM-DD')\n tmpTo = dayjs(tmpTo).add(1, changeByFreq).format('YYYY-MM-DD')\n }\n setDateRange({\n freq,\n from: tmpFrom,\n to: tmpTo,\n })\n }\n\n const onRowClickHanler = useCallback(\n (v: string) => {\n let tmpFrom = from\n let tmpTo = to\n let tmpFreq = freq\n\n let value = dayjs(v)\n if (dayjs(value).isBefore(dayjs())) {\n if (freq === 'year') {\n tmpFreq = 'month'\n tmpFrom = dayjs(value).startOf('year').format('YYYY-MM-DD')\n tmpTo = dayjs(value)\n .add(1, 'year')\n .startOf('year')\n .format('YYYY-MM-DD')\n } else if (freq === 'month') {\n tmpFreq = 'day'\n tmpFrom = dayjs(value).startOf('month').format('YYYY-MM-DD')\n tmpTo = dayjs(value)\n .add(1, 'month')\n .startOf('month')\n .format('YYYY-MM-DD')\n } else if (freq === 'day') {\n tmpFreq = 'hour'\n tmpFrom = dayjs(value).startOf('day').format('YYYY-MM-DD')\n tmpTo = dayjs(value).add(1, 'day').startOf('day').format('YYYY-MM-DD')\n }\n\n setDateRange({ freq: tmpFreq, from: tmpFrom, to: tmpTo })\n }\n },\n [freq, to, from, setDateRange]\n )\n\n const initialTableState = useMemo(() => ({}), [])\n\n const meteringpointPeakColumns = useMemo(() => {\n const timestampCol = {\n Header: t('objects:peak.peakTableHeaders.timestamp'),\n accessor: 'timestamp',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const row = props.row.original as MeteringPointConsumptionCost\n\n return (\n
\n onRowClickHanler(String(row.timestamp))}\n className={cn(\n freq === 'hour'\n ? 'tracking-wider'\n : 'cursor-pointer tracking-wider hover:underline'\n )}\n >\n {freq === 'year'\n ? dayjs(props.cell.value).format('YYYY')\n : freq === 'month'\n ? dayjs(props.cell.value).format('MM.YYYY')\n : freq === 'day'\n ? dayjs(props.cell.value).format('DD.MM.YYYY')\n : dayjs(props.cell.value).format('DD.MM.YYYY HH:mm')}\n \n \n {row.isConsumptionComplete === false && (\n *\n )}\n \n\n {row.consumptionQuality && (\n \n )}\n
\n )\n },\n }\n\n const measuredCol = {\n Header: `${t('objects:peak.peakTableHeaders.measured')}`,\n accessor: 'measured',\n className: 'text-right w-40 max-w-lg',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n let field = props.cell.value\n return (\n onRowClickHanler(props.row.original.timestamp)}\n className={cn(\n 'text-right tracking-wider',\n freq !== 'hour' && 'cursor-pointer hover:underline',\n props.row.original.isPeak && 'font-bold text-gray-600',\n props.row.original.isPayable && 'font-bold text-black'\n // props.row\n )}\n >\n \n

\n )\n },\n }\n\n const payableAverageCol = {\n Header: `${t('objects:peak.peakTableHeaders.payableAverage')}`,\n accessor: 'payableAverage',\n className: 'text-right w-52 max-w-lg',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n let field = props.cell.value\n\n return (\n onRowClickHanler(props.row.original.timestamp)}\n className={cn(\n freq === 'hour'\n ? 'w- text-right tracking-wider'\n : 'cursor-pointer text-right tracking-wider hover:underline',\n props.row.original.limitUp &&\n props.row.original.payableAverage >\n props.data[Math.max(0, props.cell.row.index - 1)].limitUp &&\n 'font-bold text-red-600',\n props.row.original.payableAverage >=\n Math.max(\n ...props.data.map((item: any) => item.payableAverage)\n ) &&\n props.row.original.payableAverage !==\n props.data[Math.max(0, props.cell.row.index - 1)]\n .payableAverage &&\n 'font-bold text-yellow-500',\n props.row.original.payableAverage >=\n Math.max(\n ...props.data.map((item: any) => item.payableAverage)\n ) &&\n props.cell.row.index === 0 &&\n 'font-bold text-yellow-500'\n )}\n >\n \n

\n )\n },\n }\n\n const lastYearCol = {\n Header: `${t('objects:peak.peakTableHeaders.measuredLastYear')}`,\n accessor: 'measuredLastYear',\n className: 'text-right w-52 max-w-lg',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n let field = props.cell.value\n return field ? (\n onRowClickHanler(props.row.original.timestamp)}\n className={\n freq === 'hour'\n ? 'text-right tracking-wider'\n : 'cursor-pointer text-right tracking-wider hover:underline'\n }\n >\n \n

\n ) : null\n },\n }\n\n if (freq === 'month') {\n return [timestampCol, measuredCol, lastYearCol, payableAverageCol]\n } else if (freq === 'day') {\n return [timestampCol, measuredCol, payableAverageCol]\n } else if (freq === 'hour') {\n return [timestampCol, measuredCol, payableAverageCol]\n } else {\n return [timestampCol, measuredCol]\n }\n }, [freq, t, onRowClickHanler])\n\n return (\n <>\n
\n
\n\n \n\n
\n
\n setShowHelpModal(true)}\n Icon={QuestionMarkCircleIcon}\n >\n {t('global:help')}\n \n
\n
\n
\n\n
\n {isLoading ? (\n
\n \n
\n ) : data ? (\n data && (\n \n )\n ) : (\n \n )}\n
\n\n \n\n null} //onRowClickHanler(rowData['timestamp'])}\n tableStyleOverride=\"ml-6 md:ml-0 table-fixed md:table-auto\"\n thStyleOverride=\"text-base text-gray-500 font-medium\"\n tdStyleOverride=\"px-3 first:w-10 first:max-w-lg first:w-96\"\n />\n\n setShowHelpModal(false)}\n helpVideoUrl={t('objects:peak.helpVideoUrl')}\n helpText={t('objects:peak.helpText')}\n />\n \n )\n}\n\nconst ConsumptionQuality = ({ quality }: { quality: number }) => {\n const { t } = useTranslation()\n let color = 'text-green-600'\n let tooltip = t('objects:consumptionQuality.measured')\n\n let Icon = CheckCircleIcon\n\n switch (quality) {\n case 2:\n color = 'text-yellow-600'\n tooltip = t('objects:consumptionQuality.estimated')\n break\n case 3:\n color = 'text-red-600'\n tooltip = t('objects:consumptionQuality.temporary')\n Icon = ExclamationCircleIcon\n break\n }\n return (\n
\n \n {tooltip}\n \n \n
\n )\n}\n\nexport default Peak\n","import { useParams } from 'react-router-dom'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useQuery } from '@tanstack/react-query'\nimport dayjs from 'dayjs'\nimport APIClient from 'src/utils/apiClient'\nimport { useAppState } from 'src/context/appstate'\nimport useDateRange from 'src/utils/hooks/useDateRange'\nimport { SpotPriceGraph } from 'src/components/Consumption/Graphs'\nimport type { FreqType } from 'src/types'\nimport Spinner from 'src/components/Spinner'\nimport DateChanger from 'src/components/DateChanger'\nimport FrequencyChanger from 'src/components/FrequencyChanger'\nimport SeriesChanger from 'src/components/SeriesChanger'\n\nrequire('dayjs/locale/nb')\n\nconst freqOptions = ['year', 'month', 'day', 'hour']\n\nconst seriesOptions = ['NO1', 'NO2', 'NO3', 'NO4', 'NO5']\n\nconst SpotPrice = () => {\n const {\n t,\n i18n: { language },\n } = useTranslation()\n\n const { showNett } = useAppState()\n const objectId = useParams<'objectId'>().objectId as string\n\n const defaultFreq: FreqType = 'month'\n const defaultFrom: string = dayjs().startOf('year').format('YYYY-MM-DD')\n const defaultTo: string = dayjs()\n .add(1, 'year')\n .startOf('year')\n .format('YYYY-MM-DD')\n\n const { freq, from, to, setDateRange } = useDateRange({\n defaultFreq: defaultFreq,\n defaultFrom: defaultFrom,\n defaultTo: defaultTo,\n })\n const { data, isLoading } = useQuery(\n ['spotprice', objectId, freq, from, to],\n () => APIClient.getMeteringPointSpotPrice(objectId, from, to, freq)\n )\n\n const [graphSeries, setGraphSeries] = useState()\n\n useEffect(() => {\n setGraphSeries(data?.balanceAreaId)\n }, [data?.balanceAreaId])\n\n const { dateDisplay, disablePrev, disableNext } = useMemo(() => {\n const loc = language === 'no' ? 'nb' : 'en'\n\n if (freq === 'year') {\n return {\n dateDisplay: 'All',\n disablePrev: true,\n disableNext: true,\n }\n } else if (freq === 'month') {\n return {\n dateDisplay: dayjs(from).format('YYYY'),\n disablePrev: dayjs(from)\n .subtract(1, 'year')\n .isBefore(dayjs('2020-01-01')),\n disableNext: dayjs(to).add(1, 'day').isAfter(dayjs()),\n }\n } else if (freq === 'day') {\n return {\n dateDisplay: dayjs(from).locale(loc).format('MMMM YYYY'),\n disablePrev: dayjs(from)\n .subtract(1, 'month')\n .isBefore(dayjs('2020-01-01')),\n disableNext: dayjs(to).add(1, 'day').isAfter(dayjs()),\n }\n } else {\n const fmt = loc === 'nb' ? 'DD.MM.YYYY' : 'YYYY-MM-DD'\n\n const dateDisplay = dayjs(from).format(fmt)\n const disablePrev = dayjs(from)\n .subtract(1, 'day')\n .isBefore(dayjs('2020-01-01'))\n let disableNext = false\n if (dayjs().isAfter(dayjs().set('hour', 13), 'hour')) {\n disableNext = dayjs(to).subtract(1, 'day').isAfter(dayjs())\n } else {\n disableNext = dayjs(to).isAfter(dayjs())\n }\n return {\n dateDisplay,\n disablePrev,\n disableNext,\n }\n }\n }, [freq, from, to, language])\n\n const freqChangeHandler = (value: FreqType) => {\n let tmpFrom = from\n let tmpTo = to\n let tmpFreq = value\n\n if (value === 'year') {\n tmpFrom = dayjs(0).format('YYYY-MM-DD')\n tmpTo = dayjs().format('YYYY-MM-DD')\n } else if (value === 'month') {\n tmpFrom = dayjs().startOf('year').format('YYYY-MM-DD')\n tmpTo = dayjs().add(1, 'year').startOf('year').format('YYYY-MM-DD')\n } else if (value === 'day') {\n if (dayjs().date() === 1) {\n tmpFrom = dayjs()\n .startOf('month')\n .subtract(1, 'month')\n .format('YYYY-MM-DD')\n tmpTo = dayjs(tmpFrom)\n .add(1, 'month')\n .startOf('month')\n .format('YYYY-MM-DD')\n } else {\n tmpFrom = dayjs().startOf('month').format('YYYY-MM-DD')\n tmpTo = dayjs(tmpFrom)\n .add(1, 'month')\n .startOf('month')\n .format('YYYY-MM-DD')\n }\n } else if (value === 'hour') {\n tmpFrom = dayjs().subtract(1, 'day').startOf('day').format('YYYY-MM-DD')\n tmpTo = dayjs(tmpFrom).add(1, 'day').startOf('day').format('YYYY-MM-DD')\n }\n\n setDateRange({ freq: tmpFreq, from: tmpFrom, to: tmpTo })\n }\n\n const dateChangeHandler = (value: string) => {\n let tmpFrom = from\n let tmpTo = to\n\n let changeByFreq: FreqType = 'month'\n if (freq === 'month') {\n changeByFreq = 'year'\n } else if (freq === 'day') {\n changeByFreq = 'month'\n } else if (freq === 'hour') {\n changeByFreq = 'day'\n }\n if (value === 'previous') {\n tmpFrom = dayjs(tmpFrom).subtract(1, changeByFreq).format('YYYY-MM-DD')\n tmpTo = dayjs(tmpTo)\n .subtract(1, changeByFreq)\n .startOf(changeByFreq)\n .format('YYYY-MM-DD')\n }\n if (value === 'next') {\n tmpFrom = dayjs(tmpFrom).add(1, changeByFreq).format('YYYY-MM-DD')\n tmpTo = dayjs(tmpTo).add(1, changeByFreq).format('YYYY-MM-DD')\n }\n\n setDateRange({ freq, from: tmpFrom, to: tmpTo })\n }\n\n const onRowClickHanler = useCallback(\n (v: string) => {\n let tmpFrom = from\n let tmpTo = to\n let tmpFreq = freq\n\n let value = dayjs(v)\n\n if (\n (dayjs().isAfter(dayjs().set('hour', 13), 'hour') &&\n dayjs(value).isBefore(dayjs().add(1, 'day'))) ||\n dayjs(value).isBefore(dayjs())\n ) {\n if (freq === 'year') {\n tmpFreq = 'month'\n tmpFrom = dayjs(value).startOf('year').format('YYYY-MM-DD')\n tmpTo = dayjs(value)\n .add(1, 'year')\n .startOf('year')\n .format('YYYY-MM-DD')\n } else if (freq === 'month') {\n tmpFreq = 'day'\n tmpFrom = dayjs(value).startOf('month').format('YYYY-MM-DD')\n tmpTo = dayjs(value)\n .add(1, 'month')\n .startOf('month')\n .format('YYYY-MM-DD')\n } else if (freq === 'day') {\n tmpFreq = 'hour'\n tmpFrom = dayjs(value).startOf('day').format('YYYY-MM-DD')\n tmpTo = dayjs(value).add(1, 'day').startOf('day').format('YYYY-MM-DD')\n }\n\n setDateRange({ freq: tmpFreq, from: tmpFrom, to: tmpTo })\n }\n },\n [freq, from, to, setDateRange]\n )\n\n return (\n <>\n {data && (\n
\n {t('objects:meteringPointAreaSentence')} {data?.balanceAreaId}\n
\n )}\n \n\n
\n {isLoading ? (\n
\n \n
\n ) : data?.spotPrices?.length !== 0 ? (\n \n ) : (\n
\n {t('global:noDataToDisplay')}\n
\n )}\n
\n\n setGraphSeries(value)}\n />\n\n \n \n )\n}\n\nexport default SpotPrice\n","import { useParams } from 'react-router-dom'\nimport { Consumption } from 'src/components/Consumption'\n\nconst SumCompanyPage = () => {\n const customerId = useParams<'customerId'>().customerId as string\n\n return \n}\n\nexport default SumCompanyPage\n","import dayjs from 'dayjs'\nimport AdvancedFormat from 'dayjs/plugin/advancedFormat'\nimport isoWeek from 'dayjs/plugin/isoWeek'\nimport { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport {\n CartesianGrid,\n XAxis,\n YAxis,\n Tooltip,\n ResponsiveContainer,\n Scatter,\n Label,\n TooltipProps,\n ComposedChart,\n Line,\n} from 'recharts'\n\nimport {\n NameType,\n ValueType,\n} from 'recharts/types/component/DefaultTooltipContent'\nimport type { ETChart, MeteringPointWeatherStation } from 'src/generated/client'\nimport type { FreqType } from 'src/types'\nimport { useSearchParams } from 'react-router-dom'\n\ndayjs.extend(AdvancedFormat)\ndayjs.extend(isoWeek)\n\n// const dataPeriods = [\n// 'month',\n// 'threeMonths',\n// 'sixMonths',\n// 'year',\n// 'all',\n// ] as const\n\n// type DataPeriod = typeof dataPeriods[number]\n\nconst trendLines = ['trendWeekday', 'trendWeekend', 'trend'] as const\n\ntype TrendLine = typeof trendLines[number]\n\nconst round = (value: any, _decimals: number) => Math.round(value * 10) / 10\n\nconst graphColours = {\n DEFAULT: '#53c023',\n two: '#000000',\n three: '#939598',\n four: '#f09521',\n five: '#31791b',\n six: '#d0cece',\n seven: '#2482e0',\n eight: '#904aad',\n nine: '#69c5fa',\n ten: '#e84430',\n} as const\n\ntype PeriodDataDay = {\n weekdays: ETChart[] | undefined\n weekends: ETChart[] | undefined\n}\n\ntype Props = {\n data: ETChart[]\n freq: FreqType\n weatherStations: MeteringPointWeatherStation[]\n}\n\n// type X = ETChart['wee']\n\nconst ScatterPlot = ({ data, freq, weatherStations }: Props) => {\n const { t } = useTranslation()\n const [searchParams] = useSearchParams()\n\n const dayData = useMemo(() => {\n if (freq === 'day') {\n const weekdays = data?.filter(\n (item: any) => !item.isWeekend && !item.isHoliday\n )\n const weekends = data?.filter(\n (item: any) => item.isWeekend || item.isHoliday\n )\n\n const allData: PeriodDataDay = { weekdays: weekdays, weekends: weekends }\n\n return {\n allData,\n weekdays,\n weekends,\n lastSevenWeekdayData: weekdays?.slice(weekdays?.length - 7),\n lastSevenWeekendData: weekends?.slice(weekends?.length - 7),\n }\n }\n\n return null\n }, [data, freq])\n\n const weekData = useMemo(() => {\n if (freq === 'week') {\n if (data[data?.length - 1].isConsumptionComplete === false) {\n const allData = data?.slice(0, data?.length - 1)\n return {\n allData,\n thisWeekData: data?.slice(data?.length - 1, data?.length),\n lastTwoWeeksData: data?.slice(data?.length - 3, data?.length - 1),\n }\n } else {\n return {\n allData: data,\n lastTwoWeeksData: data?.slice(data?.length - 2),\n }\n }\n }\n\n return null\n }, [data, freq])\n\n const monthData = useMemo(() => {\n if (freq === 'month') {\n if (data[data?.length - 1].isConsumptionComplete === false) {\n const allData = data?.slice(0, data?.length - 1)\n return {\n allData,\n thisMonthData: data?.slice(data?.length - 1),\n }\n } else {\n return {\n allData: data,\n thisMonthData: data?.slice(data?.length - 1),\n }\n }\n }\n\n return null\n }, [data, freq])\n\n // const unparsedPeriodTerm = searchParams.get('period')\n\n // let periodTerm: DataPeriod = 'month'\n\n // if (dataPeriods.includes(unparsedPeriodTerm as DataPeriod)) {\n // periodTerm = unparsedPeriodTerm as DataPeriod\n // }\n\n // const [period, setPeriod] = useState({\n // weekdays: dayData?.allData.weekdays,\n // weekends: dayData?.allData.weekends,\n // })\n\n // const [weeklyPeriod, setWeeklyPeriod] = useState(\n // weekData?.weeklyData || []\n // )\n\n // const [monthlyPeriod, setMonthlyPeriod] = useState(\n // monthData?.monthlyData || []\n // )\n\n // const periodDataSetter = (period: DataPeriod) => {\n // searchParams.set('period', period)\n // setSearchParams(searchParams)\n\n // if (freq === 'day') {\n // let dataStore: PeriodDataDay | undefined\n\n // switch (period) {\n // case 'month':\n // dataStore = dayData?.lastMonthData\n // break\n\n // case 'threeMonths':\n // dataStore = dayData?.last3MonthsData\n // break\n\n // case 'sixMonths':\n // dataStore = dayData?.last6MonthsData\n // break\n\n // case 'year':\n // dataStore = dayData?.lastYearData\n // break\n\n // default:\n // dataStore = dayData?.allData\n // break\n // }\n\n // return setPeriod({\n // weekdays: dataStore?.weekdays,\n // weekends: dataStore?.weekends,\n // })\n // } else if (freq === 'month') {\n // let dataStore: any[]\n\n // switch (period) {\n // case 'month':\n // dataStore = monthData?.lastMonth || []\n // break\n // case 'threeMonths':\n // dataStore = monthData?.last3Months || []\n // break\n // case 'sixMonths':\n // dataStore = monthData?.last6Months || []\n // break\n // case 'year':\n // dataStore = monthData?.lastYear || []\n // break\n\n // default:\n // dataStore = monthData?.monthlyData || []\n // break\n // }\n\n // return setMonthlyPeriod(dataStore)\n // } else {\n // let dataStore: any[]\n\n // switch (period) {\n // case 'month':\n // dataStore = weekData?.lastMonth || []\n // break\n // case 'threeMonths':\n // dataStore = weekData?.last3Months || []\n // break\n // case 'sixMonths':\n // dataStore = weekData?.last6Months || []\n // break\n // case 'year':\n // dataStore = weekData?.lastYear || []\n // break\n\n // default:\n // dataStore = weekData?.weeklyData || []\n // break\n // }\n\n // return setWeeklyPeriod(dataStore)\n // }\n // }\n\n const plotLookup: { [key in FreqType]: () => JSX.Element } = {\n day: () => (\n <>\n \n \n \n \n \n ),\n week: () => (\n <>\n \n \n \n \n ),\n month: () => (\n <>\n \n \n \n ),\n year: () => <>,\n hour: () => <>,\n }\n\n // const [trendLine, setTrendLine] = useState('trend')\n\n const unparsedTrendLine = searchParams.get('trend')\n\n let trendLine: TrendLine = 'trend'\n\n if (trendLines.includes(unparsedTrendLine as TrendLine)) {\n trendLine = unparsedTrendLine as TrendLine\n }\n\n // const trendLineSetter = (trend: TrendLine = 'trend') => {\n // searchParams.set('trend', trend)\n // setSearchParams(searchParams)\n // }\n\n return (\n
\n {/*
\n {}}\n value={periodTerm}\n options={\n [\n {\n value: 'month',\n label: 'Last Month',\n },\n {\n value: 'threeMonths',\n label: 'Last 3 Months',\n },\n {\n value: 'sixMonths',\n label: 'Last 6 Months',\n },\n {\n value: 'year',\n label: 'Last Year',\n },\n {\n value: 'all',\n label: 'All Data',\n },\n ] as { value: DataPeriod; label: string }[]\n }\n />\n {\n trendLineSetter(value as TrendLine)\n }}\n value={trendLine}\n options={\n [\n {\n value: 'trendWeekday',\n label: 'Trend Workday',\n },\n {\n value: 'trendWeekend',\n label: 'Trend Weekend',\n },\n {\n value: 'trend',\n label: 'Trend (all)',\n },\n ] as { value: TrendLine; label: string }[]\n }\n />\n
*/}\n
\n \n \n \n \n \n \n\n \n \n \n\n }\n wrapperStyle={{ outline: 'none' }}\n />\n\n {plotLookup[freq]()}\n\n \n \n \n\n \n
\n
\n )\n}\n\nexport default ScatterPlot\n\nconst CustomLegend = ({\n freq,\n trendLine,\n}: {\n freq: FreqType\n trendLine: TrendLine\n}) => {\n const { t } = useTranslation()\n\n const legendIndex: { [key in FreqType]: () => JSX.Element } = {\n day: () => (\n
\n
\n
\n

{t('global:workday')}

\n
\n
\n
\n

{t('global:weekend')}

\n
\n
\n
\n

{t('consumption:lastSevenWeekday')}

\n
\n
\n
\n

{t('consumption:lastSevenWeekend')}

\n
\n
\n
\n

{t(`global:${trendLine}`)}

\n
\n
\n ),\n week: () => (\n
\n
\n
\n

{`${t(`consumption:breadcrumb.${freq}`)} ${t(\n 'global:consumption'\n )}`}

\n
\n
\n
\n

{t(`consumption:thisWeek`)}

\n
\n
\n
\n

{t('consumption:lastTwoWeeks')}

\n
\n
\n
\n

{t(`global:${trendLine}`)}

\n
\n
\n ),\n month: () => (\n
\n
\n
\n

{`${t(`consumption:breadcrumb.${freq}`)} ${t(\n 'global:consumption'\n )}`}

\n
\n
\n
\n

{t(`consumption:thisMonth`)}

\n
\n
\n
\n

{t(`global:${trendLine}`)}

\n
\n
\n ),\n hour: () => <>,\n year: () => <>,\n }\n\n return legendIndex[freq]()\n}\n\nconst CustomTooltip = ({\n active,\n payload,\n label,\n freq,\n}: TooltipProps & { freq: FreqType }) => {\n const { t } = useTranslation()\n\n if (active && payload && payload.length) {\n return (\n
\n {freq === 'day' ? (\n

{dayjs(payload[0]?.payload?.timestamp).format('DD.MM.YYYY')}

\n ) : freq === 'week' ? (\n

\n {t('global:week')} {dayjs(payload[0]?.payload?.timestamp).isoWeek()}{' '}\n {dayjs(payload[0]?.payload?.timestamp).format('YYYY')}\n

\n ) : (\n

\n {`${t(\n `global:shortMonths.${dayjs(payload[0]?.payload?.timestamp)\n .format('MMM')\n .toLowerCase()}`\n )} ${dayjs(payload[0]?.payload?.timestamp).format('YYYY')}`}\n

\n )}\n
\n

\n {t(`global:trend`)}:{' '}\n {`${round(payload[0]?.value, 1).toLocaleString('NO')} kWh`}\n

\n

\n {t('global:consumption')}\n {': '}\n {`${round(payload[0]?.payload?.consumption, 1).toLocaleString(\n 'NO'\n )} kWh`}\n

\n
\n )\n }\n\n return null\n}\n\nconst capitalize = (str: any, lower = true) => {\n return (lower ? str.toLowerCase() : str).replace(\n /(?:^|\\s|[\"'([{])+\\S/g,\n (match: any) => match.toUpperCase()\n )\n}\n","import cn from 'classnames'\n\ntype Props = {\n options: Array\n label?: string\n value: string\n onChange: any\n className?: string\n}\n\nexport function Dropdown(props: Props) {\n return (\n
\n
\n e.stopPropagation()}\n onChange={(e) => props.onChange(e.target.value)}\n className={cn(\n 'portal-dropdown w-full appearance-none rounded-md border-2 border-gray-400 bg-gray-100 px-2 text-center text-sm font-semibold',\n props.className\n )}\n >\n {props.options &&\n props.options.map((option, index) => {\n if (typeof option == 'object') {\n return (\n \n )\n } else {\n return \n }\n })}\n \n
\n
\n )\n}\n","import { useState, useMemo, useEffect } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport dayjs from 'dayjs'\nimport {\n Bar,\n CartesianGrid,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n BarChart,\n Label,\n TooltipProps,\n} from 'recharts'\nimport {\n NameType,\n ValueType,\n} from 'recharts/types/component/DefaultTooltipContent'\nimport { Dropdown } from 'src/components/Dropdown'\nimport { MeteringPointConsumptionCost } from 'src/generated/client'\nimport { FreqType } from 'src/types'\nimport { xAxisTickFormatter } from './Graphs'\nimport { DataPeriod, TrendLine } from '../ETComponent'\n\nexport const round = (value: any, decimals: number) =>\n Math.round(value * 10 ** decimals) / 10 ** decimals\n\nexport const DeviationsGraph = ({\n data,\n freq,\n periodParent,\n trendLine,\n}: {\n data: MeteringPointConsumptionCost[]\n\n freq: FreqType\n periodParent?: DataPeriod\n trendLine?: TrendLine\n onGraphClick: (v: string) => void\n}) => {\n const { t } = useTranslation()\n\n const yLabelDeviations: string = t(`deviations:deviationyaxis`)\n\n const scrappedData = data.filter(function (element) {\n return element !== undefined\n })\n\n const [deviationPeriod, setDeviationPeriod] =\n useState('lastMonth')\n\n const deviationData = useMemo(() => {\n if (freq === 'month') {\n return {\n lastMonth: scrappedData.slice(scrappedData?.length - 1),\n last3Months: scrappedData.slice(scrappedData?.length - 3),\n last6Months: scrappedData.slice(scrappedData?.length - 6),\n lastYear: scrappedData.slice(scrappedData?.length - 12),\n allData: scrappedData.slice(1),\n }\n } else if (freq === 'week') {\n return {\n lastMonth: scrappedData.slice(scrappedData?.length - 4),\n last3Months: scrappedData.slice(scrappedData?.length - 12),\n last6Months: scrappedData.slice(scrappedData?.length - 24),\n lastYear: scrappedData.slice(scrappedData?.length - 52),\n allData: scrappedData.slice(1),\n }\n } else if (freq === 'day') {\n return {\n lastMonth: scrappedData.slice(scrappedData?.length - 30),\n last3Months: scrappedData.slice(scrappedData?.length - 90),\n last6Months: scrappedData.slice(scrappedData?.length - 180),\n lastYear: scrappedData.slice(scrappedData?.length - 365),\n allData: scrappedData.slice(1),\n }\n } else {\n return null\n }\n }, [scrappedData, freq])\n\n const [deviationScrappedData, setDeviationScrappedData] = useState<\n MeteringPointConsumptionCost[]\n >(deviationData?.allData || [])\n\n useEffect(() => {\n let periodData: MeteringPointConsumptionCost[] | undefined\n\n switch (deviationPeriod) {\n case 'lastMonth':\n periodData = deviationData?.lastMonth\n break\n case 'lastThreeMonths':\n periodData = deviationData?.last3Months\n break\n case 'lastSixMonths':\n periodData = deviationData?.last6Months\n break\n case 'lastYear':\n periodData = deviationData?.last6Months\n break\n default:\n periodData = deviationData?.allData\n break\n }\n setDeviationScrappedData(periodData || [])\n }, [deviationPeriod, periodParent, freq]) //deviationData])\n\n const DeviationPeriodOptions = useMemo(() => {\n if (periodParent === 'allData') {\n return [\n {\n value: 'lastMonth',\n label: t(`global:lastMonth`),\n },\n {\n value: 'lastThreeMonths',\n label: t(`global:lastThreeMonths`),\n },\n {\n value: 'lastSixMonths',\n label: t(`global:lastSixMonths`),\n },\n {\n value: 'lastyear',\n label: t(`global:lastYear`),\n },\n {\n value: 'allData',\n label: t(`global:allData`),\n },\n ] as { value: DataPeriod; label: string }[]\n } else if (periodParent === 'lastYear') {\n return [\n {\n value: 'lastMonth',\n label: t(`global:lastMonth`),\n },\n {\n value: 'lastThreeMonths',\n label: t(`global:lastThreeMonths`),\n },\n {\n value: 'lastSixMonths',\n label: t(`global:lastSixMonths`),\n },\n {\n value: 'lastyear',\n label: t(`global:lastYear`),\n },\n {\n value: 'allData',\n label: t(`global:allData`),\n },\n ] as { value: DataPeriod; label: string }[]\n } else if (periodParent === 'lastSixMonths') {\n return [\n {\n value: 'lastMonth',\n label: t(`global:lastMonth`),\n },\n {\n value: 'lastThreeMonths',\n label: t(`global:lastThreeMonths`),\n },\n {\n value: 'lastSixMonths',\n label: t(`global:lastSixMonths`),\n },\n {\n value: 'allData',\n label: t(`global:allData`),\n },\n ] as { value: DataPeriod; label: string }[]\n } else if (periodParent === 'lastThreeMonths') {\n return [\n {\n value: 'lastMonth',\n label: t(`global:lastMonth`),\n },\n {\n value: 'lastThreeMonths',\n label: t(`global:lastThreeMonths`),\n },\n {\n value: 'allData',\n label: t(`global:allData`),\n },\n ] as { value: DataPeriod; label: string }[]\n } else if (periodParent === 'lastMonth') {\n return [\n {\n value: 'lastMonth',\n label: t(`global:lastMonth`),\n },\n {\n value: 'allData',\n label: t(`global:allData`),\n },\n ] as { value: DataPeriod; label: string }[]\n } else {\n return []\n }\n }, [t, periodParent])\n\n return (\n
\n
\n \n \n \n xAxisTickFormatter(value, freq, t)}\n >\n {/* \n {/* */}\n
\n
\n {\n setDeviationPeriod(value as DataPeriod)\n }}\n value={deviationPeriod}\n options={DeviationPeriodOptions}\n />\n
\n
\n )\n}\n\nexport default DeviationsGraph\n\n// const CustomLegend = () => {\n// const { t } = useTranslation()\n\n// return (\n//
\n//
\n//
\n//

{t(`deviations:deviationWeekday`)}

\n//
\n//
\n//
\n//

{t(`deviations:deviationWeekend`)}

\n//
\n//
\n// )\n// }\n\nconst DeviationTooltip = ({\n active,\n payload,\n freq,\n}: TooltipProps & { freq: FreqType }) => {\n const { t } = useTranslation()\n\n if (active && payload && payload.length) {\n return (\n
\n {freq === 'year' ? (\n

{dayjs(payload[0].payload.timestamp).format('YYYY')}

\n ) : freq === 'month' ? (\n

\n {`${t(\n `global:shortMonths.${dayjs(payload[0].payload.timestamp)\n .format('MMM')\n .toLowerCase()}`\n )} ${dayjs(payload[0].payload.timestamp).format('YYYY')}`}\n

\n ) : freq === 'day' ? (\n

{dayjs(payload[0].payload.timestamp).format('DD.MM.YYYY')}

\n ) : freq === 'week' ? (\n

\n {t('global:week')} {dayjs(payload[0]?.payload?.timestamp).isoWeek()}{' '}\n {dayjs(payload[0]?.payload?.timestamp).format('YYYY')}\n

\n ) : null}\n\n
\n
\n {payload.map(\n (entry, index) =>\n entry.value !== 0 && (\n

\n {t(`deviations:${entry.name}`)}:{' '}\n {round(entry.value, 2).toLocaleString('NO')} kWh\n

\n )\n )}\n
\n
\n )\n }\n return null\n}\n","import dayjs from 'dayjs'\nimport { useQuery } from '@tanstack/react-query'\nimport { useParams, useSearchParams } from 'react-router-dom'\nimport ScatterPlot from 'src/components/Consumption/ScatterPlot'\nimport FrequencyChanger from 'src/components/FrequencyChanger'\nimport Spinner from 'src/components/Spinner'\nimport { FreqType } from 'src/types'\nimport apiClient from 'src/utils/apiClient'\nimport isoWeek from 'dayjs/plugin/isoWeek'\nimport useDateRange from 'src/utils/hooks/useDateRange'\nimport DeviationsGraph from 'src/components/Consumption/DeviationsGraph'\nimport { GraphPlaceholder } from 'src/components/GraphPlaceholder'\nimport { Dropdown } from 'src/components/Dropdown'\nimport { useTranslation } from 'react-i18next'\nimport { ActionButton } from '../action'\nimport { QuestionMarkCircleIcon } from '@heroicons/react/outline'\nimport { useState } from 'react'\nimport HelpModal from '../HelpModal/HelpModal'\n\ndayjs.extend(isoWeek)\n\nconst freqOptions = ['month', 'week', 'day']\n\ntype ETProps = {\n felt: boolean\n}\n\nexport const dataPeriods = [\n 'lastMonth',\n 'lastThreeMonths',\n 'lastSixMonths',\n 'lastYear',\n 'allData',\n] as const\n\nexport type DataPeriod = typeof dataPeriods[number]\n\nexport const trendLines = ['trendWeekday', 'trendWeekend', 'trend'] as const\n\nexport type TrendLine = typeof trendLines[number]\n\nconst ETComponent = (props: ETProps) => {\n const { t } = useTranslation()\n const [searchParams, setSearchParams] = useSearchParams()\n\n const objectId = useParams<'objectId'>().objectId as any\n // let freq: FreqType = (searchParams.get('freq') as FreqType) || 'day'\n // let to: string = searchParams.get('to') || dayjs().format('YYYY-MM-DD')\n // let felt: boolean =\n // searchParams.get('felt') === 'true' ? true : false || false\n const felt = props.felt\n\n const defaultFreq: FreqType = 'day'\n const defaultFrom: string = dayjs().subtract(1, 'year').format('YYYY-MM-DD')\n const defaultTo: string = dayjs().format('YYYY-MM-DD')\n const defaultPeriod: DataPeriod = 'lastYear'\n\n const { from, freq, to, period, setDateRange } = useDateRange({\n defaultFreq: defaultFreq,\n defaultFrom: defaultFrom,\n defaultTo: defaultTo,\n defaultPeriod: defaultPeriod,\n })\n\n const [showHelpModal, setShowHelpModal] = useState(false)\n\n const { isLoading, data, error } = useQuery(\n [`ETChartFeltTemperature${felt}`, objectId, freq, from, to, felt],\n async () => {\n return apiClient.getMeteringPointETChart(objectId, from, to, freq, felt)\n }\n )\n\n const {\n isLoading: isWeatherLoading,\n error: weatherError,\n data: weatherStations,\n } = useQuery(\n ['weatherStations', objectId],\n async () => {\n return apiClient.getWeatherStations(objectId)\n },\n { enabled: !!objectId }\n )\n\n const freqChangeHandler = (freq: FreqType) => {\n if (period) {\n setSearchParams({\n freq,\n from,\n to,\n period,\n })\n } else {\n setSearchParams({\n freq,\n from,\n to,\n })\n }\n }\n\n if (error || weatherError) {\n console.error(error)\n console.error(weatherError)\n return

Error. Check console.

\n }\n\n const unparsedTrendLine = searchParams.get('trend')\n\n let trendLine: TrendLine = 'trend'\n\n if (trendLines.includes(unparsedTrendLine as TrendLine)) {\n trendLine = unparsedTrendLine as TrendLine\n }\n\n const trendLineSetter = (trend: TrendLine = 'trend') => {\n searchParams.set('trend', trend)\n setSearchParams(searchParams)\n }\n\n const windowChangeHandler = (period: DataPeriod) => {\n if (period === 'allData') {\n setDateRange({\n freq,\n from: dayjs().subtract(10, 'year').format('YYYY-MM-DD'),\n to: dayjs().format('YYYY-MM-DD'),\n period: period,\n })\n } else if (period === 'lastYear') {\n setDateRange({\n freq,\n from: dayjs().subtract(1, 'year').format('YYYY-MM-DD'),\n to: dayjs().format('YYYY-MM-DD'),\n period: period,\n })\n } else if (period === 'lastSixMonths') {\n setDateRange({\n freq,\n from: dayjs().subtract(6, 'month').format('YYYY-MM-DD'),\n to: dayjs().format('YYYY-MM-DD'),\n period: period,\n })\n } else if (period === 'lastThreeMonths') {\n setDateRange({\n freq,\n from: dayjs().subtract(3, 'month').format('YYYY-MM-DD'),\n to: dayjs().format('YYYY-MM-DD'),\n period: period,\n })\n } else if (period === 'lastMonth') {\n setDateRange({\n freq,\n from: dayjs().subtract(1, 'month').format('YYYY-MM-DD'),\n to: dayjs().format('YYYY-MM-DD'),\n period: period,\n })\n }\n }\n\n return (\n <>\n
\n
\n \n\n
\n
\n setShowHelpModal(true)}\n Icon={QuestionMarkCircleIcon}\n >\n {t('global:help')}\n \n
\n
\n
\n
\n {isLoading || isWeatherLoading ? (\n
\n \n
\n ) : data && weatherStations ? (\n \n ) : (\n \n )}\n
\n
\n {\n windowChangeHandler(value)\n }}\n value={period ? period : defaultPeriod}\n options={\n [\n {\n value: 'lastMonth',\n label: t(`global:lastMonth`),\n },\n {\n value: 'lastThreeMonths',\n label: t(`global:lastThreeMonths`),\n },\n {\n value: 'lastSixMonths',\n label: t(`global:lastSixMonths`),\n },\n {\n value: 'lastYear',\n label: t(`global:lastYear`),\n },\n {\n value: 'allData',\n label: t(`global:allData`),\n },\n ] as { value: DataPeriod; label: string }[]\n }\n />\n {freq === 'day' && (\n {\n trendLineSetter(value as TrendLine)\n }}\n value={trendLine}\n options={\n [\n {\n value: 'trendWeekday',\n label: t(`global:trendWeekday`),\n },\n {\n value: 'trendWeekend',\n label: t(`global:trendWeekend`),\n },\n {\n value: 'trend',\n label: t(`global:trendAll`),\n },\n ] as { value: TrendLine; label: string }[]\n }\n />\n )}\n
\n
\n {isLoading || isWeatherLoading ? (\n
\n \n
\n ) : data && weatherStations ? (\n //
Awe
\n null}\n />\n ) : (\n \n )}\n
\n setShowHelpModal(false)}\n helpText={t('et:help.helpText')}\n />\n \n )\n}\n\nexport default ETComponent\n","import ETComponent from 'src/components/ETComponent'\n\nconst ETPage = () => {\n return \n}\n\nexport default ETPage\n","import ETComponent from 'src/components/ETComponent'\n\nconst ETFelt = () => {\n return \n}\n\nexport default ETFelt\n","import { useQuery } from '@tanstack/react-query'\nimport apiClient from 'src/utils/apiClient'\nimport { Invoice } from './types'\n\nconst useInvoiceData = (objectId: string) => {\n const {\n isFetching,\n data: invoices,\n refetch,\n isLoading,\n error,\n } = useQuery(\n [objectId, 'invoices'],\n async () => await apiClient.getInvoices(objectId)\n )\n\n return { isFetching, invoices, refetch, isLoading, error }\n}\n\nexport default useInvoiceData\n","import { NettGross } from './types'\nimport { useAppState } from 'src/context/appstate'\nimport { DocumentDuplicateIcon } from '@heroicons/react/outline'\n\nexport const TableData = ({\n value,\n ng,\n\n formatter = (v) => '' + v,\n}: {\n value?: number\n ng?: NettGross\n\n formatter?: (v: number) => string\n}) => {\n const { showNett } = useAppState()\n\n return (\n \n
{formatter(ng ? (showNett ? ng.nett : ng.gross) : value || 0)}
\n
\n )\n}\n\nexport const FilesIndicicator = ({ fileCount }: { fileCount: number }) => (\n
\n {fileCount > 0 && (\n <>\n {fileCount}\n \n \n )}\n
\n)\n\nexport const TableLabel = ({ label }: { label: string }) => {\n return (\n \n {label}\n \n )\n}\n","import { Fragment, useRef } from 'react'\nimport { Dialog, Transition } from '@headlessui/react'\nimport { ExclamationIcon } from '@heroicons/react/outline'\nimport { useTranslation } from 'react-i18next'\n\ntype Props = {\n isOpen: boolean\n onClose: () => void\n title?: string\n onSubmit: () => void\n description?: string\n}\n\nexport function DeleteConfirmationDialog({\n isOpen,\n onClose,\n onSubmit,\n title = 'Are you sure?',\n description: desc,\n}: Props) {\n const cancelButtonRef = useRef(null)\n const { t } = useTranslation()\n\n const description = desc ?? t('objects:deleteDialog.defaultDescription')\n\n return (\n \n \n
\n \n \n \n\n {/* This element is to trick the browser into centering the modal contents. */}\n \n ​\n \n \n
\n
\n
\n \n
\n
\n \n {title}\n \n
\n

{description}

\n
\n
\n
\n
\n
\n {\n e.preventDefault()\n\n onSubmit()\n }}\n className=\"focus:outline-none inline-flex w-full justify-center rounded-md border border-transparent bg-red-600 px-4 py-2 text-base font-medium text-white shadow-sm hover:bg-red-700 focus:ring-2 focus:ring-red-500 focus:ring-offset-2 sm:ml-3 sm:w-auto sm:text-sm\"\n >\n Delete\n \n \n \n Cancel\n \n
\n
\n \n
\n \n
\n )\n}\n","export const format = (value: number, decimals: number, langage: string) =>\n value.toLocaleString(['no', 'nb'].includes(langage) ? 'NO' : 'ZA', {\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n })\n\nexport const formatForInput = (\n value: number | string | null,\n langage: string,\n decimals: number = 2\n) => {\n const region = ['no', 'nb'].includes(langage) ? 'NO' : 'ZA'\n if (value === null) {\n let tempValue = 0\n return tempValue.toLocaleString(region, {\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n })\n }\n\n return value.toLocaleString(region, {\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n })\n}\n","import { FC } from 'react'\nimport { useAppState } from 'src/context/appstate'\nimport { NettGross } from './types'\n\nconst InvoiceAttribute = ({\n value,\n ng,\n label,\n unit,\n formatter = (v) => '' + v,\n}: {\n value?: number\n ng?: NettGross\n label: string\n unit?: string\n formatter?: (v: number) => string\n}) => {\n const { showNett } = useAppState()\n\n return (\n
\n {label}\n
\n \n {formatter(ng ? (showNett ? ng.nett : ng.gross) : value || 0)}\n \n {unit && (\n {unit}\n )}\n
\n
\n )\n}\n\nexport const AttributeLabel: FC = ({ children }) => (\n \n {children}\n \n)\n\nexport const IndependentAttributeLabel: FC = ({ children }) => (\n
\n {children}\n
\n)\n\nexport default InvoiceAttribute\n","import dayjs from 'dayjs'\nimport apiClient from 'src/utils/apiClient'\nimport { Invoice } from './types'\n\nexport const getMonthData = (dateStr: any, objectId: string) => {\n const start = dayjs(dateStr).startOf('month').format('YYYY-MM-DD HH:mm:ss')\n const end = dayjs(dateStr)\n .add(1, 'month')\n .startOf('month')\n .format('YYYY-MM-DD HH:mm:ss')\n\n return apiClient.getConsumption(objectId, start, end, 'month')\n}\n\nexport const isValidInvoice = (row: Invoice) => {\n const date = dayjs(row.year + '-' + row.month)\n if (!date.isValid()) return false\n\n return true\n}\n\nexport const formatNumberInput = (input: any) => {\n if (!input) return NaN\n\n return parseFloat(`${input}`.replace(/,/g, '.').replace(/\\s/g, ''))\n}\n\nexport const checkNaN = (input: any) => isNaN(formatNumberInput(input))\n\nexport const makePostBody = (invoice: Invoice, showNett: boolean) => {\n const date = dayjs(invoice.year + '-' + invoice.month)\n let body: any = {\n userInvoiceId: invoice.userInvoiceId,\n fromDate: date.startOf('month').format('YYYY-MM-DD'),\n toDate: date.add(1, 'month').startOf('month').format('YYYY-MM-DD'),\n base64Files: invoice.file.filter((f) => f.base64 != null),\n comment: invoice.comment,\n }\n\n if (showNett) {\n body.spotAmount = formatNumberInput(invoice.elecInvoice)\n body.gridAmount = formatNumberInput(invoice.gridInvoice)\n } else {\n body.spotGrossAmount = formatNumberInput(invoice.elecInvoiceGross)\n body.gridGrossAmount = formatNumberInput(invoice.gridInvoiceGross)\n }\n return body\n}\n\nexport const applyInvoiceFromServerToInvoice = (\n data: any,\n invoice: Invoice\n) => {\n const date = dayjs(invoice.year + '-' + invoice.month)\n\n return {\n userInvoiceId: invoice.userInvoiceId,\n index: invoice.index,\n time: date.format('DD.MM.YYYY'),\n quantity: parseFloat(data.consumption),\n price: parseFloat(data.spotCostPrice),\n amount: parseFloat(data.spotCost),\n rent: data.gridCost ? parseFloat(data.gridCost) : data.gridCost,\n total: parseFloat(data.totalCost),\n priceGross: parseFloat(data.spotCostGrossPrice),\n amountGross: parseFloat(data.spotGrossCost),\n rentGross: data.gridGrossCost\n ? parseFloat(data.gridGrossCost)\n : data.gridGrossCost,\n totalGross: parseFloat(data.totalGrossCost),\n year: invoice.year,\n month: invoice.month,\n elecInvoice: invoice.elecInvoice,\n gridInvoice: invoice.gridInvoice,\n elecInvoiceGross: invoice.elecInvoiceGross,\n gridInvoiceGross: invoice.gridInvoiceGross,\n file: invoice.file,\n comment: invoice.comment || '',\n }\n}\n","/**\n * Calculate the Average\n */\n\nimport { Invoice, NettGross } from '../types'\nimport { formatNumberInput } from '../utils'\n\nconst calculateAverage = (invoice: Invoice) => {\n if (!invoice.quantity || !invoice.elecInvoice) return 0\n\n return formatNumberInput(invoice.elecInvoice) / invoice.quantity\n}\n\nconst calculateAverageGross = (invoice: Invoice) => {\n if (!invoice.quantity || !invoice.elecInvoiceGross) return 0\n\n return formatNumberInput(invoice.elecInvoiceGross) / invoice.quantity\n}\n\nexport const average = (invoice: Invoice): NettGross => ({\n nett: calculateAverage(invoice),\n gross: calculateAverageGross(invoice),\n})\n","/**\n * Calculate the average grid\n */\n\nimport { Invoice, NettGross } from '../types'\nimport { formatNumberInput } from '../utils'\n\nconst calculateAverageGridNett = (invoice: Invoice) => {\n if (!invoice.quantity || !invoice.gridInvoice) return 0\n\n return formatNumberInput(invoice.gridInvoice) / invoice.quantity\n}\n\nconst calculateAverageGridGross = (invoice: Invoice) => {\n if (!invoice.quantity || !invoice.gridInvoiceGross) return 0\n\n return formatNumberInput(invoice.gridInvoiceGross) / invoice.quantity\n}\n\nexport const averageGrid = (invoice: Invoice): NettGross => ({\n nett: calculateAverageGridNett(invoice),\n gross: calculateAverageGridGross(invoice),\n})\n","/**\n * Calculate the average profit\n */\n\nimport { Invoice, NettGross } from '../types'\nimport { formatNumberInput } from '../utils'\n\nconst calculateAverageProfitNett = (invoice: Invoice) => {\n if (invoice.quantity && invoice.elecInvoice) {\n return (\n (formatNumberInput(invoice.elecInvoice) -\n formatNumberInput(invoice.amount)) /\n invoice.quantity\n )\n }\n\n return 0\n}\n\nconst calculateAverageProfitGross = (invoice: Invoice) => {\n if (invoice.quantity && invoice.elecInvoiceGross) {\n return (\n (formatNumberInput(invoice.elecInvoiceGross) -\n formatNumberInput(invoice.amountGross)) /\n invoice.quantity\n )\n }\n\n return 0\n}\n\nexport const averageProfit = (invoice: Invoice): NettGross => ({\n nett: calculateAverageProfitNett(invoice),\n gross: calculateAverageProfitGross(invoice),\n})\n","/**\n * Calculate the Electricity Difference\n *\n * * averageTotal: !quantity ? 0 : totalCost / quantity,\n * * averageTotalGross: !quantity ? 0 : totalCostGross / quantity,\n */\n\nimport { Invoice, NettGross } from '../types'\nimport { formatNumberInput } from '../utils'\n\nconst calculateAverageTotalNett = (invoice: Invoice) => {\n if (!invoice.quantity) return 0\n\n const totalCost =\n (formatNumberInput(invoice.elecInvoice) || 0) +\n (formatNumberInput(invoice.gridInvoice) || 0)\n\n return totalCost / invoice.quantity\n}\n\nconst calculateAverageTotalGross = (invoice: Invoice) => {\n if (!invoice.quantity) return 0\n\n const totalCostGross =\n (formatNumberInput(invoice.elecInvoiceGross) || 0) +\n (formatNumberInput(invoice.gridInvoiceGross) || 0)\n\n return totalCostGross / invoice.quantity\n}\n\nexport const averageTotal = (invoice: Invoice): NettGross => ({\n nett: calculateAverageTotalNett(invoice),\n gross: calculateAverageTotalGross(invoice),\n})\n","/**\n * Calculate the Electricity Difference\n *\n * * elecDiff: row.elecInvoice ? row.elecInvoice - row.amount\n * * elecDiffGross: row.elecInvoiceGross ? row.elecInvoiceGross - row.amountGross\n */\n\nimport { Invoice, NettGross } from '../types'\nimport { formatNumberInput } from '../utils'\n\nconst calculateElecDifferenceNett = (invoice: Invoice) => {\n if (invoice.elecInvoice) {\n if (!invoice.amount) return formatNumberInput(invoice.elecInvoice)\n\n return (\n formatNumberInput(invoice.elecInvoice) - formatNumberInput(invoice.amount)\n )\n }\n\n return 0\n}\n\nconst calculateElecDifferenceGross = (invoice: Invoice) => {\n if (invoice.elecInvoiceGross) {\n if (!invoice.amountGross) return formatNumberInput(invoice.elecInvoiceGross)\n\n return (\n formatNumberInput(invoice.elecInvoiceGross) -\n formatNumberInput(invoice.amountGross)\n )\n }\n\n return 0\n}\n\nexport const elecDifference = (invoice: Invoice): NettGross => ({\n nett: calculateElecDifferenceNett(invoice),\n gross: calculateElecDifferenceGross(invoice),\n})\n","/**\n * Calculate the Grid Difference\n *\n * * gridDiff: gridInvoice ? gridInvoice - rent : 0\n * * gridDiffGross: gridInvoiceGross - rentGross\n */\n\nimport { Invoice, NettGross } from '../types'\nimport { formatNumberInput } from '../utils'\n\nconst calculateGridDifferenceNett = (invoice: Invoice) => {\n if (invoice.gridInvoice) {\n if (!invoice.rent) return formatNumberInput(invoice.gridInvoice)\n\n return (\n formatNumberInput(invoice.gridInvoice) - formatNumberInput(invoice.rent)\n )\n }\n\n return 0\n}\n\nconst calculateGridDifferenceGross = (invoice: Invoice) => {\n if (invoice.gridInvoiceGross) {\n if (!invoice.rentGross) return formatNumberInput(invoice.gridInvoiceGross)\n\n return (\n formatNumberInput(invoice.gridInvoiceGross) -\n formatNumberInput(invoice.rentGross)\n )\n }\n\n return 0\n}\n\nexport const gridDifference = (invoice: Invoice): NettGross => ({\n nett: calculateGridDifferenceNett(invoice),\n gross: calculateGridDifferenceGross(invoice),\n})\n","import { Invoice } from '../types'\nimport { average } from './average'\nimport { averageGrid } from './averageGrid'\nimport { averageProfit } from './averageProfit'\nimport { averageTotal } from './averageTotal'\nimport { elecDifference } from './elecDifference'\nimport { gridDifference } from './gridDifference'\n\nconst useInvoiceCalculator = (invoice: Invoice) => ({\n average: () => average(invoice),\n gridDifference: () => gridDifference(invoice),\n elecDifference: () => elecDifference(invoice),\n averageProfit: () => averageProfit(invoice),\n averageGrid: () => averageGrid(invoice),\n averageTotal: () => averageTotal(invoice),\n})\n\nexport default useInvoiceCalculator\n","import { DocumentDuplicateIcon } from '@heroicons/react/outline'\nimport { useTranslation } from 'react-i18next'\n\nimport InvoiceAttribute from './Attribute'\nimport useInvoiceCalculator from './useInvoiceCalculator'\nimport { format } from './format'\nimport { Invoice } from './types'\nimport cn from 'classnames'\n\ninterface Props {\n invoice: Invoice\n clickable?: boolean\n onClick?: () => void\n}\n\nconst InvoiceCard = ({\n invoice,\n clickable = true,\n onClick = () => null,\n}: Props) => {\n // i18n\n const { t, i18n } = useTranslation()\n const { language } = i18n\n\n // Build a calculator from the invoice\n const calculator = useInvoiceCalculator(invoice)\n\n // Formatter shortcuts\n const twoDecimals = (v: number) => format(v, 2, language)\n const fourDecimals = (v: number) => format(v, 4, language)\n\n return (\n \n
\n \n {invoice.file.length > 0 && }\n
\n
\n {/* Grid Difference */}\n \n\n {/* Electricity Difference */}\n \n\n {/* Average Profit */}\n \n\n {/* Average */}\n \n\n {/* Average Grid */}\n \n\n {/* Average Total */}\n \n
\n
\n )\n}\n\nconst TimeLabel = ({ invoice }: { invoice: Invoice }) => (\n \n {invoice.year} / {invoice.month}\n \n)\n\nconst FileLabel = ({ invoice }: { invoice: Invoice }) => (\n <>\n -\n
\n \n \n {invoice.file.length} file{invoice.file.length === 1 || 's'}\n \n
\n \n)\n\nexport default InvoiceCard\n","export const isValidYear = (year: string): boolean => {\n const startYear = 2019\n\n const nextYear = new Date(\n new Date().setFullYear(new Date().getFullYear() + 1)\n ).getFullYear()\n\n const inputYear = parseInt(year)\n\n if (!/^-?\\d+$/.test(year) || inputYear < startYear || inputYear > nextYear) {\n return false\n }\n\n return true\n}\n\nexport const isValidMonth = (month: string): boolean => {\n const inputMonth = parseInt(month)\n\n if (!/^-?\\d+$/.test(month) || inputMonth < 1 || inputMonth > 12) {\n return false\n }\n\n return true\n}\n","import { DocumentDuplicateIcon } from '@heroicons/react/outline'\nimport { useTranslation } from 'react-i18next'\nimport { useParams } from 'react-router'\n\ntype Props = {\n files: Array\n}\n\ntype FileLinkProps = {\n objectId: string\n file: File & {\n invoiceType?: string\n }\n number: number\n}\n\nconst PreviousFilesList = ({ files }: Props) => {\n const objectId = useParams<'objectId'>().objectId as any\n\n if (files.length === 0) return null\n\n return (\n <>\n {files.map((file, i) => (\n
\n \n
\n ))}\n \n )\n}\n\nconst FileLink = ({ objectId, file, number }: FileLinkProps) => {\n const { t } = useTranslation()\n\n let typeLabel = ''\n\n switch (file.invoiceType) {\n case 'S':\n typeLabel = t('objects:uploadInvoiceView.electricity')\n break\n case 'N':\n typeLabel = t('objects:uploadInvoiceView.grid')\n break\n case 'T':\n typeLabel = t('objects:uploadInvoiceView.totalDropdown')\n break\n\n default:\n break\n }\n\n return (\n e.stopPropagation()}\n href={buildFileURL(objectId, file)}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"flex h-24 flex-row items-center space-x-2 rounded-md border px-4 text-sm font-medium hover:bg-gray-50\"\n >\n
\n \n
\n \n {(file as any)['fileName']}\n \n\n
\n \n {typeLabel}\n \n
\n
\n
\n \n )\n}\n\nfunction buildFileURL(objectId: string, file: File) {\n const fileId = (file as any)['userSharedInvoiceFileId']\n\n return `/api/object/${objectId}/invoice-file/${fileId}`\n}\n\nexport default PreviousFilesList\n","export const toBase64 = (file: any) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.readAsDataURL(file)\n reader.onload = () => {\n const parts = (reader.result as any).split(',')\n resolve(parts[parts.length - 1])\n }\n reader.onerror = (error) => reject(error)\n })\n}\n","import { useTranslation } from 'react-i18next'\nimport { Dropdown } from 'src/components/Dropdown'\n\nconst FileTypeSelect = ({\n filename,\n value,\n onChange,\n number,\n dataUrl,\n}: {\n filename: string\n value: string\n onChange: Function\n number: number\n dataUrl: string\n}) => {\n const { t } = useTranslation()\n return (\n
\n e.stopPropagation()}\n href={dataUrl}\n target=\"_blank\"\n >\n {filename}\n \n
\n \n
\n
\n )\n}\n\nexport default FileTypeSelect\n","import { useEffect, useState, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useDropzone } from 'react-dropzone'\nimport PreviousFilesList from './PreviousFilesList'\nimport { toBase64 } from './utils'\nimport { InvoiceType } from '../types'\nimport FileTypeSelect from './FileTypeSelect'\n\ntype FileType = {\n [key: string]: {\n base64: string\n invoiceType: InvoiceType\n dataUrl: string\n }\n}\n\nconst FileManager = ({ enabled, selectedFiles, onSubmit }: any) => {\n const { t } = useTranslation()\n const [fileTypes, setFileTypes] = useState({})\n\n const { isDragActive, acceptedFiles, getRootProps, getInputProps } =\n useDropzone({\n accept: '.jpg,.png,.pdf',\n onDrop: () => handleSubmit(),\n })\n\n const previousFiles = Array.from(selectedFiles)\n\n const handleSubmit = () => {\n const results = Object.keys(fileTypes).map((f: any) => ({\n fileName: f,\n base64: fileTypes[f].base64,\n invoiceType: fileTypes[f].invoiceType,\n }))\n\n onSubmit(results)\n }\n\n useEffect(() => {\n async function go() {\n let tmpFiles: any = {}\n for (let i = 0; i < acceptedFiles.length; i++) {\n let file = acceptedFiles[i]\n if (file != null) {\n tmpFiles[file.name] = {\n dataUrl: URL.createObjectURL(file),\n base64: await toBase64(file),\n invoiceType: '',\n }\n }\n }\n\n setFileTypes(tmpFiles)\n }\n\n go()\n }, [setFileTypes, acceptedFiles])\n\n const onChooseFileType = (filename: any, invoiceType: InvoiceType) => {\n let clone: any = { ...fileTypes }\n clone[filename].invoiceType = invoiceType\n setFileTypes(clone)\n\n handleSubmit()\n }\n\n const className = useMemo(\n () =>\n `${\n isDragActive ? 'border-blue-400 bg-blue-50' : 'border-gray-200'\n } border-2 border-dashed rounded-sm flex flex-col justify-center cursor-pointer sm:h-28`,\n [isDragActive]\n )\n\n return (\n
\n
\n \n
\n {previousFiles.length > 0 && (\n \n )}\n\n {/* Divider runs on its own here, to only show if we have both old & new files */}\n {previousFiles.length > 0 && Object.keys(fileTypes).length > 0 && (\n
\n )}\n\n {Object.keys(fileTypes).length > 0 && (\n
\n {Object.keys(fileTypes).map((filename: string, i) => (\n
\n \n onChooseFileType(filename, value)\n }\n value={fileTypes[filename].invoiceType.toString()}\n />\n
\n ))}\n
\n )}\n
\n\n {previousFiles.length === 0 && Object.keys(fileTypes).length === 0 && (\n

\n \n {t('objects:uploadInvoiceView.dropFiles')}{' '}\n \n {t('objects:uploadInvoiceView.clickToBrowse')}\n \n \n
\n

\n )}\n
\n
\n )\n}\n\nexport default FileManager\n","import { FC, HTMLProps, InputHTMLAttributes, useState } from 'react'\nimport { useMutation, useQueryClient } from '@tanstack/react-query'\nimport { useTranslation } from 'react-i18next'\nimport { useParams } from 'react-router'\nimport cn from 'classnames'\nimport { useAppState } from 'src/context/appstate'\nimport apiClient from 'src/utils/apiClient'\nimport Spinner from 'src/components/Spinner'\nimport { PrimaryButton } from 'src/components/action'\nimport { formatForInput, format } from './format'\nimport InvoiceCard from './InvoiceCard'\nimport { FileTypes, Invoice } from './types'\nimport { isValidMonth, isValidYear } from './validations'\nimport {\n applyInvoiceFromServerToInvoice,\n getMonthData,\n isValidInvoice,\n makePostBody,\n checkNaN,\n} from './utils'\nimport FileManager from './File/Manager'\n\nconst Form = ({\n invoice: original,\n handleClose,\n}: {\n invoice: Invoice\n handleClose: () => void\n}) => {\n const objectId = useParams<'objectId'>().objectId as any\n const queryClient = useQueryClient()\n const { t, i18n } = useTranslation()\n const { language } = i18n\n const { showNett } = useAppState()\n const [showCommentBox, setShowCommentBox] = useState(original.comment !== '')\n const [disableSave] = useState(false)\n const [loadingInvoice, setLoadingInvoice] = useState(false)\n\n // This is so the initial load of the data in the form locale format\n const modifiedOriginalInvoice = {\n ...original,\n elecInvoice: formatForInput(original.elecInvoice, language),\n elecInvoiceGross: formatForInput(original.elecInvoiceGross, language),\n gridInvoice: formatForInput(original.gridInvoice, language),\n gridInvoiceGross: formatForInput(original.gridInvoiceGross, language),\n }\n\n const [invoice, setInvoice] = useState(modifiedOriginalInvoice)\n const [unsavedFiles, setUnsavedFiles] = useState([])\n\n const mutation = useMutation(\n async () => {\n // Add the unsaved files first\n const invoiceForSubmission: Invoice = {\n ...invoice,\n file: unsavedFiles,\n } as any\n\n if (isValidInvoice(invoiceForSubmission)) {\n const invoiceBody = makePostBody(invoiceForSubmission, showNett)\n return await apiClient.saveInvoice(objectId, invoiceBody)\n } else {\n alert('Invalid invoice')\n }\n },\n {\n onSuccess: () => {\n queryClient.invalidateQueries([objectId, 'invoices'])\n handleClose()\n },\n }\n )\n\n // Formatter shortcuts\n const oneDecimal = (v: number) => format(v, 1, language)\n const twoDecimals = (v: number) => format(v, 2, language)\n const fourDecimals = (v: number) => format(v, 4, language)\n\n // Utils\n const setYear = (e: React.ChangeEvent) =>\n setInvoice((d) => ({ ...d, year: e.target.value }))\n\n const setMonth = (e: React.ChangeEvent) => {\n const newMonth = parseInt(e.target.value)\n if (newMonth < 1) {\n setInvoice((d) => ({\n ...d,\n year: '' + (parseInt(invoice.year) - 1),\n month: '12',\n }))\n } else if (newMonth > 12) {\n setInvoice((d) => ({\n ...d,\n year: '' + (parseInt(invoice.year) + 1),\n month: '1',\n }))\n } else {\n setInvoice((d) => ({ ...d, month: e.target.value }))\n }\n }\n\n const setElecInvoice = (e: React.ChangeEvent) => {\n setInvoice((d: any) => ({ ...d, elecInvoice: e.target.value }))\n }\n\n const setElecInvoiceGross = (e: React.ChangeEvent) => {\n setInvoice((d: any) => ({ ...d, elecInvoiceGross: e.target.value }))\n }\n\n const setGridInvoice = (e: React.ChangeEvent) => {\n setInvoice((d: any) => ({ ...d, gridInvoice: e.target.value }))\n }\n\n const setGridInvoiceGross = (e: React.ChangeEvent) => {\n setInvoice((d: any) => ({ ...d, gridInvoiceGross: e.target.value }))\n }\n\n const setComment = (e: React.ChangeEvent) =>\n setInvoice((d) => ({ ...d, comment: e.target.value }))\n\n const clearComment = () => {\n setInvoice((d) => ({ ...d, comment: '' }))\n setShowCommentBox(false)\n }\n\n const findInvoice = async () => {\n const dateString = `${invoice.year}-${invoice.month}`\n setLoadingInvoice(true)\n\n try {\n const monthlyInvoiceFromServer = (\n await getMonthData(dateString, objectId)\n )[0]\n setLoadingInvoice(false)\n\n const applied = applyInvoiceFromServerToInvoice(\n monthlyInvoiceFromServer,\n invoice as any\n )\n\n setInvoice((d) => ({ ...d, ...applied } as any))\n } catch (e) {\n setLoadingInvoice(false)\n }\n }\n\n const onSubmitFiles = (f: any) => {\n setUnsavedFiles(f)\n }\n\n return (\n
\n
\n \n\n \n \n {t('objects:uploadInvoiceView.findInvoice')}\n \n
\n\n
\n {showNett ? (\n \n ) : (\n \n )}\n\n {showNett ? (\n \n ) : (\n \n )}\n
\n\n {showCommentBox || (\n
\n setShowCommentBox(true)}>\n {t('objects:uploadInvoiceView.addComment')}\n \n
\n )}\n {showCommentBox && (\n
\n \n {t('objects:uploadInvoiceView.comment')}\n \n
\n \n
\n

\n {t('objects:uploadInvoiceView.commentHelp')}\n

\n
\n \n {t('objects:uploadInvoiceView.clearComment')}\n \n
\n
\n )}\n\n {t('objects:uploadInvoiceView.files')}\n\n
\n \n
\n {t('objects:uploadInvoiceView.calculated')}\n\n
\n \n\n \n\n \n
\n\n
\n \n\n \n
\n\n \n\n
\n mutation.mutate()}\n disabled={disableSave}\n isLoading={mutation.isLoading}\n >\n {t('objects:uploadInvoiceView.save')}\n \n
\n
\n )\n}\n\ninterface InputProps {\n label: string\n value: string | number\n htmlFor?: string\n type?: InputHTMLAttributes['type']\n showError?: boolean\n errorMessage?: string\n // onChange: (e: FormEvent) => void\n onChange: (e: any) => void\n}\n\nconst Input = ({\n label,\n type,\n value,\n htmlFor,\n showError = false,\n errorMessage,\n onChange,\n}: InputProps) => (\n
\n \n {label}\n \n
\n \n
\n \n {showError ? errorMessage : <> }\n \n {/* {showError && errorMessage && (\n {errorMessage}\n )} */}\n
\n)\n\ninterface CalculatedProps {\n label: string\n value: number\n htmlFor?: string\n formatter?: (v: number) => string\n}\n\nconst Calculated = ({\n label,\n value,\n htmlFor,\n formatter = (v) => '' + v,\n}: CalculatedProps) => (\n
\n \n {label}\n \n
\n \n
\n
\n)\n\nconst FormHeader: FC = ({ children }) => (\n \n {children}\n \n)\n\nconst FormButton: FC<\n HTMLProps & { isLoading?: boolean }\n> = ({ onClick, children, isLoading = false, disabled = false }) => {\n if (isLoading) return \n\n return (\n \n {children}\n \n )\n}\n\nexport default Form\n","import { Fragment } from 'react'\nimport { Dialog, Transition } from '@headlessui/react'\nimport { Invoice } from './types'\nimport Form from './Form'\nimport NettToggleComponent from '../NettToggleComponent'\nimport { CloseButton } from 'src/components/action'\n\nconst InvoiceModal = ({\n title,\n isOpen,\n onClose,\n invoice,\n}: {\n title: string\n isOpen: boolean\n onClose: () => void\n invoice: Invoice\n}) => {\n return (\n \n \n
\n {/* */}\n \n {/* */}\n\n {/* This element is to trick the browser into centering the modal contents. */}\n \n ​\n \n \n
\n
\n
\n
\n \n {title}\n \n
\n
\n \n \n
\n
\n\n
\n
\n
\n \n
\n \n
\n )\n}\n\nexport default InvoiceModal\n","import { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useMutation, useQueryClient } from '@tanstack/react-query'\nimport apiClient from 'src/utils/apiClient'\nimport useInvoiceData from 'src/components/InvoiceComponent/useInvoiceData'\nimport { Invoice } from 'src/components/InvoiceComponent/types'\nimport {\n FilesIndicicator,\n TableData,\n TableLabel,\n} from 'src/components/InvoiceComponent/Table'\nimport { DeleteConfirmationDialog } from 'src/components/DeleteDialog'\nimport { Loading } from 'src/components/Loading'\nimport InvoiceModal from 'src/components/InvoiceComponent/InvoiceModal'\nimport { Table } from 'src/components/Table'\nimport { TextPlaceholder } from 'src/components/TextPlaceholder'\nimport { useParams } from 'react-router-dom'\nimport useInvoiceCalculator from 'src/components/InvoiceComponent/useInvoiceCalculator'\nimport { format } from 'src/components/InvoiceComponent/format'\nimport { Button } from 'src/components/action'\n\nconst InvoiceComponent = () => {\n const objectId = useParams<'objectId'>().objectId as string\n const queryClient = useQueryClient()\n const [showNewInvoiceModal, setShowNewInvoiceModal] = useState(false)\n\n // i18n\n const { t, i18n } = useTranslation()\n const { language } = i18n\n\n // Fetch from API\n const { invoices, isLoading, error } = useInvoiceData(objectId)\n\n const openEditor = () => setShowNewInvoiceModal(true)\n const closeEditor = () => setShowNewInvoiceModal(false)\n\n // Add new invoice\n const addInvoice = () => {\n openEditor()\n }\n\n const deleteInvoiceMutation = useMutation(\n async (userSharedInvoiceId: any) => {\n return await apiClient.deleteInvoice(objectId, userSharedInvoiceId)\n },\n {\n onSuccess: () => {\n queryClient.invalidateQueries([objectId, 'invoices'])\n },\n }\n )\n\n // Table\n const initialTableState = useMemo(\n () => ({\n sortBy: [\n {\n id: 'time',\n desc: false,\n },\n ],\n }),\n []\n )\n\n const columns = useMemo(() => {\n // Formatter shortcuts\n const twoDecimals = (v: number) => format(v, 2, language)\n const fourDecimals = (v: number) => format(v, 4, language)\n\n const cols = [\n // Time\n {\n Header: t('objects:uploadInvoiceView.time'),\n accessor: 'time',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const row = props.row.original as Invoice\n\n return \n },\n },\n // Electricity Difference\n {\n Header: t('objects:uploadInvoiceView.elecDiff'),\n accessor: 'elecDiff',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const invoice = props.row.original as Invoice\n const calculator = useInvoiceCalculator(invoice)\n\n return (\n \n )\n },\n },\n // Grid Difference\n {\n Header: t('objects:uploadInvoiceView.gridDiff'),\n accessor: 'gridDiff',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const invoice = props.row.original as Invoice\n const calculator = useInvoiceCalculator(invoice)\n\n return (\n \n )\n },\n },\n // Average Profit\n {\n Header: t('objects:uploadInvoiceView.averageProfit'),\n accessor: 'averageProfit',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const invoice = props.row.original as Invoice\n const calculator = useInvoiceCalculator(invoice)\n\n return (\n \n )\n },\n },\n // Average\n {\n Header: t('objects:uploadInvoiceView.average'),\n accessor: 'average',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const invoice = props.row.original as Invoice\n const calculator = useInvoiceCalculator(invoice)\n\n return (\n \n )\n },\n },\n // Average Grid\n {\n Header: t('objects:uploadInvoiceView.averageGrid'),\n accessor: 'averageGrid',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const invoice = props.row.original as Invoice\n const calculator = useInvoiceCalculator(invoice)\n\n return (\n \n )\n },\n },\n // Average Total\n {\n Header: t('objects:uploadInvoiceView.averageTotal'),\n accessor: 'averageTotal',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const invoice = props.row.original as Invoice\n const calculator = useInvoiceCalculator(invoice)\n\n return (\n \n )\n },\n },\n // Files\n {\n Header: t('objects:uploadInvoiceView.files'),\n accessor: 'files',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const invoice = props.row.original as Invoice\n\n return \n },\n },\n {\n Header: ' ',\n accessor: 'EDIT',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const invoice = props.row.original as Invoice\n const [isOpen, setIsOpen] = useState(false)\n\n return (\n <>\n setIsOpen(true)}\n className=\"cursor-pointer whitespace-nowrap pl-6 text-right text-sm font-medium text-green-600 hover:text-green-900\"\n >\n {t('objects:uploadInvoiceView.edit')}\n \n\n setIsOpen(false)}\n />\n \n )\n },\n },\n {\n Header: ' ',\n accessor: 'DELETE',\n Loader: (props: any) => ,\n Cell: (props: any) => {\n const invoice = props.row.original as Invoice\n const [isOpen, setIsOpen] = useState(false)\n\n return (\n <>\n setIsOpen(true)}\n className=\"cursor-pointer whitespace-nowrap pl-6 text-right text-sm font-medium text-red-600 hover:text-red-900\"\n >\n {t('objects:uploadInvoiceView.delete')}\n \n\n setIsOpen(false)}\n onSubmit={async () => {\n await deleteInvoiceMutation.mutate(invoice.userInvoiceId)\n }}\n />\n \n )\n },\n },\n ]\n return cols\n }, [t, language, deleteInvoiceMutation])\n\n // Catch before render\n if (error) {\n console.error(error)\n return

Error. Check console.

\n }\n\n if (isLoading) return \n\n return (\n <>\n \n
\n
\n
\n \n
\n
\n null} //onRowClickHanler(rowData['timestamp'])}\n tableStyleOverride=\"ml-6 md:ml-0 table-fixed md:table-auto\"\n thStyleOverride=\"text-base text-gray-500 font-medium whitespace-nowrap\"\n tdStyleOverride=\"px-3 first:w-10 first:max-w-lg first:w-96\"\n />\n
\n \n )\n}\n\nexport default InvoiceComponent\n\nconst buildDefaultInvoice = (): Invoice => {\n const invoice = {\n year: new Date().getFullYear().toString(),\n month: new Date().getMonth().toString(),\n index: '',\n time: '',\n quantity: 0,\n price: 0,\n priceGross: 0,\n amount: 0,\n amountGross: 0,\n rent: 0,\n rentGross: 0,\n total: 0,\n totalGross: 0,\n elecInvoice: null,\n gridInvoice: null,\n elecInvoiceGross: null,\n gridInvoiceGross: null,\n file: [],\n comment: '',\n }\n\n return {\n ...invoice,\n gridDiff: 0,\n gridDiffGross: 0,\n elecDiff: 0,\n elecDiffGross: 0,\n average: 0,\n averageGross: 0,\n }\n}\n","import React, { FC } from 'react'\nimport { LocationMarkerIcon, LightBulbIcon } from '@heroicons/react/outline'\nimport { Popup, Tooltip } from 'react-leaflet'\n\nexport const MeterPopup: FC = ({ children }) => (\n \n
\n \n {children}\n
\n
\n)\n\nexport const StationPopup: FC = ({ children }) => (\n \n
\n \n {children}\n
\n
\n)\n\nexport const Permatip = ({\n children,\n Icon,\n lime,\n}: {\n children: string\n Icon: any\n lime?: boolean\n}) => (\n \n
\n \n {lime ? (\n {children}\n ) : (\n {children}\n )}\n
\n
\n)\n","import L from 'leaflet'\nimport { PropsWithChildren, useEffect } from 'react'\nimport { useMap } from 'react-leaflet'\nimport { useTranslation } from 'react-i18next'\nimport { renderToStaticMarkup } from 'react-dom/server'\nimport { LocationMarkerIcon } from '@heroicons/react/outline'\nimport {\n MeteringPointDetails,\n MeteringPointWeatherStation,\n} from 'src/generated/client'\n\ntype LegendProps = {\n weatherStations: MeteringPointWeatherStation[]\n meter: MeteringPointDetails\n}\n\nconst Legend = ({ weatherStations, meter }: LegendProps) => {\n const map = useMap()\n\n useEffect(() => {\n const legend = new L.Control({ position: 'topright' })\n\n legend.onAdd = () => {\n const div = L.DomUtil.create('div', 'legend')\n\n div.innerHTML = renderToStaticMarkup(\n \n )\n\n return div\n }\n\n legend.addTo(map)\n\n return () => {\n legend.remove()\n }\n }, [map, meter, weatherStations])\n return null\n}\n\nexport default Legend\n\ntype WeatherStationCardProps = {\n station: MeteringPointWeatherStation\n}\n\nconst WeatherStationCard = ({ station }: WeatherStationCardProps) => {\n const { t } = useTranslation()\n return (\n
\n

\n {station.stationName}\n

\n\n
\n \n {String(station.distance)}\n \n \n {String(station.stationId)}\n \n
\n
\n )\n}\n\nconst CardDataItem = ({\n label,\n children,\n}: {\n label: string\n children: string\n}) => (\n
\n \n {label}\n \n {children}\n
\n)\n\ntype CardListProps = {\n weatherStations: MeteringPointWeatherStation[]\n}\n\nconst CardList = ({ weatherStations }: CardListProps) => {\n const { t } = useTranslation()\n return (\n
\n {/* \n {t(`objects:weatherStationsView.meter`)}\n \n \n
*/}\n \n {t(`objects:weatherStationsView.weatherStations`)}\n \n
\n {weatherStations.map(\n (station: MeteringPointWeatherStation, i: number) => (\n \n )\n )}\n
\n
\n )\n}\n\nconst CardListHeading = ({\n Icon,\n children,\n}: PropsWithChildren<{\n Icon: (props: React.ComponentProps<'svg'>) => JSX.Element\n}>) => (\n
\n \n {children}\n
\n)\n","import { LatLngTuple } from 'leaflet'\nimport { useQuery } from '@tanstack/react-query'\nimport { useParams } from 'react-router-dom'\nimport { MapContainer, Marker, TileLayer } from 'react-leaflet'\nimport { LocationMarkerIcon, LightBulbIcon } from '@heroicons/react/outline'\n\nimport { Loading } from 'src/components/Loading'\nimport APIClient from 'src/utils/apiClient'\nimport { useMeter } from 'src/context/meter'\nimport {\n MeterPopup,\n Permatip,\n StationPopup,\n} from 'src/components/WeatherStationsComponent/Markers'\nimport { MeteringPointWeatherStation } from 'src/generated/client'\nimport Legend from 'src/components/WeatherStationsComponent/Legend'\n\n// import 'leaflet/dist/leaflet.css'\n\nconst WeatherStations = () => {\n const objectId = useParams<'objectId'>().objectId as string\n const {\n isLoading: isWeatherLoading,\n error: weatherError,\n data: weatherStations,\n } = useQuery(\n ['weatherStations', objectId],\n async () => {\n return APIClient.getWeatherStations(objectId)\n },\n { enabled: !!objectId }\n )\n\n const {\n isLoading: isPlantLoading,\n error: plantError,\n data: plant,\n } = useQuery(\n ['weatherMeter', objectId],\n async () => {\n return APIClient.getPlant(objectId)\n },\n { enabled: !!objectId, staleTime: Infinity }\n )\n\n const meter = useMeter()\n\n if (isWeatherLoading || isPlantLoading || !plant || !weatherStations)\n return \n\n if (weatherError || plantError) return
Something went wrong
\n\n return (\n
\n
\n \n [s.stationLat, s.stationLon] as LatLngTuple\n ),\n ]}\n boundsOptions={{\n padding: [50, 50],\n }}\n scrollWheelZoom={false}\n className=\"overflow-hidden rounded-lg\"\n >\n \n\n \n {plant.netOwnerName}\n \n {`${meter?.objectName} - ${meter?.meteringPointId}`}\n \n \n\n {weatherStations.map(\n (station: MeteringPointWeatherStation, i: number) => (\n \n {station.stationName}\n \n {station.stationName!}\n \n \n )\n )}\n\n \n \n
\n
\n )\n}\n\nexport default WeatherStations\n","import dayjs from 'dayjs'\nimport { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport {\n CartesianGrid,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n Label,\n Line,\n TooltipProps,\n ComposedChart,\n Area,\n} from 'recharts'\nimport {\n NameType,\n ValueType,\n} from 'recharts/types/component/DefaultTooltipContent'\nimport { MeteringPointPowerFactor } from 'src/generated/client'\nimport { FreqType } from 'src/types'\nimport { pad } from '../Consumption/utils'\n\nconst xAxisTickFormatter = (value: string, freq: FreqType, t: any) => {\n if (freq === 'year') {\n return dayjs(value).format('YYYY')\n } else if (freq === 'month') {\n return t(`global:shortMonths.${dayjs(value).format('MMM').toLowerCase()}`)\n } else if (freq === 'day') {\n return dayjs(value).format('D')\n } else if (freq === 'hour') {\n return dayjs(value).format('H')\n } else {\n return ''\n }\n}\n\nexport const round = (value: any, decimals: number) =>\n Math.round(value * 10 ** decimals) / 10 ** decimals\n\nexport const PowerFactorGraph = ({\n data,\n freq,\n onGraphClick,\n}: {\n data: MeteringPointPowerFactor[]\n freq: FreqType\n onGraphClick: (v: string) => void\n}) => {\n const { t } = useTranslation()\n\n // const yLabelDeviationsLeft: string = t('powerFactor:powerYLabel')\n // const yLabelDeviationsRight: string = t('powerFactor:cosPhiYLabel')\n\n // scrap undefined or 0 values off\n // const graphData = data.filter(function (element) {\n // return element !== undefined\n // })\n\n const graphData = useMemo(() => {\n return pad(data, freq)?.map(\n (item: MeteringPointPowerFactor, i: number) => ({\n timestamp: item.timestamp,\n plantId: item.objectId,\n // z: [\n // item.z && item.p && item.q ? (item.p > item.q ? item.p : item.q) : 0,\n // item.z,\n // ],\n // p: [item.p && item.q ? (item.p > item.q ? item.q : item.p) : 0, item.p],\n // q: item.q,\n z: item.z,\n p: item.p,\n q: item.q,\n cosPhi: item.cosPhi,\n })\n )\n }, [data, freq])\n\n return (\n
\n
\n \n onGraphClick(graphData?.activeLabel)}\n margin={{\n top: 5,\n right: 50,\n left: 50,\n bottom: 30,\n }}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n xAxisTickFormatter(value, freq, t)}\n >\n value.toLocaleString('NO')}\n >\n \n \n value.toLocaleString('NO')}\n >\n \n \n }\n wrapperStyle={{ outline: 'none' }}\n />\n\n \n \n \n {/* \n \n */}\n \n \n \n \n
\n
\n )\n}\n\nexport default PowerFactorGraph\n\nconst CustomLegend = () => {\n const { t } = useTranslation()\n\n return (\n
\n
\n
\n

{t('powerFactor:activePowerLegend')}

\n
\n
\n
\n

{t('powerFactor:apparentPowerLegend')}

\n
\n
\n
\n

{t('powerFactor:reactivePowerLegend')}

\n
\n
\n
\n

{t(`powerFactor:cosPhiLegend`)}

\n
\n
\n )\n}\n\nconst PowerFactorTooltip = ({\n active,\n payload,\n freq,\n}: TooltipProps & { freq: FreqType }) => {\n const { t } = useTranslation()\n\n if (active && payload && payload.length) {\n return (\n
\n {freq === 'year' ? (\n

{dayjs(payload[0].payload.timestamp).format('YYYY')}

\n ) : freq === 'month' ? (\n

\n {`${t(\n `global:shortMonths.${dayjs(payload[0].payload.timestamp)\n .format('MMM')\n .toLowerCase()}`\n )} ${dayjs(payload[0].payload.timestamp).format('YYYY')}`}\n

\n ) : freq === 'day' ? (\n

{dayjs(payload[0].payload.timestamp).format('DD.MM.YYYY')}

\n ) : freq === 'hour' ? (\n

\n {dayjs(payload[0].payload.timestamp).format('HH:mm DD.MM.YYYY')}\n

\n ) : null}\n\n
\n
\n {payload.map((entry, index) => (\n

\n {entry.name === 'p'\n ? t('powerFactor:activePowerTooltip')\n : entry.name === 'z'\n ? t('powerFactor:apparentPowerTooltip')\n : entry.name === 'q'\n ? t('powerFactor:reactivePowerTooltip')\n : entry.name === 'cosPhi'\n ? 'cosPhi'\n : ''}\n : {round(entry.value, 2).toLocaleString('NO')}{' '}\n {entry.name === 'p'\n ? 'kW'\n : entry.name === 'z'\n ? 'kVA'\n : entry.name === 'q'\n ? 'kVar'\n : ''}\n

\n ))}\n
\n
\n )\n }\n return null\n}\n","import { useCallback, useState } from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport { useParams } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\nimport { QuestionMarkCircleIcon } from '@heroicons/react/outline'\nimport apiClient from 'src/utils/apiClient'\nimport useDateChanger from 'src/utils/hooks/useDateChanger'\nimport useDateRange from 'src/utils/hooks/useDateRange'\nimport FrequencyChanger from 'src/components/FrequencyChanger'\nimport Spinner from 'src/components/Spinner'\nimport DateChanger from 'src/components/DateChanger'\nimport { FreqType } from 'src/types'\nimport dayjs from 'dayjs'\nimport isoWeek from 'dayjs/plugin/isoWeek'\nimport PowerFactorGraph from 'src/components/powerFactorComponents/powerFactorGraphNew'\nimport { GraphPlaceholder } from 'src/components/GraphPlaceholder'\nimport { ActionButton } from 'src/components/action'\nimport HelpModal from 'src/components/HelpModal/HelpModal'\n\ndayjs.extend(isoWeek)\n\nconst freqOptions = ['day', 'hour']\n\nconst PowerFactor = () => {\n const { t } = useTranslation()\n // let freq: FreqType = (searchParams.get('freq') as FreqType) || 'day'\n\n const objectId = useParams<'objectId'>().objectId as string\n\n const defaultFreq: FreqType = 'day'\n\n const defaultFrom: string = dayjs()\n .startOf('month')\n .subtract(1, 'month')\n .format('YYYY-MM-DD')\n\n const defaultTo: string = dayjs(defaultFrom)\n .add(1, 'month')\n .startOf('month')\n .format('YYYY-MM-DD')\n\n const { from, freq, to, setDateRange } = useDateRange({\n defaultFreq: defaultFreq,\n defaultFrom: defaultFrom,\n defaultTo: defaultTo,\n })\n\n const { dateDisplay, disablePrev, disableNext } = useDateChanger({\n is_power_factor: true,\n })\n\n const [showHelpModal, setShowHelpModal] = useState(false)\n\n const { isLoading, data } = useQuery(\n ['PowerFactor', objectId, freq, from, to],\n () => apiClient.getMeteringPointPowerFactor(objectId, from, to, freq),\n {\n enabled: !!objectId,\n }\n )\n const freqChangeHandler = (value: FreqType) => {\n let tmpFrom = from\n let tmpTo = to\n let tmpFreq = value\n\n if (value === 'month') {\n tmpFrom = dayjs().startOf('year').format('YYYY-MM-DD')\n tmpTo = dayjs().add(1, 'year').startOf('year').format('YYYY-MM-DD')\n } else if (value === 'day') {\n if (dayjs().date() === 1) {\n tmpFrom = dayjs()\n .startOf('month')\n .subtract(1, 'month')\n .format('YYYY-MM-DD')\n tmpTo = dayjs(tmpFrom)\n .add(1, 'month')\n .startOf('month')\n .format('YYYY-MM-DD')\n } else {\n tmpFrom = dayjs().startOf('month').format('YYYY-MM-DD')\n tmpTo = dayjs(tmpFrom)\n .add(1, 'month')\n .startOf('month')\n .format('YYYY-MM-DD')\n }\n } else if (value === 'hour') {\n tmpFrom = dayjs().subtract(1, 'day').startOf('day').format('YYYY-MM-DD')\n tmpTo = dayjs(tmpFrom).add(1, 'day').startOf('day').format('YYYY-MM-DD')\n }\n\n setDateRange({\n freq: tmpFreq,\n from: tmpFrom,\n to: tmpTo,\n })\n }\n\n const dateChangeHandler = (value: string) => {\n let tmpFrom = from\n let tmpTo = to\n\n let changeByFreq: FreqType = 'month'\n if (freq === 'month') {\n changeByFreq = 'year'\n } else if (freq === 'day') {\n changeByFreq = 'month'\n } else if (freq === 'hour') {\n changeByFreq = 'day'\n }\n if (value === 'previous') {\n tmpFrom = dayjs(tmpFrom).subtract(1, changeByFreq).format('YYYY-MM-DD')\n tmpTo = dayjs(tmpTo)\n .subtract(1, changeByFreq)\n .startOf(changeByFreq)\n .format('YYYY-MM-DD')\n }\n if (value === 'next') {\n tmpFrom = dayjs(tmpFrom).add(1, changeByFreq).format('YYYY-MM-DD')\n tmpTo = dayjs(tmpTo).add(1, changeByFreq).format('YYYY-MM-DD')\n }\n setDateRange({\n freq,\n from: tmpFrom,\n to: tmpTo,\n })\n }\n\n const onRowClickHanler = useCallback(\n (v: string) => {\n let tmpFrom = from\n let tmpTo = to\n let tmpFreq = freq\n\n let value = dayjs(v)\n if (dayjs(value).isBefore(dayjs())) {\n if (freq === 'year') {\n tmpFreq = 'month'\n tmpFrom = dayjs(value).startOf('year').format('YYYY-MM-DD')\n tmpTo = dayjs(value)\n .add(1, 'year')\n .startOf('year')\n .format('YYYY-MM-DD')\n } else if (freq === 'month') {\n tmpFreq = 'day'\n tmpFrom = dayjs(value).startOf('month').format('YYYY-MM-DD')\n tmpTo = dayjs(value)\n .add(1, 'month')\n .startOf('month')\n .format('YYYY-MM-DD')\n } else if (freq === 'day') {\n tmpFreq = 'hour'\n tmpFrom = dayjs(value).startOf('day').format('YYYY-MM-DD')\n tmpTo = dayjs(value).add(1, 'day').startOf('day').format('YYYY-MM-DD')\n }\n\n setDateRange({ freq: tmpFreq, from: tmpFrom, to: tmpTo })\n }\n },\n [freq, to, from, setDateRange]\n )\n\n return (\n <>\n
\n
\n \n\n
\n
\n setShowHelpModal(true)}\n Icon={QuestionMarkCircleIcon}\n >\n {t('global:help')}\n \n
\n
\n
\n\n
\n {isLoading ? (\n
\n \n
\n ) : data ? (\n \n ) : (\n \n )}\n
\n \n\n setShowHelpModal(false)}\n helpText={t('powerFactor:help.helpText')}\n />\n \n )\n}\n\nexport default PowerFactor\n","import type { PropsWithChildren } from 'react'\nimport { ArrowLeftIcon } from '@heroicons/react/outline'\nimport { useQuery } from '@tanstack/react-query'\nimport dayjs from 'dayjs'\nimport { useEffect, useState } from 'react'\nimport Spinner from 'src/components/Spinner'\nimport apiClient from 'src/utils/apiClient'\nimport relativeTime from 'dayjs/plugin/relativeTime'\nimport utc from 'dayjs/plugin/utc'\nimport { useNavigate } from 'react-router-dom'\nimport { PrimaryButton } from 'src/components/action'\nimport { useTranslation } from 'react-i18next'\nimport toast from 'react-hot-toast'\n\ndayjs.extend(relativeTime)\ndayjs.extend(utc)\n\nconst Settings = () => {\n const { t } = useTranslation()\n const navigate = useNavigate()\n\n const { data: payloadData, isLoading: isPayloadLoading } = useQuery(\n ['settings'],\n () => apiClient.getUserSettings()\n )\n\n const { data: userData, isLoading: isUserDataLoading } = useQuery(\n ['me'],\n () => apiClient.getMe()\n )\n\n const copyToClipboard = () => {\n navigator.clipboard.writeText(payloadData.access_token)\n toast.success('Copied to clipboard')\n }\n\n const [val, setVal] = useState(\n dayjs(dayjs().diff(payloadData?.createdDate)).utc().format('HH:mm:ss')\n )\n\n useEffect(() => {\n let inter = setInterval(() => {\n setVal(\n dayjs(dayjs().diff(payloadData?.createdDate)).utc().format('HH:mm:ss')\n )\n }, 1000)\n\n return () => clearInterval(inter)\n }, [payloadData])\n\n const leftColW = 'md:w-48'\n\n return (\n
\n
\n
\n {\n navigate(-1)\n }}\n >\n \n
\n
\n {/*
goBack()}>\n {t('home:backCustomer')}\n
*/}\n
\n \n Settings\n \n\n {/* All settings */}\n\n

\n All user settings\n

\n\n {/* */}\n
\n
\n\n
\n
\n {isPayloadLoading && isUserDataLoading && (\n
\n \n
\n )}\n {payloadData && (\n
\n \n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n {payloadData.access_token}\n \n \n\n
\n

O365 API:

\n\n v{payloadData.o365ApiVersion}\n\n \n {payloadData.o365Api}\n \n
\n\n
\n

Solver API:

\n\n v{payloadData.solverApiVersion}\n\n \n {payloadData.solverApi}\n \n
\n
\n )}\n
\n (window.location.pathname = '/api/logout')}\n className=\"bg-gray-400 text-black\"\n >\n {t('global:logout')}\n \n
\n
\n
\n
\n )\n}\n\nexport default Settings\n\ntype ComponentProps = PropsWithChildren<{ label: string; value: any }>\n\nconst SettingItem = ({ label, value, children }: ComponentProps) => {\n return (\n
\n

{label}

\n {value &&

{value}

}\n {children}\n
\n )\n}\n","import {\n Navigate,\n Route,\n createBrowserRouter,\n createRoutesFromElements,\n} from 'react-router-dom'\n\n// Components\nimport ErrorBoundary from './components/ErrorBoundry'\n\n/**\n * Routes\n */\nimport AppRoot from './routes/root'\n\n/**\n * Pages\n */\nimport Login from './pages/Login'\nimport Customers from './pages/Customers'\nimport MeterFrame from './components/MeterFrame'\nimport Meters from './pages/Meters'\nimport SumBudget from './pages/CustomerBudget'\nimport CustomerFrame from './components/CustomerFrame'\nimport Budget from './pages/Budget'\nimport Consumption from './pages/Consumption'\nimport Details from './pages/Details'\nimport Enroll from './pages/Enroll'\nimport Peak from './pages/Peak'\nimport SpotPrice from './pages/SpotPrice'\nimport SumCompany from './pages/SumCompany'\nimport ET from './pages/ET'\nimport ETFelt from './pages/ETFelt'\nimport UploadInvoice from './pages/UploadInvoice'\nimport WeatherStations from './pages/WeatherStations'\nimport PowerFactor from './pages/PowerFactor'\nimport Settings from './pages/Settings'\n\nexport const router = createBrowserRouter(\n createRoutesFromElements(\n <>\n } />\n\n }\n errorElement={}\n >\n } />\n\n \n } />\n\n }>\n } />\n\n } />\n } />\n } />\n } />\n \n \n\n \n }>\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n\n {/* /App/47 should navigate back to /App */}\n } />\n\n {/* /App/47/Invalid should navigate back to /App */}\n } />\n \n\n {/* /App/Invalid should navigate back to /App */}\n } />\n \n\n } />\n } />\n \n\n } />\n } />\n \n )\n)\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport { RouterProvider } from 'react-router-dom'\n\nimport reportWebVitals from './reportWebVitals'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\n\nimport i18n from 'i18next'\nimport { initReactI18next } from 'react-i18next'\n\nimport './index.css'\nimport en from './locales/en'\nimport no from './locales/no'\n\nimport { AppStateContextProvider } from './context/appstate'\nimport { FullScreenLoading } from './components/Loading'\nimport { router } from './Router'\n\nimport { Toaster } from 'react-hot-toast'\n\nlet lang = localStorage.getItem('lang')\n\nconst AppVersion = '1.1.2'\nconsole.log('AppVersion', AppVersion)\n\nif (!lang) {\n lang = 'no'\n localStorage.setItem('lang', lang)\n}\n\ni18n\n .use(initReactI18next) // passes i18n down to react-i18next\n .init({\n resources: {\n en: en,\n no: no,\n },\n lng: lang,\n fallbackLng: 'no',\n\n interpolation: {\n escapeValue: false,\n },\n })\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n})\n\nReactDOM.render(\n \n \n \n \n }\n />\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":""}