{"version":3,"file":"static/chunks/878-e06a886b01cb1fd4.js","mappings":"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","sources":["webpack://_N_E/./src/components/common/Badge.tsx","webpack://_N_E/./src/components/common/Loader.tsx","webpack://_N_E/./src/components/common/CardListBlock.tsx","webpack://_N_E/./src/components/common/StreamField.tsx","webpack://_N_E/./src/components/general/HighlightValue.tsx","webpack://_N_E/./src/components/general/ImpactDisplay.tsx","webpack://_N_E/./src/components/common/PageHero.tsx","webpack://_N_E/./src/components/common/ScenarioBadge.tsx","webpack://_N_E/./src/components/graphs/ActionComparisonGraph.tsx","webpack://_N_E/./src/components/charts/ChartWrapper.tsx","webpack://_N_E/./src/components/general/ActionsComparison.tsx","webpack://_N_E/./src/components/general/EfficiencyDisplay.tsx","webpack://_N_E/./src/components/general/ActionListCard.tsx","webpack://_N_E/./src/components/general/ActionsList.tsx","webpack://_N_E/./src/components/graphs/MacGraph.tsx","webpack://_N_E/./src/components/general/ActionsMac.tsx","webpack://_N_E/./src/components/charts/chart-theme.tsx","webpack://_N_E/./src/components/charts/Chart.tsx","webpack://_N_E/./src/components/general/CostBenefitAnalysis.tsx","webpack://_N_E/./src/components/general/ReturnOnInvestment.tsx","webpack://_N_E/./src/queries/getImpactOverviews.ts","webpack://_N_E/./src/components/pages/ActionListPage.tsx","webpack://_N_E/./src/components/general/DimensionalBarGraph.tsx","webpack://_N_E/./src/components/general/DataTable.tsx","webpack://_N_E/./src/components/general/OutcomeNodeDetails.tsx","webpack://_N_E/./src/components/general/progress-tracking/useProgressData.ts","webpack://_N_E/./src/components/general/progress-tracking/StyledCard.tsx","webpack://_N_E/./src/components/general/progress-tracking/StyledStatusBadge.tsx","webpack://_N_E/./src/components/general/progress-tracking/utils.ts","webpack://_N_E/./src/components/general/progress-tracking/EmissionsCard.tsx","webpack://_N_E/./src/queries/visualizationEntryFragment.ts","webpack://_N_E/./src/queries/getNodeVisualizations.ts","webpack://_N_E/./src/components/general/progress-tracking/ProgressDriversVisualization.tsx","webpack://_N_E/./src/components/general/progress-tracking/ProgressDriversWrapper.tsx","webpack://_N_E/./src/components/general/progress-tracking/ProgressIndicator.tsx","webpack://_N_E/./src/components/general/OutcomeNodeContent.tsx","webpack://_N_E/./src/components/general/DashCard.tsx","webpack://_N_E/./src/components/general/OutcomeCard.tsx","webpack://_N_E/./src/components/general/OutcomeCardSet.tsx","webpack://_N_E/./src/components/pages/OutcomePage.tsx","webpack://_N_E/./src/components/pages/StaticPage.tsx","webpack://_N_E/./src/queries/getPage.js","webpack://_N_E/./src/components/pages/Page.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport { Badge as BSSBadge } from 'reactstrap';\nimport { readableColor } from 'polished';\nconst StyledBadge = styled(BSSBadge)`\n background-color: ${props => props.theme[props.color]} !important;\n color: ${props => readableColor(props.theme[props.color], props.theme.themeColors.black, props.theme.themeColors.white)};\n border-radius: ${props => props.theme.badgeBorderRadius};\n padding: ${props => props.theme.badgePaddingY}\n ${props => props.theme.badgePaddingX};\n font-weight: ${props => props.theme.badgeFontWeight};\n max-width: 100%;\n word-break: break-all;\n word-break: break-word;\n hyphens: manual;\n white-space: normal;\n text-align: left;\n\n &:hover {\n background-color: ${props => props.isLink && darken(0.05, props.theme[props.color])} !important;\n }\n\n &.lg {\n font-size: ${props => props.theme.fontSizeMd};\n }\n &.md {\n font-size: ${props => props.theme.fontSizeBase};\n }\n &.sm {\n font-size: ${props => props.theme.fontSizeSm};\n }\n`;\nconst Badge = props => {\n const {\n children,\n size,\n color,\n isLink\n } = props;\n return \n {children}\n ;\n};\nBadge.defaultProps = {\n children: null,\n size: 'sm',\n color: 'brandDark',\n isLink: false\n};\nBadge.propTypes = {\n children: PropTypes.node,\n size: PropTypes.string,\n color: PropTypes.string,\n isLink: PropTypes.bool\n};\nexport default Badge;","import React from 'react';\nimport { Spinner } from 'reactstrap';\nimport styled from 'styled-components';\nconst LoaderOverlay = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: rgba(255, 255, 255, 0.4);\n z-index: 1;\n`;\nconst Loader = () => {\n return \n \n ;\n};\nexport default Loader;","import styled from 'styled-components';\nimport { Card, CardText, CardTitle } from 'reactstrap';\ntype Props = {\n title?: string;\n cards: {\n title: string;\n shortDescription?: string;\n }[];\n};\nconst StyledCardContainer = styled.div`\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));\n gap: ${({\n theme\n}) => theme.spaces.s100};\n`;\nconst StyledCard = styled(Card)`\n border-radius: ${({\n theme\n}) => theme.cardBorderRadius};\n border: none;\n background-color: ${({\n theme\n}) => theme.cardBackground.secondary};\n padding: ${({\n theme\n}) => theme.spaces.s100};\n`;\nconst StyledCardTitle = styled(CardTitle)`\n line-height: ${({\n theme\n}) => theme.lineHeightMd};\n color: ${({\n theme\n}) => theme.textColor.secondary};\n`;\nexport function CardListBlock({\n title,\n cards\n}: Props) {\n return <>\n {!!title &&
{title}
}\n\n \n {cards.map((card, i) => \n {card.title}\n {!!card.shortDescription && {card.shortDescription}}\n )}\n \n ;\n}","import { gql } from '@apollo/client';\nimport RichText from './RichText';\nimport { StreamFieldFragmentFragment } from 'common/__generated__/graphql';\nimport { CardListBlock } from './CardListBlock';\nexport const STREAM_FIELD_FRAGMENT = gql`\n fragment StreamFieldFragment on StreamFieldInterface {\n id\n blockType\n field\n\n ... on RichTextBlock {\n value\n rawValue\n }\n\n ... on TextBlock {\n value\n }\n\n ... on CardListBlock {\n blockType\n title\n cards {\n __typename\n title\n shortDescription\n }\n }\n }\n`;\ntype Props = {\n block: StreamFieldFragmentFragment;\n};\nexport function StreamField({\n block\n}: Props) {\n switch (block.__typename) {\n case 'RichTextBlock':\n return ;\n case 'TextBlock':\n return null;\n case 'CardListBlock':\n return !!card?.title) ?? []} title={block.title ?? undefined} />;\n default:\n return null;\n }\n}","import React, { useState } from 'react';\nimport styled from 'styled-components';\nconst TotalValue = styled.div<{\n $size?: string;\n $muted?: boolean;\n}>`\n padding: 0;\n line-height: 1.2;\n font-weight: 700;\n font-size: ${({\n $size\n}) => $size === 'sm' ? '1.25' : '1.5'}rem;\n color: ${({\n $muted,\n theme\n}) => $muted ? theme.textColor.tertiary : theme.textColor.secondary};\n\n &:hover {\n color: ${({\n theme\n}) => theme.textColor.secondary};\n\n > div {\n color: ${({\n theme\n}) => theme.textColor.secondary};\n }\n\n svg {\n fill: ${({\n theme\n}) => theme.textColor.secondary};\n }\n }\n`;\nconst TotalUnit = styled.span<{\n $size?: string;\n}>`\n margin-left: 0.25rem;\n font-size: ${({\n $size\n}) => $size === 'sm' ? '0.6' : '0.75'}rem;\n`;\nconst YearRange = styled.div<{\n $size?: string;\n}>`\n display: flex;\n font-size: ${({\n $size\n}) => $size === 'sm' ? '0.6' : '0.75'}rem;\n color: ${({\n theme\n}) => theme.textColor.secondary};\n`;\ntype HighlightValueProps = {\n displayValue: string;\n header: string;\n unit: string;\n className?: string;\n size?: string;\n muted?: boolean;\n};\nconst HighlightValue = (props: HighlightValueProps) => {\n const {\n displayValue,\n header,\n unit,\n className,\n size,\n muted\n } = props;\n const id = `tt-${displayValue}`.replace(/\\W/g, '_');\n const [tooltipOpen, setTooltipOpen] = useState(false);\n const toggle = () => setTooltipOpen(!tooltipOpen);\n return \n \n \n \n {displayValue}\n \n ;\n};\nexport default HighlightValue;","import styled from 'styled-components';\nimport HighlightValue from 'components/general/HighlightValue';\nimport { formatNumber } from 'common/preprocess';\nimport { useTranslation } from 'next-i18next';\nimport { useInstance } from 'common/instance';\nconst ImpactDisplayWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n border: 1px solid ${props => props.theme.graphColors.grey030};\n border-radius: 0;\n`;\nconst ImpactDisplayHeader = styled.div<{\n $muted: boolean;\n}>`\n flex: 0 0 100%;\n padding: 0.5rem;\n border-bottom: 1px solid ${props => props.theme.graphColors.grey030};\n line-height: 1;\n font-size: 0.75rem;\n font-weight: 700;\n color: ${({\n theme,\n $muted\n}) => $muted ? theme.textColor.tertiary : theme.textColor.secondary};\n`;\nconst ImpactDisplayItem = styled.div`\n flex: 1 1 90px;\n text-align: left;\n padding: 0.5rem;\n\n &:not(:nth-child(2)) {\n border-left: 1px solid ${props => props.theme.graphColors.grey030};\n }\n`;\nconst ImpactDisplayChildren = styled.div`\n flex: 3 1 auto;\n text-align: left;\n padding: 0 0.5rem;\n\n &:not(:nth-child(2)) {\n border-left: 1px solid ${props => props.theme.graphColors.grey030};\n }\n`;\ntype ImpactDisplayProps = {\n effectCumulative: number | undefined;\n effectYearly: number;\n yearRange: [number, number];\n unitCumulative: string | undefined;\n unitYearly: string | undefined;\n muted?: boolean | undefined;\n size?: 'sm' | 'md' | 'lg';\n impactName?: string;\n children?: React.ReactNode;\n} & typeof ImpactDisplayDefaultProps;\nconst ImpactDisplayDefaultProps = {\n muted: false,\n size: 'md'\n};\nconst ImpactDisplay = (props: ImpactDisplayProps) => {\n const {\n effectCumulative,\n effectYearly,\n yearRange,\n unitCumulative,\n unitYearly,\n muted,\n size,\n impactName,\n children\n } = props;\n const {\n t,\n i18n\n } = useTranslation();\n const cumulativePrefix = effectCumulative !== undefined ? effectCumulative > 0 ? '+' : '' : '';\n const yearlyPrefix = effectYearly > 0 ? '+' : '';\n const instance = useInstance();\n return \n \n {t('impact')}\n {impactName && ` (${impactName})`}\n \n {effectCumulative !== undefined && instance.features.showAccumulatedEffects && \n \n }\n \n \n \n {children && {children}}\n ;\n};\nImpactDisplay.defaultProps = ImpactDisplayDefaultProps;\nexport default ImpactDisplay;","import styled from 'styled-components';\nimport { Container, Row } from 'reactstrap';\nexport const StyledContentContainer = styled(Container)<{\n $overlap: boolean;\n}>`\n /* Pull content to overlap the header section */\n margin-top: ${({\n $overlap\n}) => $overlap ? '-10rem' : '0'};\n`;\nconst StyledHeroContainer = styled.div<{\n $overlap: boolean;\n}>`\n padding: 4rem 0 2rem;\n margin-bottom: 1rem;\n background: ${({\n theme\n}) => theme.brandDark};\n color: ${props => props.theme.themeColors.white};\n padding-bottom: ${({\n $overlap\n}) => $overlap ? '10rem' : '0'};\n`;\nconst StyledHero = styled.div<{\n $overlap: boolean;\n}>`\n background: ${({\n $overlap,\n theme\n}) => !$overlap ? theme.brandDark : undefined};\n`;\nconst StyledTitle = styled.h1`\n font-size: ${props => props.theme.fontSizeLg};\n color: inherit;\n\n @media (min-width: ${props => props.theme.breakpointMd}) {\n font-size: ${props => props.theme.fontSizeXl};\n }\n`;\nconst StyledHeroCard = styled(Container)`\n border-radius: 0;\n background-color: ${props => props.theme.themeColors.white};\n color: ${props => props.theme.textColor.primary};\n padding: ${props => props.theme.spaces.s100};\n margin-bottom: ${({\n theme\n}) => theme.spaces.s400};\n\n @media (min-width: ${props => props.theme.breakpointMd}) {\n padding: ${props => props.theme.spaces.s200};\n }\n`;\nconst Description = styled.div`\n max-width: ${({\n theme\n}) => theme.breakpointSm};\n\n p:last-child {\n margin-bottom: 0;\n }\n\n a {\n text-decoration: underline;\n &:hover {\n text-decoration: none;\n }\n }\n`;\ntype Props = {\n title: string;\n leadTitle?: string;\n leadDescription?: string;\n /** Whether the children container overlaps part of the hero background, purely aesthetic */\n overlap?: boolean;\n children?: React.ReactNode;\n};\nexport const PageHero = ({\n title,\n leadTitle,\n leadDescription,\n overlap = false,\n children\n}: Props) => {\n const hasHeroCard = !!(leadTitle || leadDescription);\n return \n \n \n {hasHeroCard && \n \n \n {!!leadTitle && {leadTitle}}\n {!!leadDescription && }\n \n \n }\n\n {title}\n \n \n\n {!!children && \n {children}\n }\n ;\n};","import React from 'react';\nimport styled from 'styled-components';\nconst StyledBadge = styled.div`\n display: inline-block;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-bottom: 0.5rem;\n background-color: white !important;\n font-size: ${props => props.theme.fontSizeSm};\n color: ${props => props.theme.graphColors.grey070};\n word-break: break-all;\n word-break: break-word;\n hyphens: manual;\n white-space: normal;\n text-align: left;\n`;\nconst BadgeYears = styled.span`\n font-weight: ${props => props.theme.fontWeightBold};\n color: ${props => props.theme.themeColors.black};\n margin-bottom: 0.5rem;\n`;\ntype ScenarioBadgeProps = {\n children?: React.ReactNode;\n type?: string;\n startYear?: number;\n endYear?: number;\n};\nconst ScenarioBadge = (props: ScenarioBadgeProps) => {\n const {\n children,\n startYear,\n endYear\n } = props;\n const formattedYears = startYear && endYear ? startYear === endYear ? `${startYear}` : `${startYear} - ${endYear}` : '';\n return \n {formattedYears && {formattedYears}: }\n {children}\n ;\n};\nexport default ScenarioBadge;","import { useState, useEffect, useMemo, useCallback } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport styled, { useTheme } from 'styled-components';\nimport dynamic from 'next/dynamic';\nimport { Col, Row } from 'reactstrap';\nimport Icon from 'components/common/icon';\nconst Plot = dynamic(() => import('components/graphs/Plot'), {\n ssr: false\n});\nconst GraphContainer = styled.div`\n .js-plotly-plot {\n margin-bottom: 1rem;\n }\n`;\nconst ActionDescription = styled.div`\n margin-bottom: 2rem;\n padding: 1rem;\n border-radius: 0;\n border-left: 5px solid ${props => props.color};\n font-size: 1rem;\n background-color: ${props => props.theme.graphColors.grey010};\n\n h4 {\n margin-bottom: 1rem;\n }\n`;\nconst HoverValue = styled.div``;\nconst HoverGroupTag = styled.span`\n font-size: 80%;\n`;\nconst HoverValueTitle = styled.div`\n line-height: 1;\n margin-bottom: 0.5rem;\n`;\nconst HoverValueValue = styled.span`\n font-size: 1.75rem;\n font-weight: 700;\n line-height: 1;\n margin-right: 0.5rem;\n`;\nconst HoverValueUnit = styled.span``;\nconst formatNumber = (value, language) => {\n return parseFloat(Number(value).toPrecision(3)).toLocaleString(language);\n};\nfunction ActionComparisonGraph(props) {\n const {\n data,\n impactUnit,\n impactName,\n actionIds,\n actionGroups\n } = props;\n const theme = useTheme();\n const {\n t,\n i18n\n } = useTranslation();\n const [hoverId, setHoverId] = useState(null);\n useEffect(() => {\n // Update the document title using the browser API\n setHoverId(null);\n }, [data]);\n\n // console.log(\"mac props\", props);\n // TODO: Add sorting of data here\n\n if (data.actions?.length < 1) return
;\n const layout = useMemo(() => ({\n height: 300,\n barmode: 'relative',\n hoverlabel: {\n bgcolor: theme.themeColors.white,\n bordercolor: theme.graphColors.grey030,\n font: {\n family: theme.fontFamily,\n color: theme.graphColors.grey090\n }\n },\n hovermode: 'x unified',\n hoverdistance: 10,\n yaxis: {\n title: `${impactName} (${impactUnit})`\n },\n xaxis: {\n title: t('actions'),\n showgrid: true,\n showticklabels: false\n },\n margin: {\n l: 50,\n r: 0,\n b: 60,\n t: 10,\n pad: 0\n },\n paper_bgcolor: theme.themeColors.white,\n plot_bgcolor: theme.themeColors.white\n }), [theme, impactUnit, impactName]);\n const handleHover = useCallback(evt => {\n // console.log(\"HOVERED\", evt);\n const hoveredIndex = evt.points[0].pointIndex;\n //const hoverColors = data.colors;\n //hoverColors[hoveredIndex] = \"#333\";\n //setBarColors(hoverColors);\n setHoverId(hoveredIndex);\n return null;\n }, [setHoverId]);\n const plot = useMemo(() => handleHover(evt)} />, [data, theme, layout, handleHover]);\n return \n {plot}\n {hoverId !== null && \n \n \n {actionGroups.find(group => group.id === data.groups[hoverId])?.name}\n \n

\n {data.actions[hoverId]} \n

\n
\n \n \n \n {impactName}\n \n {formatNumber(data.impact[hoverId], i18n.language)}\n \n \n \n \n \n \n \n
}\n
;\n}\nexport default ActionComparisonGraph;","import { ReactNode } from 'react';\nimport Loader from 'components/common/Loader';\nimport styled from 'styled-components';\nconst StyledCard = styled.div`\n position: relative;\n margin: 0 0 3rem;\n padding: 2rem;\n border-radius: 0;\n background-color: ${props => props.theme.themeColors.white};\n box-shadow: 3px 3px 12px rgba(33, 33, 33, 0.15);\n`;\nconst StyledSubtitle = styled.p`\n color: ${({\n theme\n}) => theme.textColor.secondary};\n`;\ntype Props = {\n id?: string;\n title?: string;\n subtitle?: string;\n isLoading: boolean;\n children: ReactNode;\n};\nexport function ChartWrapper({\n id,\n title,\n subtitle,\n isLoading,\n children\n}: Props) {\n return \n {!!title &&

{title}

}\n {!!subtitle && {subtitle}}\n {isLoading && }\n {children}\n
;\n}","import { SortActionsConfig } from 'types/actions.types';\nimport ActionComparisonGraph from 'components/graphs/ActionComparisonGraph';\nimport { useTranslation } from 'next-i18next';\nimport { ChartWrapper } from 'components/charts/ChartWrapper';\ntype Props = {\n sortBy?: SortActionsConfig['sortKey'];\n\n // TODO: Type props\n actions;\n id;\n actionGroups;\n sortAscending;\n refetching;\n displayYears;\n};\nconst ActionsComparison = ({\n actions,\n id,\n actionGroups,\n sortBy = 'cumulativeImpact',\n sortAscending,\n refetching,\n displayYears\n}: Props) => {\n // if we have efficiency limit set, remove actions over that limit\n\n const {\n t\n } = useTranslation();\n const actionsWithImpact = actions.map(action => {\n return {\n ...action,\n impact: action.impactMetric.forecastValues.find(dataPoint => dataPoint.year === displayYears[1])?.value || 0\n };\n });\n const sortActions = (a, b) => {\n const aValue = a[sortBy];\n const bValue = b[sortBy];\n return sortAscending ? aValue - bValue : bValue - aValue;\n };\n const sortedActions = [...actionsWithImpact].sort(sortActions);\n const macData = {\n ids: sortedActions.map(action => action.id),\n actions: sortedActions.map(action => action.name),\n colors: sortedActions.map(action => action.color || action.group?.color),\n groups: sortedActions.map(action => action.group?.id),\n impact: sortedActions.map(action => action.impact)\n };\n\n // FIXME: Running impact metric name through translation as a quickfix until they are translated in the backend\n const impactName = `${t(sortedActions[0]?.impactMetric.name)} ${displayYears[1]}`;\n const impactUnit = sortedActions[0]?.impactMetric.unit.htmlShort;\n return \n \n ;\n};\nexport default ActionsComparison;","import styled from 'styled-components';\nimport { useTranslation } from 'next-i18next';\nimport HighlightValue from 'components/general/HighlightValue';\nimport { formatNumber } from 'common/preprocess';\nconst EfficiencyDisplayWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n border-radius: 0;\n`;\nconst EfficiencyDisplayHeader = styled.div<{\n muted?: boolean;\n}>`\n flex: 0 0 100%;\n padding: ${props => props.theme.spaces.s050};\n border: 1px solid ${props => props.theme.graphColors.grey030};\n line-height: 1;\n font-size: 0.75rem;\n font-weight: 700;\n color: ${props => props.muted ? props.theme.graphColors.grey050 : props.theme.graphColors.grey090};\n`;\nconst EfficiencyDisplayItem = styled.div`\n flex: 1 1 90px;\n text-align: left;\n padding: ${props => props.theme.spaces.s050};\n border: 1px solid ${props => props.theme.graphColors.grey030};\n border-top: 0;\n`;\ntype EfficiencyDisplayProps = {\n impactCumulative: number;\n impactCumulativeUnit: string;\n impactCumulativeLabel: string;\n costCumulative: number;\n costCumulativeUnit: string;\n costCumulativeLabel: string;\n efficiencyCumulative: number;\n efficiencyCumulativeUnit: string;\n efficiencyCumulativeLabel: string;\n efficiencyCap: number;\n yearRange: [number, number];\n muted?: boolean;\n};\nconst EfficiencyDisplay = (props: EfficiencyDisplayProps) => {\n const {\n impactCumulative,\n impactCumulativeUnit,\n impactCumulativeLabel,\n costCumulative,\n costCumulativeUnit,\n costCumulativeLabel,\n efficiencyCumulative,\n efficiencyCumulativeUnit,\n efficiencyCumulativeLabel,\n efficiencyCap,\n yearRange,\n muted\n } = props;\n const {\n t,\n i18n\n } = useTranslation();\n const displayEfficiency = Math.abs(efficiencyCumulative) < efficiencyCap ? formatNumber(efficiencyCumulative || 0, i18n.language) : '-';\n const displayImpact = Math.abs(efficiencyCumulative) < efficiencyCap ? formatNumber(impactCumulative || 0, i18n.language) : '0';\n return \n \n {`${efficiencyCumulativeLabel} ${yearRange[0]}–${yearRange[1]}`}\n \n \n \n \n \n \n \n \n \n \n ;\n};\nexport default EfficiencyDisplay;","import { useTranslation } from 'next-i18next';\nimport styled from 'styled-components';\nimport { ActionLink } from 'common/links';\nimport { findActionEnabledParam, summarizeYearlyValuesBetween } from 'common/preprocess';\nimport ActionParameters from 'components/general/ActionParameters';\nimport ImpactDisplay from 'components/general/ImpactDisplay';\nimport Badge from 'components/common/Badge';\nimport EfficiencyDisplay from 'components/general/EfficiencyDisplay';\nimport { ActionWithEfficiency } from 'components/pages/ActionListPage';\nimport Icon from 'components/common/icon';\nimport Loader from 'components/common/Loader';\nconst ActionItem = styled.div<{\n $isActive: boolean;\n color?: string;\n}>`\n position: relative;\n margin-bottom: 0.5rem;\n color: ${({\n $isActive,\n theme\n}) => $isActive ? theme.textColor.secondary : theme.textColor.tertiary};\n padding: 1rem;\n background-color: ${({\n $isActive,\n theme\n}) => $isActive ? theme.cardBackground.primary : theme.cardBackground.secondary};\n box-shadow: 3px 3px 12px rgba(33, 33, 33, 0.15);\n border-left: 6px solid\n ${props => props.color !== 'undefined' ? props.color : props.theme.graphColors.grey090};\n\n h5,\n a {\n color: ${({\n $isActive,\n theme\n}) => $isActive ? theme.textColor.primary : theme.textColor.tertiary};\n }\n`;\nconst CardHeader = styled.div`\n margin-bottom: 1rem;\n border-bottom: 1px solid ${props => props.theme.graphColors.grey030};\n`;\nconst ActionCategory = styled.div`\n margin-bottom: 0.5rem;\n`;\nconst TextContent = styled.div`\n margin: 1rem 0;\n`;\nconst CardContent = styled.div`\n display: flex;\n flex-direction: column;\n`;\nconst CardDetails = styled.div`\n max-width: 720px;\n margin: ${props => props.theme.spaces.s100} auto 0 auto;\n font-size: 80%;\n`;\nconst ActionState = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n`;\nconst GroupTag = styled.div<{\n color?: string;\n}>`\n font-size: 80%;\n color: ${props => props.theme.themeColors.dark};\n`;\nconst StyledIconWrapper = styled.div`\n font-size: 0;\n transition: transform 0.1s;\n`;\nconst StyledActionLink = styled.a`\n display: flex;\n gap: ${({\n theme\n}) => theme.spaces.s050};\n align-items: center;\n justify-content: space-between;\n\n &:hover {\n ${StyledIconWrapper} {\n transform: translateX(4px);\n }\n }\n`;\nconst StyledActionTitle = styled.h5`\n margin-bottom: 0;\n`;\ntype ActionListCardProps = {\n action: ActionWithEfficiency;\n displayType: string;\n displayYears: [number, number];\n refetching: boolean;\n};\nconst ActionListCard = (props: ActionListCardProps) => {\n const {\n action,\n displayType,\n displayYears,\n refetching\n } = props;\n const {\n t\n } = useTranslation();\n\n // const unitYearly = `kt CO2e${t('abbr-per-annum')}`;\n const unitYearly = `${action.impactMetric.unit?.htmlShort}`;\n\n //const actionEffectCumulative = action.impactMetric.cumulativeForecastValue;\n const actionEffectCumulative = summarizeYearlyValuesBetween(action.impactMetric, displayYears[0], displayYears[1]);\n\n // const unitCumulative = 'kt CO2e';\n const unitCumulative = action.impactMetric.yearlyCumulativeUnit?.htmlShort;\n const enabledParam = findActionEnabledParam(action.parameters);\n const isActive = !refetching && (enabledParam?.boolValue ?? false);\n const hasEfficiency = ('cumulativeEfficiency' in action);\n const removeHtml = /(<([^>]+)>)/gi;\n const description = (action?.goal || action?.shortDescription)?.replace(removeHtml, '');\n const originalLength = description?.length ?? 0;\n let clippedDescription = description ? description.slice(0, 220) : '';\n if (originalLength > clippedDescription.length) {\n clippedDescription += '...';\n }\n return \n {refetching && }\n \n {action.group && {action.group.name}}\n \n \n {action.name}\n \n \n \n \n \n \n {action.decisionLevel === 'NATION' && {t('decision-national')}}\n \n \n \n \n \n {action.impactMetric && !hasEfficiency && }\n {hasEfficiency && }\n \n {clippedDescription}\n \n ;\n};\nexport default ActionListCard;","import styled from 'styled-components';\nimport { Row, Col } from 'reactstrap';\nimport { summarizeYearlyValuesBetween } from 'common/preprocess';\nimport ActionListCard from 'components/general/ActionListCard';\nimport { ActionWithEfficiency, SortActionsConfig } from 'types/actions.types';\nimport { useMemo } from 'react';\nconst ActionListList = styled(Row)`\n list-style: none;\n padding: 0;\n`;\nconst ActionListItem = styled(Col)`\n margin-bottom: ${props => props.theme.spaces.s200};\n > div {\n height: 100%;\n }\n`;\nconst ActionListCategory = styled.div`\n padding: ${props => props.theme.spaces.s100};\n margin-bottom: ${props => props.theme.spaces.s200};\n background-color: ${({\n theme\n}) => theme.cardBackground.primary};\n\n h3 {\n margin: 0;\n }\n`;\nconst getValueForSorting = (action: ActionWithEfficiency, sortBy: SortActionsConfig, yearRange: [number, number]): number => {\n if (sortBy.key === 'CUM_IMPACT') {\n return summarizeYearlyValuesBetween(action.impactMetric, yearRange[0], yearRange[1]);\n }\n if (sortBy.sortKey) {\n const sortValue = action[sortBy.sortKey];\n if (typeof sortValue === 'number') {\n return sortValue;\n }\n }\n return 0;\n};\ntype ActionsListProps = {\n id?: string;\n actions: ActionWithEfficiency[];\n displayType: 'displayTypeYearly';\n yearRange: [number, number];\n sortBy: SortActionsConfig;\n sortAscending: boolean;\n refetching: boolean;\n};\nconst ActionsList = ({\n id,\n actions,\n displayType,\n yearRange,\n sortBy,\n sortAscending,\n refetching\n}: ActionsListProps) => {\n // possible sort: default, impact, cumulativeImpact, cumulativeCost, cumulativeEfficiency\n\n //console.log(\"action list\", actions);\n const sortActions = (a, b) => {\n if (sortBy.key === 'STANDARD') {\n return sortAscending ? 0 : -1;\n }\n const aValue = getValueForSorting(a, sortBy, yearRange);\n const bValue = getValueForSorting(b, sortBy, yearRange);\n return sortAscending ? aValue - bValue : bValue - aValue;\n };\n const sortedActions = useMemo(() => {\n return [...actions].sort(sortActions);\n }, [actions, sortBy, sortAscending]);\n\n // Group actions by group\n const actionGroups = useMemo(() => {\n const groups = new Set();\n actions.forEach(action => {\n if (action.group) groups.add(action.group.name);\n });\n return [...groups];\n }, [actions]);\n return
\n {actionGroups?.map(group =>
\n \n

{group}

\n
\n \n {sortedActions?.map(action => action.group?.name === group && \n \n )}\n \n
)}\n {actionGroups.length < 1 && \n {sortedActions?.map(action => !action.group && )}\n }\n
;\n};\nexport default ActionsList;","import { useState, useEffect, useMemo, useCallback } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport styled, { useTheme } from 'styled-components';\nimport dynamic from 'next/dynamic';\nimport { Col, Row } from 'reactstrap';\nimport Icon from 'components/common/icon';\nimport { t } from 'i18next';\nconst Plot = dynamic(() => import('components/graphs/Plot'), {\n ssr: false\n});\nconst GraphContainer = styled.div`\n .js-plotly-plot {\n margin-bottom: 1rem;\n }\n`;\nconst ActionDescription = styled.div`\n margin-bottom: 2rem;\n padding: 1rem;\n border-radius: 0;\n font-size: 1rem;\n background-color: ${props => props.theme.graphColors.grey010};\n\n h4 {\n margin-bottom: 1rem;\n }\n`;\nconst HoverValue = styled.div``;\nconst HoverGroupTag = styled.span`\n font-size: 80%;\n color: ${props => props.color};\n`;\nconst HoverValueTitle = styled.div`\n line-height: 1;\n margin-bottom: 0.5rem;\n`;\nconst HoverValueValue = styled.span`\n font-size: 1.75rem;\n font-weight: 700;\n line-height: 1;\n margin-right: 0.5rem;\n`;\nconst HoverValueUnit = styled.span``;\nconst EmptyPlot = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 450px;\n margin: 0 0 2rem;\n`;\nconst formatNumber = (value, language) => {\n return parseFloat(Number(value).toPrecision(3)).toLocaleString(language);\n};\nfunction MacGraph(props) {\n const {\n data,\n impactUnit,\n impactName,\n efficiencyUnit,\n efficiencyName,\n actionIds,\n costName,\n costUnit,\n actionGroups\n } = props;\n const theme = useTheme();\n const {\n i18n,\n t\n } = useTranslation();\n const barHoverColor = theme.graphColors.green090;\n const [barColors, setBarColors] = useState(data.colors);\n const [hoverId, setHoverId] = useState(null);\n useEffect(() => {\n // Update the document title using the browser API\n setHoverId(null);\n }, [data]);\n\n // console.log(\"mac props\", props);\n // TODO: Add sorting of data here\n\n const isEmpty = data.actions?.length < 1;\n let totalSaving = 0;\n let negativeSideWidth = 0;\n const xPlacement = data['impact'].map(bar => {\n const barWidth = Math.abs(bar);\n if (bar < 0) {\n negativeSideWidth += barWidth;\n return -negativeSideWidth + barWidth - barWidth / 2;\n }\n totalSaving += barWidth;\n return totalSaving - barWidth + barWidth / 2;\n });\n const negativeSide = useMemo(() => negativeSideWidth > 0 ? [{\n type: 'rect',\n // x-reference is assigned to the x-values\n xref: 'x',\n // y-reference is assigned to the plot paper [0,1]\n yref: 'paper',\n x0: -negativeSideWidth,\n y0: 0,\n x1: 0,\n y1: 1,\n fillcolor: theme.graphColors.red030,\n opacity: 0.2,\n line: {\n width: 0\n }\n }, {\n type: 'line',\n xref: 'x',\n yref: 'paper',\n x0: 0,\n y0: 0,\n x1: 0,\n y1: 1,\n line: {\n color: theme.graphColors.red030,\n width: 1\n }\n }] : [], [theme, negativeSideWidth]);\n const layout = useMemo(() => ({\n height: 450,\n barmode: 'relative',\n hoverlabel: {\n bgcolor: theme.themeColors.white,\n bordercolor: theme.graphColors.grey030,\n font: {\n family: theme.fontFamily,\n color: theme.graphColors.grey090\n }\n },\n hovermode: 'x unified',\n hoverdistance: 10,\n yaxis: {\n title: {\n text: `${efficiencyName} (${efficiencyUnit})`\n }\n },\n xaxis: {\n ticksuffix: ` ${impactUnit}`,\n title: {\n text: `${impactName} (${impactUnit})`\n },\n showgrid: true\n },\n margin: {\n l: 50,\n r: 0,\n b: 60,\n t: 10,\n pad: 0\n },\n shapes: negativeSide,\n paper_bgcolor: theme.themeColors.white,\n plot_bgcolor: theme.themeColors.white\n }), [theme, efficiencyName, efficiencyUnit, impactUnit, impactName, negativeSide]);\n const handleHover = useCallback(evt => {\n // console.log(\"HOVERED\", evt);\n const hoveredIndex = evt.points[0].pointIndex;\n //const hoverColors = data.colors;\n //hoverColors[hoveredIndex] = \"#333\";\n //setBarColors(hoverColors);\n setHoverId(hoveredIndex);\n return null;\n }, [setHoverId]);\n const plot = useMemo(() => isEmpty ? \n

{t('actions-count', {\n count: 0\n })}

\n
: %{text}

' + '%{yaxis.title.text}: %{y:.3r}
' + '%{xaxis.title.text}: %{customdata:.3r}
' + ''\n }]} layout={layout} useResizeHandler style={{\n width: '100%'\n }} config={{\n displayModeBar: false\n }} onHover={evt => handleHover(evt)} />, [data, theme, layout, handleHover]);\n return \n {plot}\n {hoverId !== null && \n \n \n {actionGroups.find(group => group.id === data.groups[hoverId])?.name}\n \n

\n {data.actions[hoverId]} \n

\n
\n \n \n \n {impactName}\n \n {formatNumber(data.impact[hoverId], i18n.language)}\n \n \n \n \n \n \n {costName}\n {formatNumber(data.cost[hoverId], i18n.language)}\n \n \n \n \n \n {efficiencyName}\n \n {formatNumber(data.efficiency[hoverId], i18n.language)}\n \n \n \n \n \n
}\n
;\n}\nexport default MacGraph;","import MacGraph from 'components/graphs/MacGraph';\nimport { ChartWrapper } from 'components/charts/ChartWrapper';\nconst ActionsMac = ({\n id,\n actions,\n actionEfficiencyPairs,\n t,\n actionGroups,\n sortBy,\n sortAscending,\n refetching\n}) => {\n // if we have efficiency limit set, remove actions over that limit\n const efficiencyLimit = actionEfficiencyPairs?.plotLimitEfficiency;\n // Remove actions without efficiency data\n const efficiencyActions = actions.filter(action => action.cumulativeEfficiency).filter(action => efficiencyLimit ? Math.abs(action.cumulativeEfficiency) <= efficiencyLimit : true);\n const sortActions = (a, b) => {\n const aValue = a[sortBy];\n const bValue = b[sortBy];\n return a.cumulativeImpact < 0 ? -1 : b.cumulativeImpact < 0 ? 0 : sortAscending ? aValue - bValue : bValue - aValue;\n };\n const sortedActions = [...efficiencyActions].sort(sortActions);\n const macData = {\n ids: sortedActions.map(action => action.id),\n actions: sortedActions.map(action => action.name),\n colors: sortedActions.map(action => action.color || action.group?.color),\n groups: sortedActions.map(action => action.group?.id),\n cost: sortedActions.map(action => action.cumulativeCost),\n efficiency: sortedActions.map(action => action.cumulativeEfficiency),\n impact: sortedActions.map(action => action.cumulativeImpact)\n };\n\n //const efficiencyUnit = actionEfficiencyPairs.efficiencyUnit.htmlShort;\n const efficiencyName = sortedActions[0]?.cumulativeEfficiencyName;\n const efficiencyUnit = sortedActions[0]?.cumulativeEfficiencyUnit;\n const impactName = sortedActions[0]?.cumulativeImpactName;\n const impactUnit = sortedActions[0]?.cumulativeImpactUnit;\n const costName = sortedActions[0]?.cumulativeCostName;\n const costUnit = sortedActions[0]?.cumulativeCostUnit;\n return \n \n ;\n};\nexport default ActionsMac;","import { Theme } from '@kausal/themes/types';\nimport { transparentize } from 'polished';\nexport function getChartTheme(theme: Theme) {\n return {\n version: 1,\n themeName: theme.name,\n theme: {\n seriesCnt: '4',\n backgroundColor: 'rgba(0,0,0,0)',\n titleColor: theme.headingsColor,\n subtitleColor: theme.textColor,\n textColorShow: false,\n textColor: theme.textColor,\n markTextColor: '#eeeeee',\n color: [theme.graphColors.blue030, theme.graphColors.green030, theme.graphColors.red030, theme.graphColors.yellow030, theme.graphColors.grey030],\n borderColor: '#ccc',\n borderWidth: 0,\n visualMapColor: ['#516b91', '#59c4e6', '#a5e7f0'],\n legendTextColor: '#999999',\n kColor: '#edafda',\n kColor0: 'transparent',\n kBorderColor: '#d680bc',\n kBorderColor0: '#8fd3e8',\n kBorderWidth: '2',\n lineWidth: '2',\n symbolSize: '6',\n symbol: 'emptyCircle',\n symbolBorderWidth: '2',\n lineSmooth: true,\n graphLineWidth: 1,\n graphLineColor: '#aaaaaa',\n mapLabelColor: '#000',\n mapLabelColorE: '#516b91',\n mapBorderColor: '#516b91',\n mapBorderColorE: '#516b91',\n mapBorderWidth: 0.5,\n mapBorderWidthE: 1,\n mapAreaColor: '#f3f3f3',\n mapAreaColorE: '#a5e7f0',\n axes: [{\n type: 'all',\n name: 'Universal axes',\n axisLineShow: true,\n axisLineColor: '#cccccc',\n axisTickShow: false,\n axisTickColor: '#333',\n axisLabelShow: true,\n axisLabelColor: '#999999',\n splitLineShow: true,\n splitLineColor: ['#eeeeee'],\n splitAreaShow: true,\n splitAreaColor: [transparentize(0.1, theme.brandDark), 'transparent']\n }, {\n type: 'category',\n name: 'Category axis',\n axisLineShow: true,\n axisLineColor: '#333',\n axisTickShow: true,\n axisTickColor: '#333',\n axisLabelShow: true,\n axisLabelColor: '#333',\n splitLineShow: false,\n splitLineColor: ['#ccc'],\n splitAreaShow: true,\n splitAreaColor: [transparentize(0.1, theme.brandDark), 'transparent']\n }, {\n type: 'value',\n name: 'Numeric axis',\n axisLineShow: true,\n axisLineColor: '#333',\n axisTickShow: true,\n axisTickColor: '#333',\n axisLabelShow: true,\n axisLabelColor: '#333',\n splitLineShow: true,\n splitLineColor: ['#ccc'],\n splitAreaShow: false,\n splitAreaColor: [transparentize(0.1, theme.brandDark), 'transparent']\n }, {\n type: 'log',\n name: 'Logarithmic axis',\n axisLineShow: true,\n axisLineColor: '#333',\n axisTickShow: true,\n axisTickColor: '#333',\n axisLabelShow: true,\n axisLabelColor: '#333',\n splitLineShow: true,\n splitLineColor: ['#ccc'],\n splitAreaShow: false,\n splitAreaColor: [transparentize(0.1, theme.brandDark), 'transparent']\n }, {\n type: 'time',\n name: 'Time axis',\n axisLineShow: true,\n axisLineColor: '#333',\n axisTickShow: true,\n axisTickColor: '#333',\n axisLabelShow: true,\n axisLabelColor: '#333',\n splitLineShow: true,\n splitLineColor: ['#ccc'],\n splitAreaShow: false,\n splitAreaColor: [transparentize(0.1, theme.brandDark), 'transparent']\n }],\n axisSeperateSetting: false,\n toolboxColor: '#999999',\n toolboxEmphasisColor: '#666666',\n tooltipAxisColor: '#cccccc',\n tooltipAxisWidth: 1,\n timelineLineColor: '#8fd3e8',\n timelineLineWidth: 1,\n timelineItemColor: '#8fd3e8',\n timelineItemColorE: '#8fd3e8',\n timelineCheckColor: '#8fd3e8',\n timelineCheckBorderColor: '#8a7ca8',\n timelineItemBorderWidth: 1,\n timelineControlColor: '#8fd3e8',\n timelineControlBorderColor: '#8fd3e8',\n timelineControlBorderWidth: 0.5,\n timelineLabelColor: '#8fd3e8',\n datazoomBackgroundColor: 'rgba(0,0,0,0)',\n datazoomDataColor: 'rgba(255,255,255,0.3)',\n datazoomFillColor: 'rgba(167,183,204,0.4)',\n datazoomHandleColor: '#a7b7cc',\n datazoomHandleWidth: '100',\n datazoomLabelColor: '#333'\n }\n };\n}","// Import the echarts core module, which provides the necessary interfaces for using echarts.\nimport * as echarts from 'echarts/core';\n\n// Import used charts\nimport { BarChart, CustomChart, LineChart } from 'echarts/charts';\n\n// Import the tooltip, title, rectangular coordinate system, dataset and transform components\nimport { TitleComponent, TooltipComponent, GridComponent, DatasetComponent, TransformComponent, LegendComponent, GraphicComponent } from 'echarts/components';\n\n// Features like Universal Transition and Label Layout\nimport { LabelLayout, UniversalTransition } from 'echarts/features';\n\n// Import the Canvas renderer\n// Note that including the CanvasRenderer or SVGRenderer is a required step\nimport { CanvasRenderer } from 'echarts/renderers';\nimport throttle from 'lodash/throttle';\nimport { useEffect, useRef } from 'react';\nimport styled, { useTheme } from 'styled-components';\nimport { getChartTheme } from './chart-theme';\n\n// Register the required components\necharts.use([BarChart, CustomChart, TitleComponent, TooltipComponent, GridComponent, DatasetComponent, TransformComponent, LegendComponent, LabelLayout, UniversalTransition, CanvasRenderer, GraphicComponent, LineChart]);\nconst StyledChartWrapper = styled.div<{\n $height?: string;\n}>`\n height: ${({\n $height\n}) => $height || '400px'};\n`;\ntype Props = {\n isLoading: boolean;\n data?: echarts.EChartsCoreOption;\n height?: string;\n onZrClick?: (clickedDataIndex: number) => void;\n className?: string;\n};\nexport function Chart({\n isLoading,\n data,\n height,\n onZrClick,\n className\n}: Props) {\n const theme = useTheme();\n const chartRef = useRef(null);\n const wrapperRef = useRef(null);\n useEffect(() => {\n const chart = echarts.init(wrapperRef.current, getChartTheme(theme).theme);\n chartRef.current = chart;\n const throttledResize = throttle(() => chart.resize(), 1000, {\n leading: false,\n trailing: true\n });\n window.addEventListener('resize', throttledResize);\n return () => {\n throttledResize.flush();\n window.removeEventListener('resize', throttledResize);\n chart.clear();\n chart.dispose();\n };\n }, [theme]);\n useEffect(() => {\n if (chartRef.current) {\n if (isLoading) {\n chartRef.current.showLoading();\n } else {\n chartRef.current.hideLoading();\n }\n }\n }, [isLoading]);\n useEffect(() => {\n if (chartRef.current && data) {\n chartRef.current.setOption(data);\n }\n }, [data]);\n useEffect(() => {\n const chart = chartRef.current;\n const chartZr = chart?.getZr();\n const withClickHandler = typeof onZrClick === 'function';\n function handleClick(params) {\n if (chart && withClickHandler) {\n const pointInPixel = [params.offsetX, params.offsetY];\n const pointInGrid = chart.convertFromPixel('grid', pointInPixel);\n const dataIndex = pointInGrid[1];\n onZrClick(dataIndex);\n }\n }\n if (chartZr && typeof onZrClick === 'function') {\n chartZr.on('click', handleClick);\n return () => {\n chartZr.off('click', handleClick);\n };\n }\n }, [onZrClick]);\n return ;\n}","import { ChartWrapper } from 'components/charts/ChartWrapper';\nimport { Chart } from 'components/charts/Chart';\nimport { useTranslation } from 'react-i18next';\nimport type { GetImpactOverviewsQuery } from '@/common/__generated__/graphql';\nimport type { EChartsCoreOption } from 'echarts/core';\nimport { useReactiveVar } from '@apollo/client';\nimport { yearRangeVar } from '@/common/cache';\nimport { useMemo } from 'react';\nimport { DimensionalMetric } from '@/data/metric';\nimport type { Theme } from '@kausal/themes/types';\nimport { useTheme } from 'styled-components';\nimport type { TFunction } from 'i18next';\n\n/**\n * For cost-benefit visualisations, only costDim is used.\n * Previously, costs were in costDim and benefits in impactDim.\n * But it makes more sense to have everything in one node so that\n * positive category values are costs and negative are benefits.\n */\n\ntype Props = {\n data?: GetImpactOverviewsQuery;\n isLoading: boolean;\n};\ntype Cubes = {\n metric: DimensionalMetric;\n totals: {\n cost: number;\n benefit: number;\n netBenefit: number;\n };\n};\nfunction getChartData(data: Cubes[], theme: Theme, t: TFunction): EChartsCoreOption {\n const sortedData = data.sort((a, b) => a.totals.netBenefit - b.totals.netBenefit);\n const unit = sortedData.length > 0 ? sortedData[0].metric?.data.unit.short : undefined;\n const unitLabel = typeof unit === 'string' ? t(unit) : '';\n const config: EChartsCoreOption = {\n dataset: {\n dimensions: [{\n name: 'action',\n type: 'ordinal'\n }, {\n name: 'cost',\n type: 'number'\n }, {\n name: 'benefit',\n type: 'number'\n }, {\n name: 'netBenefit',\n type: 'number'\n }],\n source: sortedData.map(item => {\n return {\n action: item.metric.data.name,\n cost: item.totals.cost,\n benefit: item.totals.benefit,\n netBenefit: item.totals.netBenefit\n };\n })\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'shadow'\n },\n valueFormatter: value => `${Math.round(value)} ${unitLabel}`\n },\n legend: {\n data: [{\n name: 'Net Benefit',\n icon: 'circle'\n }, 'Benefit', 'Cost']\n },\n grid: {\n containLabel: true,\n top: 80,\n bottom: 30\n },\n xAxis: {\n type: 'value',\n position: 'top',\n axisLabel: {\n formatter: `{value} ${unitLabel}`\n }\n },\n yAxis: {\n type: 'category',\n splitArea: {\n show: true\n },\n axisLine: {\n show: false\n },\n axisLabel: {\n show: true,\n width: 200,\n overflow: 'break',\n align: 'right'\n },\n axisTick: {\n show: false\n },\n splitLine: {\n show: false\n }\n },\n series: [{\n type: 'custom',\n name: 'Net Benefit',\n itemStyle: {\n color: theme.themeColors.black,\n borderWidth: 2\n },\n renderItem: function (params, api) {\n const categoryIndex = api.value('action');\n const netBenefit = api.value('netBenefit');\n const highPoint = api.coord([netBenefit, categoryIndex]);\n const height = api.size([0, 1])[1];\n const halfHeight = height / 2;\n const OFFSET = 5;\n const color = api.visual('color');\n const style = api.style({\n stroke: color,\n fill: color\n });\n return {\n name: 'Net benefit',\n type: 'group',\n barCategoryGap: '50%',\n groupPadding: 20,\n children: [{\n type: 'circle',\n transition: ['shape'],\n shape: {\n cx: highPoint[0],\n cy: highPoint[1] - halfHeight + OFFSET,\n r: 4\n },\n style: style\n }, {\n label: {\n show: false\n },\n type: 'line',\n transition: ['shape'],\n shape: {\n x1: highPoint[0],\n y1: highPoint[1] - halfHeight + OFFSET,\n x2: highPoint[0],\n y2: highPoint[1] + halfHeight - OFFSET\n },\n style: style\n }, {\n type: 'text',\n style: {\n text: `${Math.round(netBenefit)} ${unitLabel}`,\n font: '12px sans-serif',\n fill: theme.themeColors.black,\n textAlign: 'left',\n textBaseline: 'middle'\n },\n position: [highPoint[0] + 10, highPoint[1] - halfHeight + OFFSET]\n }]\n };\n },\n encode: {\n x: 'netBenefit',\n y: 'action'\n },\n z: 100\n }, {\n type: 'bar',\n barCategoryGap: '40%',\n name: 'Benefit',\n encode: {\n x: 'benefit',\n y: 'action'\n },\n itemStyle: {\n color: theme.graphColors.green030\n }\n }, {\n type: 'bar',\n name: 'Cost',\n encode: {\n x: 'cost',\n y: 'action'\n },\n itemStyle: {\n color: theme.graphColors.red030\n }\n }]\n };\n return config;\n}\nexport function CostBenefitAnalysis({\n data,\n isLoading\n}: Props) {\n const {\n t\n } = useTranslation();\n const theme = useTheme();\n const [startYear, endYear] = useReactiveVar(yearRangeVar);\n const dimensionalMetrics = useMemo(() => {\n const costBenefitData = data?.impactOverviews.find(dataset => dataset.graphType === 'cost_benefit');\n if (!costBenefitData) {\n return [];\n }\n return costBenefitData.actions.map(action => action.costDim ? new DimensionalMetric(action.costDim) : undefined).filter((metric): metric is DimensionalMetric => metric !== undefined);\n }, [data]);\n\n // Calculate the cost, benefit and net benefit for each metric\n const metricsWithTotals = useMemo(() => {\n const metrics = dimensionalMetrics.map(metric => {\n const [cost, benefit] = metric.rows.reduce(([cost, benefit], row) => {\n if (row.value === 0 || row.value == null || row.year < startYear || row.year > endYear) {\n return [cost, benefit];\n }\n\n // Negative costs are considered benefits\n if (row.value < 0) {\n return [cost, benefit + Math.abs(row.value)];\n }\n return [cost + row.value, benefit];\n }, [0, 0]);\n return {\n metric,\n totals: {\n cost,\n benefit,\n netBenefit: benefit - cost\n }\n };\n });\n return metrics;\n }, [dimensionalMetrics, startYear, endYear]);\n const chartData = useMemo(() => {\n return metricsWithTotals ? getChartData(metricsWithTotals, theme, t) : undefined;\n }, [metricsWithTotals, theme, t]);\n const barCount = metricsWithTotals.length;\n const chartHeight = barCount ? barCount * 50 + 150 : 400;\n return \n \n ;\n}","import { ChartWrapper } from 'components/charts/ChartWrapper';\nimport { Chart } from 'components/charts/Chart';\nimport { useTranslation } from 'react-i18next';\nimport { useReactiveVar } from '@apollo/client';\nimport type { GetImpactOverviewsQuery } from 'common/__generated__/graphql';\nimport { yearRangeVar } from 'common/cache';\nimport { useMemo } from 'react';\nimport round from 'lodash/round';\nimport type { EChartsCoreOption } from 'echarts/core';\nconst formatPercentage = (value: number) => `${round(value, 2)} %`;\nfunction getChartConfig(startYear: number, endYear: number, data?: GetImpactOverviewsQuery): EChartsCoreOption {\n const dataset = data?.impactOverviews.find(dataset => dataset.graphType === 'return_of_investment');\n return {\n dataset: dataset ? [{\n dimensions: ['action', 'returnOnInvestment'],\n source: dataset.actions.map(action => ({\n action: action.action.name,\n // Sums the cumulative impact and cost across the selected year range, then calculates ROI\n returnOnInvestment: action.costDim.years.reduce(({\n totalCost,\n totalImpact,\n roi\n }, year, index) => {\n if (year < startYear || year > endYear) {\n return {\n totalCost,\n totalImpact,\n roi\n };\n }\n const impact = totalImpact + (action.impactDim.values[index] ?? 0);\n const cost = totalCost + (action.costDim.values[index] ?? 0);\n return {\n totalCost: cost,\n totalImpact: impact,\n roi: impact && cost ? (impact / cost - 1) * 100 : 0\n };\n }, {\n totalCost: 0,\n totalImpact: 0,\n roi: 0\n }).roi\n }))\n }, {\n transform: {\n type: 'sort',\n config: {\n dimension: 'returnOnInvestment',\n order: 'desc'\n }\n }\n }] : [],\n tooltip: {\n trigger: 'axis',\n valueFormatter: formatPercentage\n },\n grid: {\n containLabel: true,\n top: 80,\n bottom: 30\n },\n xAxis: {\n type: 'value',\n position: 'top',\n axisLabel: {\n formatter: '{value}%'\n }\n },\n yAxis: {\n type: 'category',\n splitArea: {\n show: true\n },\n axisLine: {\n show: false\n },\n axisLabel: {\n show: true\n },\n axisTick: {\n show: false\n },\n splitLine: {\n show: false\n }\n },\n series: [{\n type: 'bar',\n encode: {\n x: 'returnOnInvestment',\n y: 'action'\n },\n datasetIndex: 1,\n label: {\n show: true,\n align: 'left',\n position: 'right',\n formatter(params) {\n const activeIndex = params.encode?.x[0];\n const value = activeIndex ? params.value?.[activeIndex] : null;\n return value ? formatPercentage(value) : '';\n }\n }\n }]\n };\n}\ntype Props = {\n data?: GetImpactOverviewsQuery;\n isLoading: boolean;\n};\nexport function ReturnOnInvestment({\n data,\n isLoading\n}: Props) {\n const {\n t\n } = useTranslation();\n const [startYear, endYear] = useReactiveVar(yearRangeVar);\n const chartData = useMemo(() => getChartConfig(startYear, endYear, data), [data, startYear, endYear]);\n const bars = data?.impactOverviews.find(({\n graphType\n }) => graphType === 'return_of_investment')?.actions?.length;\n const chartHeight = bars ? bars * 60 + 110 : 400;\n return \n \n ;\n}","import { gql } from '@apollo/client';\n\nexport const GET_IMPACT_OVERVIEWS = gql`\n query GetImpactOverviews {\n impactOverviews {\n id\n label\n graphType\n costNode {\n id\n }\n costUnit {\n short\n long\n }\n actions {\n action {\n id\n name\n }\n costDim {\n # TODO: There's an issue with the API where dimension ids\n # are the same as action ids and causes cache issues.\n # Once fixed, we should use the DimensionalMetric fragment here.\n # id\n name\n dimensions {\n id\n label\n originalId\n helpText\n categories {\n id\n originalId\n label\n color\n order\n group\n }\n groups {\n id\n originalId\n label\n color\n order\n }\n }\n goals {\n categories\n groups\n values {\n year\n value\n isInterpolated\n }\n }\n unit {\n htmlShort\n short\n }\n stackable\n normalizedBy {\n id\n name\n }\n forecastFrom\n years\n values\n }\n impactDim {\n # id\n dimensions {\n id\n }\n years\n values\n }\n }\n }\n }\n`;\n","import { useEffect, useMemo, useState } from 'react';\nimport { type QueryResult, useQuery, useReactiveVar } from '@apollo/client';\nimport type { GetActionListQuery, GetActionListQueryVariables, GetImpactOverviewsQuery, GetPageQuery } from 'common/__generated__/graphql';\nimport { activeGoalVar, activeScenarioVar, yearRangeVar } from 'common/cache';\nimport { useInstance } from 'common/instance';\nimport { summarizeYearlyValuesBetween } from 'common/preprocess';\nimport ContentLoader from 'components/common/ContentLoader';\nimport GraphQLError from 'components/common/GraphQLError';\nimport Icon from 'components/common/icon';\nimport { PageHero } from 'components/common/PageHero';\nimport ScenarioBadge from 'components/common/ScenarioBadge';\nimport ActionsComparison from 'components/general/ActionsComparison';\nimport ActionsList from 'components/general/ActionsList';\nimport ActionsMac from 'components/general/ActionsMac';\nimport { CostBenefitAnalysis } from 'components/general/CostBenefitAnalysis';\nimport { ReturnOnInvestment } from 'components/general/ReturnOnInvestment';\nimport SettingsPanelFull from 'components/general/SettingsPanelFull';\nimport type { TFunction } from 'i18next';\nimport { useTranslation } from 'next-i18next';\nimport { GET_ACTION_LIST } from 'queries/getActionList';\nimport { GET_IMPACT_OVERVIEWS } from 'queries/getImpactOverviews';\nimport { Button, ButtonGroup, Col, Container, FormGroup, Input, Label, Row } from 'reactstrap';\nimport styled from 'styled-components';\nimport type { ActionWithEfficiency, SortActionsBy, SortActionsConfig } from 'types/actions.types';\nimport type { PageRefetchCallback } from './Page';\nconst SettingsForm = styled.form`\n display: block;\n margin: 1.5rem 0;\n padding: 0.5rem 0;\n border-top: 1px solid ${props => props.theme.graphColors.blue030};\n border-bottom: 1px solid ${props => props.theme.graphColors.blue030};\n`;\nconst ActionCount = styled.div`\n padding: ${({\n theme\n}) => theme.spaces.s100} 0;\n color: ${({\n theme\n}) => theme.themeColors.white};\n\n span {\n margin-left: 1rem;\n }\n`;\nconst StyledFormGroup = styled(FormGroup)`\n width: 100%;\n`;\nconst SortButtons = styled(ButtonGroup)`\n button {\n padding-top: 0.4rem;\n padding-bottom: 0.4rem;\n }\n\n .icon {\n vertical-align: middle;\n }\n`;\nconst ActionsViewTabs = styled.div`\n background-color: ${props => props.theme.brandDark};\n margin-bottom: ${props => props.theme.spaces.s400};\n`;\nconst Tab = styled.button`\n background: ${props => props.theme.brandDark};\n color: ${props => props.theme.themeColors.white};\n display: inline-block;\n border: none;\n margin: 0;\n padding: ${props => `${props.theme.spaces.s050} ${props.theme.spaces.s150} ${props.theme.spaces.s100}`};\n text-decoration: none;\n cursor: pointer;\n text-align: center;\n\n &:hover,\n &:focus {\n color: ${props => props.theme.brandLight};\n }\n &.active {\n color: ${props => props.theme.graphColors.blue070};\n background: ${props => props.theme.graphColors.grey030};\n &:hover {\n color: ${props => props.theme.themeColors.black};\n }\n }\n\n .icon {\n width: 1.5rem !important;\n height: 1.5rem !important;\n vertical-align: middle;\n }\n`;\nconst getSortOptions = (t: TFunction, hasEfficiency: boolean, showAccumulatedEffects: boolean): SortActionsConfig[] => [{\n key: 'STANDARD',\n label: t('actions-sort-default')\n}, {\n isHidden: !hasEfficiency,\n key: 'CUM_EFFICIENCY',\n label: t('actions-sort-efficiency'),\n sortKey: 'cumulativeEfficiency'\n}, {\n isHidden: !showAccumulatedEffects,\n key: 'CUM_IMPACT',\n label: t('actions-sort-cumulative-impact')\n}, {\n key: 'IMPACT',\n label: t('actions-sort-impact'),\n sortKey: 'impactOnTargetYear'\n}, {\n isHidden: !hasEfficiency,\n key: 'CUM_COST',\n label: t('actions-sort-cost'),\n sortKey: 'cumulativeCost'\n}];\ntype ViewType = 'list' | 'mac' | 'comparison' | 'cost-benefit' | 'roi';\ntype ActionListPageProps = {\n page: NonNullable & {\n __typename: 'ActionListPage';\n };\n refetch: PageRefetchCallback;\n};\ntype ActionPageTabProps = {\n tabId: ViewType;\n label: string;\n isActive: boolean;\n onSelectTab: (id: string) => void;\n icon: string;\n};\nfunction hasGraph(impactResponse: QueryResult, graphType: string) {\n return !!impactResponse.data?.impactOverviews.find(overview => overview.graphType === graphType);\n}\nfunction ActionPageTab({\n tabId,\n label,\n isActive,\n onSelectTab,\n icon\n}: ActionPageTabProps) {\n return onSelectTab(tabId)} role=\"tab\" tabIndex={0} aria-selected={isActive} aria-controls=\"tabId\" id=\"list-tab\" data-sentry-element=\"Tab\" data-sentry-component=\"ActionPageTab\" data-sentry-source-file=\"ActionListPage.tsx\">\n {label}\n ;\n}\nfunction ActionListPage({\n page\n}: ActionListPageProps) {\n const {\n t\n } = useTranslation();\n const instance = useInstance();\n const activeGoal = useReactiveVar(activeGoalVar);\n const impactResp = useQuery(GET_IMPACT_OVERVIEWS, {\n fetchPolicy: 'cache-and-network'\n });\n const actionListResp = useQuery(GET_ACTION_LIST, {\n variables: {\n goal: activeGoal?.id ?? null\n },\n fetchPolicy: 'cache-and-network'\n });\n const error = actionListResp.error || impactResp.error;\n const {\n loading: areActionsLoading,\n previousData\n } = actionListResp;\n const activeScenario = useReactiveVar(activeScenarioVar);\n const yearRange = useReactiveVar(yearRangeVar);\n const data = actionListResp.data ?? previousData;\n const hasEfficiency = data ? data.actionEfficiencyPairs.length > 0 : false;\n const showReturnOnInvestment = hasGraph(impactResp, 'return_of_investment');\n const showCostBenefitAnalysis = hasGraph(impactResp, 'cost_benefit');\n const sortOptions = getSortOptions(t, hasEfficiency, !!instance.features.showAccumulatedEffects);\n const [listType, setListType] = useState('list');\n const [ascending, setAscending] = useState(true);\n const [sortBy, setSortBy] = useState(sortOptions.find(sortOption => sortOption.key === page.defaultSortOrder) ?? sortOptions[0]);\n const [activeEfficiency, setActiveEfficiency] = useState(0);\n const [actionGroup, setActionGroup] = useState<'ALL_ACTIONS' | string>('ALL_ACTIONS');\n const filteredActions = (data?.actions || []).filter(action => !page.showOnlyMunicipalActions || page.showOnlyMunicipalActions && action.decisionLevel === 'MUNICIPALITY');\n const usableActions: ActionWithEfficiency[] = useMemo(() => filteredActions.map(act => {\n // If we have action efficiency pairs, we augment the actions with the cumulative values\n const reductionText = `(${t('reduction')}, ${t('accumulated-between')} ${yearRange[0]}-${yearRange[1]})`;\n const out: ActionWithEfficiency = {\n ...act,\n impactOnTargetYear: [...(act.impactMetric?.historicalValues ?? []), ...(act.impactMetric?.forecastValues ?? [])].find(dataPoint => dataPoint.year === yearRange[1])?.value ?? 0\n };\n const efficiencyType = data?.actionEfficiencyPairs[activeEfficiency];\n const efficiencyAction = efficiencyType?.actions.find(a => a.action.id === act.id);\n if (!efficiencyType || !efficiencyAction) return out;\n out.cumulativeImpact = (efficiencyType.invertImpact ? -1 : 1) * summarizeYearlyValuesBetween(efficiencyAction.impactValues, yearRange[0], yearRange[1]);\n out.cumulativeCost = (efficiencyType.invertCost ? -1 : 1) * summarizeYearlyValuesBetween(efficiencyAction.costValues, yearRange[0], yearRange[1]);\n out.efficiencyDivisor = efficiencyAction.efficiencyDivisor ?? undefined;\n if (out.efficiencyDivisor !== undefined) out.cumulativeEfficiency = out.cumulativeCost / Math.abs(out.cumulativeImpact) / out.efficiencyDivisor;\n const efficiencyProps: Partial = {\n cumulativeImpactUnit: efficiencyType?.impactUnit.htmlShort,\n cumulativeImpactName: `${efficiencyType?.impactNode?.name} ${data.actionEfficiencyPairs[activeEfficiency]?.invertImpact ? reductionText : ''}`,\n cumulativeCostUnit: efficiencyType?.costUnit.htmlShort,\n cumulativeCostName: efficiencyType?.costNode?.name,\n cumulativeEfficiencyUnit: efficiencyType?.efficiencyUnit.htmlShort,\n cumulativeEfficiencyName: efficiencyType?.label,\n efficiencyCap: efficiencyType?.plotLimitEfficiency ?? undefined\n };\n Object.assign(out, efficiencyProps);\n return out;\n }).filter(action => actionGroup === 'ALL_ACTIONS' || actionGroup === action.group?.id), [data, actionGroup, activeEfficiency, yearRange]);\n const actionGroups = filteredActions.reduce((groups: NonNullable[], action) => !action.group || groups.find(group => group.id === action.group?.id) ? groups : [...groups, action.group], []);\n const handleChangeSort = (sortBy: SortActionsBy) => {\n const selectedSorter = sortOptions.find(option => option.key === sortBy);\n setSortBy(selectedSorter ?? sortOptions[0]);\n };\n if (error) {\n return \n \n ;\n }\n if (!data) {\n return ;\n }\n return <>\n \n \n \n {hasEfficiency && \n \n \n setActiveEfficiency(Number(e.target.value))}>\n {data.actionEfficiencyPairs.map((impactGroup, indx) => )}\n \n \n }\n {actionGroups.length > 1 && \n \n \n setActionGroup(e.target.value)}>\n \n {actionGroups.map(actionGroup => )}\n \n \n }\n \n
\n \n \n handleChangeSort((e.target.value as SortActionsBy))} data-sentry-element=\"Input\" data-sentry-source-file=\"ActionListPage.tsx\">\n {sortOptions.map(sortOption => !sortOption.isHidden && )}\n \n \n
\n
\n \n \n \n \n \n \n
\n \n
\n
\n \n \n {t('scenario')}: {activeScenario?.name}\n \n
{t('actions-count', {\n count: usableActions.length\n })}
\n
\n
\n \n \n
\n setListType('list')} icon=\"grid\" data-sentry-element=\"ActionPageTab\" data-sentry-source-file=\"ActionListPage.tsx\" />\n\n {hasEfficiency ? setListType('mac')} icon=\"chartColumn\" /> : setListType('comparison')} icon=\"chartColumn\" />}\n\n {showCostBenefitAnalysis && setListType('cost-benefit')} icon=\"chartColumn\" />}\n\n {showReturnOnInvestment && setListType('roi')} icon=\"chartColumn\" />}\n
\n
\n
\n \n \n \n {listType === 'list' && }\n {listType === 'mac' && }\n {listType === 'cost-benefit' && }\n {listType === 'roi' && }\n {listType === 'comparison' && }\n \n \n \n \n ;\n}\nexport default ActionListPage;","import { useEffect, useMemo, useState } from 'react';\nimport dynamic from 'next/dynamic';\nimport { useReactiveVar } from '@apollo/client';\nimport type { DimensionalNodeMetricFragment } from 'common/__generated__/graphql';\nimport { activeGoalVar } from 'common/cache';\nimport type { InstanceGoal } from 'common/instance';\nimport { DimensionalMetric, type SliceConfig } from 'data/metric';\nimport { isEqual } from 'lodash';\nimport { useTranslation } from 'next-i18next';\nimport { useTheme } from 'styled-components';\nconst Plot = dynamic(() => import('components/graphs/Plot'), {\n ssr: false\n});\nfunction getDefaultSliceConfig(cube: DimensionalMetric, activeGoal: InstanceGoal | null) {\n /**\n * By default, we group by the first dimension `metric` has, whatever it is.\n * @todo Is there a better way to select the default?\n *\n * If the currently selected goal has category selections for this metric,\n * we might choose another dimension.\n *\n * NOTE: This is just the default -- the actually active filtering and\n * grouping is controlled by the `sliceConfig` state below.\n */\n const defaultConfig: SliceConfig = {\n dimensionId: cube.dimensions[0]?.id,\n categories: {}\n };\n if (!activeGoal) return defaultConfig;\n const cubeDefault = cube.getChoicesForGoal(activeGoal);\n if (!cubeDefault) return defaultConfig;\n defaultConfig.categories = cubeDefault;\n /**\n * Check if our default dimension to slice by is affected by the\n * goal-based default filters. If so, we should choose another\n * dimension.\n */\n if (defaultConfig.dimensionId && cubeDefault.hasOwnProperty(defaultConfig.dimensionId)) {\n const firstPossible = cube.dimensions.find(dim => !cubeDefault.hasOwnProperty(dim.id));\n defaultConfig.dimensionId = firstPossible?.id;\n }\n return defaultConfig;\n}\ntype DimensionalBarGraphProps = {\n metric: NonNullable;\n endYear: number;\n color?: string | null;\n};\nconst DimensionalBarGraph = ({\n metric,\n endYear\n}: DimensionalBarGraphProps) => {\n const {\n t\n } = useTranslation();\n const theme = useTheme();\n const activeGoal = useReactiveVar(activeGoalVar);\n const cube = useMemo(() => new DimensionalMetric(metric), [metric]);\n const defaultConfig = getDefaultSliceConfig(cube, activeGoal);\n const [sliceConfig, setSliceConfig] = useState(defaultConfig);\n useEffect(() => {\n /**\n * If the active goal changes, we will reset the grouping + filtering\n * to be compatible with the new choices (if the new goal has common\n * dimensions with our metric).\n */\n if (!activeGoal) return;\n const newDefault = getDefaultSliceConfig(cube, activeGoal);\n if (!newDefault || isEqual(sliceConfig, newDefault)) return;\n setSliceConfig(newDefault);\n }, [activeGoal, cube]);\n const yearData = cube.getSingleYear(endYear, sliceConfig.categories);\n const plotData: Partial[] = [];\n let longUnit = metric.unit.htmlShort;\n // FIXME: Nasty hack to show 'CO2e' where it might be applicable until\n // the backend gets proper support for unit specifiers.\n if (cube.hasDimension('emission_scope') && !cube.hasDimension('greenhouse_gases')) {\n if (metric.unit.short === 't/Einw./a') {\n longUnit = t('tco2-e-inhabitant');\n } else if (metric.unit.short === 'kt/a') {\n longUnit = t('ktco2-e');\n }\n }\n let maxTotal = 0;\n yearData.categoryTypes[1].options.forEach((colId, cIdx) => {\n const colTotals = yearData.rows.reduce((acc, row) => {\n return row[cIdx] + acc;\n }, 0);\n // Remember the largest total for scaling the y-axis\n if (Math.abs(colTotals) > maxTotal) {\n maxTotal = Math.abs(colTotals);\n }\n yearData.categoryTypes[0].options.forEach((rowId, rIdx) => {\n const datum = yearData.rows[rIdx][cIdx];\n const portion = datum / colTotals;\n const displayPortions = portion >= 0.01 ? Math.round(datum / colTotals * 100) : '<1';\n const textTemplate = portion && portion !== 1 && portion !== 0 ? '%{meta[0]}%' : '';\n const dimDetails = yearData.allLabels.find(l => l.id === rowId);\n plotData.push({\n type: 'bar',\n x: [yearData.allLabels.find(l => l.id === colId)?.label],\n y: [datum],\n meta: [displayPortions],\n textposition: 'outside',\n texttemplate: textTemplate,\n textangle: 0,\n name: dimDetails?.label,\n base: datum < 0 ? [-datum] : undefined,\n width: 0.5,\n marker: {\n color: dimDetails?.color || theme.graphColors.grey050\n },\n showlegend: datum !== 0\n });\n });\n });\n const range = [0, maxTotal * 1.25];\n const layout: Partial = {\n height: 400,\n hovermode: false,\n barmode: 'stack',\n title: {\n text: endYear + '',\n font: {\n family: theme.fontFamily,\n size: 20\n },\n xref: 'paper',\n x: 0\n },\n annotations: [\n // Places y-axis title on top of the y-axis\n {\n xref: 'paper',\n yref: 'paper',\n yshift: 10,\n x: 0,\n xanchor: 'left',\n y: 1,\n yanchor: 'bottom',\n text: longUnit || undefined,\n font: {\n family: theme.fontFamily,\n size: 14\n },\n showarrow: false\n }],\n modebar: {\n remove: ['zoom2d', 'zoomIn2d', 'zoomOut2d', 'pan2d', 'select2d', 'lasso2d', 'autoScale2d', 'resetScale2d'],\n color: theme.graphColors.grey090,\n bgcolor: theme.graphColors.grey010,\n activecolor: theme.brandDark\n },\n yaxis: {\n range: range,\n tickfont: {\n family: theme.fontFamily\n }\n },\n xaxis: {\n tickfont: {\n family: theme.fontFamily\n }\n },\n dragmode: false,\n showlegend: true,\n legend: {\n orientation: 'h',\n yanchor: 'top',\n y: -0.2,\n xanchor: 'right',\n x: 1,\n itemclick: false,\n itemdoubleclick: false\n }\n };\n const plotConfig = {\n displaylogo: false,\n responsive: true\n };\n return <>\n
\n \n
\n ;\n};\nexport default DimensionalBarGraph;","import { Table } from 'reactstrap';\nimport Styled from 'styled-components';\nimport { useTranslation } from 'common/i18n';\nimport { formatNumber } from 'common/preprocess';\nimport { useFeatures } from '@/common/instance';\nconst TableWrapper = Styled.div`\n margin: 0 auto;\n max-width: 100%;\n overflow-x: auto;\n overflow-y: visible;\n width: calc(100% - 1rem);\n bottom: -1rem;\n max-height: 100%;\n z-index: 1;\n scroll-behavior: smooth;\n font-size: 70%;\n`;\nconst DataTable = props => {\n const {\n node,\n subNodes,\n startYear,\n endYear\n } = props;\n const {\n t,\n i18n\n } = useTranslation();\n const totalHistoricalValues = node.metric.historicalValues.filter(value => value.year >= startYear && value.year <= endYear);\n const totalForecastValues = node.metric.forecastValues.filter(value => value.year >= startYear && value.year <= endYear);\n const maximumFractionDigits = useFeatures().maximumFractionDigits ?? undefined;\n const hasTotalValues = totalHistoricalValues.some(val => val.value !== null) || totalForecastValues.some(val => val.value !== null);\n return \n
\n {node.name} ({startYear} - {endYear})\n
\n \n \n \n \n \n {subNodes?.map(subNode => )}\n {hasTotalValues && }\n \n \n \n \n {totalHistoricalValues.map(metric => \n \n \n {subNodes?.map(subNode => )}\n {hasTotalValues && }\n )}\n {totalForecastValues.map(metric => \n \n \n {subNodes?.map(subNode => )}\n {hasTotalValues && }\n )}\n \n
{t('table-year')}{t('table-measure-type')}{subNode.name}{node.metric.name}{t('table-unit')}
{metric.year}{t('table-historical')}\n {subNode.metric.historicalValues.find(value => value.year === metric.year) ? formatNumber(subNode.metric.historicalValues.find(value => value.year === metric.year).value, i18n.language, maximumFractionDigits) : '-'}\n {formatNumber(metric.value, i18n.language, maximumFractionDigits)}\n
{metric.year}{t('table-scenario-forecast')}\n {subNode.metric.forecastValues.find(value => value.year === metric.year) ? formatNumber(subNode.metric.forecastValues.find(value => value.year === metric.year).value, i18n.language, maximumFractionDigits) : '-'}\n {formatNumber(metric.value, i18n.language, maximumFractionDigits)}\n
\n
;\n};\nexport default DataTable;","import { useMemo } from 'react';\nimport styled from 'styled-components';\nimport { ActionLink, NodeLink } from 'common/links';\nconst ActionsList = styled.ul`\n font-size: 0.9rem;\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-wrap: wrap;\n`;\nconst ActionGroup = styled.p`\n margin: 0;\n font-size: 0.8rem;\n`;\nconst ActionsListCard = styled.li<{\n active: boolean;\n $groupColor: string;\n}>`\n position: relative;\n flex: 1 1 320px;\n min-height: 3rem;\n padding: 0.25rem 0.5rem;\n margin: 0.5rem;\n border: 1px solid ${props => props.theme.graphColors.grey010};\n border-left: 4px solid ${props => props.$groupColor};\n border-radius: 0.25rem;\n\n &:hover {\n background-color: ${props => props.theme.graphColors.grey010};\n }\n\n a {\n display: block;\n text-decoration: none;\n width: 100%;\n height: 100%;\n }\n\n a,\n a > h6 {\n color: ${props => props.active ? props.theme.graphColors.grey090 : props.theme.graphColors.grey050};\n }\n`;\nconst ActionListItem = props => {\n const {\n action\n } = props;\n const isActive = action.parameters.find(param => param.id == `${param.node.id}.enabled`)?.boolValue;\n const color = action.group?.color || '#000000';\n\n // console.log(\"ActionListItem\", props, isActive)\n return \n \n \n {action.group && {action.group.name}}\n
{action.name}
\n
\n
\n
;\n};\nconst OutcomeNodeDetails = props => {\n const {\n node,\n t\n } = props;\n //console.log(\"OutcomeNodeDetails\", props)\n\n const actions = useMemo(() => {\n const upstreamActions = [].concat(node.upstreamActions);\n upstreamActions.sort((a, b) => a.group?.id > b.group?.id ? 1 : -1);\n return upstreamActions;\n }, [node.upstreamActions]);\n return
\n {node.shortDescription &&
}\n {actions.length > 0 &&
\n {t('actions-influencing-this', {\n sector: node.name\n })} (\n {actions.length})\n
}\n \n {actions.map(action => )}\n \n

\n \n {t('read-more')}\n \n

\n
;\n};\nexport default OutcomeNodeDetails;","import { useMemo } from 'react';\nimport { useSite } from '@/context/site';\nimport { useReactiveVar } from '@apollo/client';\nimport { activeGoalVar } from '@/common/cache';\nimport { DimensionalMetric } from '@/data/metric';\nimport {\n metricHasProgressTrackingScenario,\n getProgressTrackingScenario,\n} from '@/utils/progress-tracking';\nimport { getDefaultSliceConfig } from '@/components/general/DimensionalNodePlot';\nimport { setUniqueColors } from '@/common/colors';\nimport { useTheme } from 'styled-components';\nimport type { DimensionalNodeMetricFragment } from '@/common/__generated__/graphql';\n\nexport type MetricDim = NonNullable;\n\nexport type ProgressData = {\n year: number;\n unit: string;\n totalExpected: number | null;\n expected: {\n id: string;\n color: string;\n label: string;\n value: number;\n }[];\n totalObserved: number | null;\n observed: {\n id: string;\n color: string;\n label: string;\n value: number;\n }[];\n};\n\nexport function useProgressData(metric: MetricDim, color?: string): ProgressData[] {\n const site = useSite();\n const activeGoal = useReactiveVar(activeGoalVar);\n const theme = useTheme();\n const defaultColor = color || theme.graphColors.blue070;\n\n return useMemo(() => {\n const defaultMetric = new DimensionalMetric(metric);\n const hasProgressTracking = metricHasProgressTrackingScenario(metric, site.scenarios);\n\n if (!hasProgressTracking) return [];\n\n const metrics = {\n default: defaultMetric,\n progress: new DimensionalMetric(metric, 'progress_tracking'),\n };\n\n const defaultConfig = getDefaultSliceConfig(metrics.default, activeGoal);\n const defaultSlice = metrics.default.sliceBy(\n defaultConfig.dimensionId!,\n true,\n defaultConfig.categories\n );\n\n const progressSlice = metrics.progress.sliceBy(\n defaultConfig.dimensionId!,\n true,\n defaultConfig.categories\n );\n\n /**\n * Generate colours for nodes missing colours using the same\n * logic as DimensionalNodePlot for node colour consistency.\n * Note that the setUniqueColors function mutates the categoryValues.\n */\n if (defaultSlice.categoryValues.length > 1) {\n setUniqueColors(\n defaultSlice.categoryValues,\n (cv) => cv.color,\n (cv, color) => {\n cv.color = color;\n },\n defaultColor\n );\n\n setUniqueColors(\n progressSlice.categoryValues,\n (cv) => cv.color,\n (cv, color) => {\n cv.color = color;\n },\n defaultColor\n );\n }\n\n const progressScenario = getProgressTrackingScenario(site.scenarios);\n const progressYears = progressScenario?.actualHistoricalYears ?? [];\n\n return progressYears.map((year) => {\n const yearIndex = [...defaultSlice.historicalYears, ...defaultSlice.forecastYears].indexOf(\n year\n );\n const progressIndex = [\n ...progressSlice.historicalYears,\n ...progressSlice.forecastYears,\n ].indexOf(year);\n\n return {\n year,\n unit: defaultSlice.unit,\n totalExpected:\n [\n ...(defaultSlice.totalValues?.historicalValues ?? []),\n ...(defaultSlice.totalValues?.forecastValues ?? []),\n ][yearIndex] || 0,\n expected: defaultSlice.categoryValues.map((cv) => ({\n id: cv.category.originalId!,\n color: cv.color || '',\n label: cv.category.label,\n value: [...cv.historicalValues, ...cv.forecastValues][yearIndex] || 0,\n })),\n totalObserved:\n [\n ...(progressSlice.totalValues?.historicalValues ?? []),\n ...(progressSlice.totalValues?.forecastValues ?? []),\n ][yearIndex] || 0,\n observed: defaultSlice.categoryValues.map((cv) => {\n const matchingProgressCategory = progressSlice.categoryValues.find(\n ({ category }) => category.originalId === cv.category.originalId\n );\n\n return {\n id: cv.category.originalId!,\n color: cv.color || '',\n label: cv.category.label,\n value: matchingProgressCategory\n ? [\n ...matchingProgressCategory.historicalValues,\n ...matchingProgressCategory.forecastValues,\n ][progressIndex] || 0\n : 0,\n };\n }),\n };\n });\n }, [metric, site.scenarios, activeGoal, defaultColor]);\n}\n","import styled from 'styled-components';\nexport const StyledCard = styled.div`\n border-radius: ${props => props.theme.cardBorderRadius};\n background-color: ${props => props.theme.cardBackground.secondary};\n padding: ${props => props.theme.spaces.s100};\n flex: 1;\n`;","import styled from 'styled-components';\nexport const StyledIndicator = styled.span`\n width: 16px;\n height: 16px;\n border-radius: 8px;\n`;\nexport const StyledStatusBadge = styled.div<{\n $backgroundColor: string;\n $color: string;\n $iconColor?: string;\n}>`\n margin: 0;\n display: inline-flex;\n gap: ${({\n theme\n}) => theme.spaces.s050};\n color: ${props => props.$color};\n background-color: ${props => props.$backgroundColor};\n padding: ${({\n theme\n}) => `${theme.spaces.s025} ${theme.spaces.s050}`};\n border-radius: ${({\n theme\n}) => theme.badgeBorderRadius};\n align-items: center;\n font-size: ${({\n theme\n}) => theme.fontSizeSm};\n margin-top: ${({\n theme\n}) => theme.spaces.s050};\n\n > ${StyledIndicator} {\n background-color: ${props => props.$iconColor};\n }\n`;","import type { Theme } from '@kausal/themes/types';\nimport type { TFunction } from 'i18next';\n\ntype Status = {\n key: 'ON_TRACK' | 'OFF_TRACK' | 'DEVIATING';\n label: string;\n subLabel?: string;\n color: string;\n iconColor: string;\n backgroundColor: string;\n};\n\nexport function getDeltaPercentage(expected: number | null, observed: number | null) {\n if (observed == null || expected == null || expected === 0) {\n return 0;\n }\n\n const delta = ((observed - expected) / expected) * 100;\n\n return Math.round(delta);\n}\n\nexport const STATUS_KEYS: Record = {\n ON_TRACK: 'ON_TRACK',\n OFF_TRACK: 'OFF_TRACK',\n DEVIATING: 'DEVIATING',\n};\n\nexport function getStatus(deltaPercentage: number, t: TFunction, theme: Theme): Status {\n if (deltaPercentage === 0 || deltaPercentage < 0) {\n return {\n key: STATUS_KEYS.ON_TRACK,\n label: t('on-track'),\n color: theme.graphColors.green070,\n iconColor: theme.graphColors.green050,\n backgroundColor: theme.graphColors.green010,\n subLabel: t('lower-than-expected', { percentage: Math.abs(deltaPercentage) }),\n };\n }\n\n if (deltaPercentage > 10) {\n return {\n key: STATUS_KEYS.OFF_TRACK,\n label: t('off-track'),\n color: theme.graphColors.red070,\n iconColor: theme.graphColors.red050,\n backgroundColor: theme.graphColors.red010,\n subLabel: t('higher-than-expected', { percentage: deltaPercentage }),\n };\n }\n\n return {\n key: STATUS_KEYS.DEVIATING,\n label: t('deviating'),\n color: theme.graphColors.yellow070,\n iconColor: theme.graphColors.yellow050,\n backgroundColor: theme.graphColors.yellow010,\n subLabel: t('higher-than-expected', { percentage: deltaPercentage }),\n };\n}\n","import { useTranslation } from 'react-i18next';\nimport styled, { useTheme } from 'styled-components';\nimport { StyledCard } from './StyledCard';\nimport { StyledStatusBadge } from './StyledStatusBadge';\nimport { getStatus } from './utils';\ntype EmissionsCardProps = {\n title: string;\n value: number;\n unit: string;\n deltaPercentage?: number;\n};\nconst StyledEmissionsCardValue = styled.p`\n font-size: ${({\n theme\n}) => theme.fontSizeLg};\n margin: 0;\n line-height: 1;\n`;\nconst StyledEmissionsCardUnit = styled.span`\n font-size: ${({\n theme\n}) => theme.fontSizeSm};\n`;\nconst StyledEmissionsCardTitle = styled.h5`\n font-size: ${({\n theme\n}) => theme.fontSizeSm};\n color: ${({\n theme\n}) => theme.textColor.secondary};\n`;\nexport function EmissionsCard({\n title,\n value,\n unit,\n deltaPercentage\n}: EmissionsCardProps) {\n const theme = useTheme();\n const {\n t\n } = useTranslation();\n const status = deltaPercentage ? getStatus(deltaPercentage, t, theme) : undefined;\n return \n {title}\n \n {value.toLocaleString(undefined, {\n maximumFractionDigits: 0\n })}{' '}\n {unit}\n \n {status?.subLabel && \n {status.subLabel}\n }\n ;\n}","import { gql } from '@apollo/client';\nimport { DimensionalMetric } from 'data/metric';\n\nconst visualizationEntryFragment = gql`\n fragment VisualizationEntryFragment on VisualizationEntry {\n id\n label\n ... on VisualizationNodeOutput {\n label\n nodeId\n scenarios\n dimensions {\n id\n categories\n flatten\n }\n desiredOutcome\n metricDim {\n ...DimensionalMetric\n }\n }\n }\n\n ${DimensionalMetric.fragment}\n`;\n\nexport default visualizationEntryFragment;\n","import { gql } from '@apollo/client';\nimport visualizationEntryFragment from './visualizationEntryFragment';\nimport { DimensionalMetric } from '@/data/metric';\n\nexport const GET_NODE_VISUALIZATIONS = gql`\n ${visualizationEntryFragment}\n ${DimensionalMetric.fragment}\n\n query GetNodeVisualizations($nodeId: ID!) {\n node(id: $nodeId) {\n id\n metricDim(withScenarios: [\"default\", \"progress_tracking\"]) {\n ...DimensionalMetric\n }\n visualizations {\n label\n ... on VisualizationGroup {\n children {\n ...VisualizationEntryFragment\n }\n }\n }\n }\n }\n`;\n","import { useMemo } from 'react';\nimport { DesiredOutcome, type DimensionalNodeMetricFragment } from '@/common/__generated__/graphql';\nimport { DimensionalMetric } from 'data/metric';\nimport { Chart } from '@/components/charts/Chart';\nimport styled, { useTheme } from 'styled-components';\nimport { useReactiveVar } from '@apollo/client';\nimport { activeGoalVar } from 'common/cache';\nimport { getDefaultSliceConfig } from '../DimensionalNodePlot';\nimport { useSite } from '@/context/site';\nimport { getProgressTrackingScenario } from '@/utils/progress-tracking';\nimport type { EChartsCoreOption } from 'echarts';\nimport type { Theme } from '@kausal/themes/types';\nimport { useTranslation } from 'next-i18next';\nconst X_SYMBOL = 'path://M0.979266 20.7782C-0.192306 21.9497 -0.192307 23.8492 0.979266 25.0208C2.15084 26.1924 4.05033 26.1924 5.22191 ' + '25.0208L13.0001 17.2426L20.7783 25.0208C21.9498 26.1924 23.8493 26.1924 25.0209 25.0208C26.1925 23.8492 26.1925 21.9497 ' + '25.0209 20.7782L17.2427 13L25.0209 5.22181C26.1925 4.05024 26.1925 2.15075 25.0209 0.979174C23.8493 -0.192399 21.9498 ' + '-0.192399 20.7783 0.979174L13.0001 8.75735L5.22191 0.979175C4.05033 -0.192398 2.15084 -0.192398 0.979266 0.979175C-0.192307 ' + '2.15075 -0.192307 4.05024 0.979266 5.22182L8.75744 13L0.979266 20.7782Z';\nconst COMMON_AREA_CONFIG = {\n stack: 'expected',\n type: 'line',\n silent: true,\n tooltip: {\n show: false\n },\n lineStyle: {\n opacity: 0\n },\n symbol: 'none'\n};\nconst getNegativeAreaStyle = (theme: Theme) => ({\n opacity: 0.2,\n color: theme.graphColors.red030\n});\nconst getPositiveAreaStyle = (theme: Theme) => ({\n opacity: 0.3,\n color: theme.graphColors.green010\n});\nconst StyledChartTitle = styled.h4`\n font-size: ${({\n theme\n}) => theme.fontSizeBase};\n font-weight: ${({\n theme\n}) => theme.fontWeightBase};\n margin-bottom: ${({\n theme\n}) => theme.spaces.s050};\n color: ${({\n theme\n}) => theme.textColor.secondary};\n`;\ntype Props = {\n metric: DimensionalNodeMetricFragment['metricDim'];\n desiredOutcome: DesiredOutcome;\n title?: string;\n};\n\n/**\n * Users may have skipped years in their progress data. In order to colour the area\n * between the expected and observed lines, we need to interpolate the progress data\n * to fill in any gaps and follow the interpolated line.\n *\n * This might be doable will less loops and mutations, but hopefully this is easier to follow.\n */\nfunction interpolateProgressValues(progressData: (number | null)[]): (number | null)[] {\n const result = [...progressData];\n let startIndex = 0;\n while (startIndex < result.length) {\n // Find next gap of null values\n while (startIndex < result.length && result[startIndex] !== null) {\n startIndex++;\n }\n\n // Find end of gap\n let endIndex = startIndex;\n while (endIndex < result.length && result[endIndex] === null) {\n endIndex++;\n }\n\n // If we found a gap and have values on both sides\n if (startIndex > 0 && endIndex < result.length) {\n const startValue = (result[startIndex - 1] as number);\n const endValue = (result[endIndex] as number);\n const gap = endIndex - startIndex;\n\n // Calculate step size for interpolation\n const step = (endValue - startValue) / (gap + 1);\n\n // Fill in interpolated values\n for (let i = 0; i < gap; i++) {\n result[startIndex + i] = startValue + step * (i + 1);\n }\n }\n startIndex = endIndex;\n }\n return result;\n}\nexport function ProgressDriversVisualization({\n metric,\n desiredOutcome,\n title\n}: Props) {\n const site = useSite();\n const theme = useTheme();\n const {\n t\n } = useTranslation();\n const activeGoal = useReactiveVar(activeGoalVar);\n const chartData = useMemo(() => {\n const negativeAreaStyle = getNegativeAreaStyle(theme);\n const positiveAreaStyle = getPositiveAreaStyle(theme);\n if (!metric) {\n return undefined;\n }\n const dimensionalMetric = new DimensionalMetric(metric, DimensionalMetric.ALL_SCENARIOS);\n const defaultConfig = getDefaultSliceConfig(dimensionalMetric, activeGoal);\n const slicedDim = dimensionalMetric.dimensions.find(dim => dim.id === defaultConfig.dimensionId);\n if (!slicedDim) {\n return undefined;\n }\n const slice = dimensionalMetric.sliceBy(slicedDim.id, false, defaultConfig.categories);\n\n // Get years and values for both scenarios\n const defaultScenario = slice.categoryValues.find(cv => cv.category.originalId === 'default');\n const progressScenario = slice.categoryValues.find(cv => cv.category.originalId === 'progress_tracking');\n if (!defaultScenario || !progressScenario) return undefined;\n type Acc = {\n years: number[];\n defaultData: number[];\n progressData: number[];\n };\n const progressYears = getProgressTrackingScenario(site.scenarios)?.actualHistoricalYears ?? [];\n const [firstYear, lastYear] = progressYears.sort().filter((_, i) => i === 0 || i === progressYears.length - 1);\n const allYears = [...slice.historicalYears, ...slice.forecastYears];\n const allDefaultData = [...defaultScenario.historicalValues, ...defaultScenario.forecastValues];\n const allProgressData = [...progressScenario.historicalValues, ...progressScenario.forecastValues];\n const combinedData = allYears.map((year, i) => {\n /**\n * The first year (baseline) is the same for both scenarios, always\n * render the default value as the starting point for progress tracking.\n * We don't render a marker for this point.\n */\n if (year === firstYear) {\n return {\n year,\n defaultValue: allDefaultData[i] ?? null,\n progressValue: allDefaultData[i] ?? null\n };\n }\n return {\n year,\n defaultValue: allDefaultData[i] ?? null,\n progressValue: year !== site.minYear && progressYears.includes(year) ? allProgressData[i] ?? null : null\n };\n }).filter(({\n year\n }) => year >= firstYear && year <= lastYear);\n\n /**\n * Convert the combined data back into separate arrays of years, default values, and progress values\n */\n const {\n years,\n defaultData,\n progressData\n } = combinedData.reduce((acc: Acc, data) => {\n return {\n years: [...acc.years, data.year],\n defaultData: [...acc.defaultData, data.defaultValue],\n progressData: [...acc.progressData, data.progressValue]\n };\n }, {\n years: [],\n defaultData: [],\n progressData: []\n });\n const interpolatedProgressData = interpolateProgressValues(progressData);\n const areaData = defaultData.map((value, i) => {\n const progressValue = interpolatedProgressData[i];\n if (value == null || progressValue == null) {\n return null;\n }\n if (progressValue > value) {\n return {\n above: progressValue - value,\n below: 0\n };\n } else if (progressValue < value) {\n return {\n above: 0,\n below: progressValue - value\n };\n } else {\n return {\n above: 0,\n below: 0\n };\n }\n });\n const option: EChartsCoreOption = {\n tooltip: {\n trigger: 'axis',\n formatter: params => {\n const year = params[0].axisValue;\n const noDataColor = theme.graphColors.red030 || '#ef9a9a';\n const noDataText = t('no-data-reported');\n const items = params.map(param => {\n if (param.value == null || isNaN(param.value)) {\n return `${param.marker} ${param.seriesName}:\n ${noDataText}`;\n }\n const value = param.value.toLocaleString(undefined, {\n maximumFractionDigits: 0\n });\n return `${param.marker} ${param.seriesName}: ${value} ${metric.unit.short}`;\n });\n return `${year}
${items.join('
')}`;\n }\n },\n legend: {\n bottom: 0,\n left: 'center',\n selectedMode: false\n },\n grid: {\n left: '2%',\n right: '5%',\n top: '5%',\n bottom: '15%',\n containLabel: true\n },\n xAxis: {\n type: 'category',\n data: years,\n boundaryGap: true,\n axisTick: {\n show: false\n }\n },\n yAxis: {\n type: 'value',\n axisLabel: {\n formatter: metric.unit.short.length > 2 ? '{value}' : `{value} ${metric.unit.short}`\n }\n },\n series: [{\n stack: COMMON_AREA_CONFIG.stack,\n name: 'Expected',\n type: 'line',\n symbol: 'circle',\n symbolSize: 8,\n data: defaultData,\n lineStyle: {\n width: 2,\n color: theme.graphColors.blue070\n },\n itemStyle: {\n color: theme.graphColors.blue070\n }\n }, {\n // Fill the area above the expected line until the observed line\n data: areaData.map(area => area?.above ?? null),\n areaStyle: desiredOutcome === DesiredOutcome.Increasing ? positiveAreaStyle : negativeAreaStyle,\n ...COMMON_AREA_CONFIG\n }, {\n // Fill the area below the expected line until the observed line\n data: areaData.map(area => area?.below ?? null),\n stackStrategy: 'positive',\n areaStyle: desiredOutcome === DesiredOutcome.Decreasing ? positiveAreaStyle : negativeAreaStyle,\n ...COMMON_AREA_CONFIG\n }, {\n name: 'Observed',\n type: 'line',\n symbol: X_SYMBOL,\n symbolSize: 10,\n data: progressData,\n connectNulls: true,\n lineStyle: {\n type: 'dashed',\n width: 1,\n color: theme.graphColors.blue030\n },\n itemStyle: {\n color: theme.graphColors.blue050\n }\n }]\n };\n return option;\n }, [metric, theme, activeGoal, site.minYear, site.scenarios, desiredOutcome]);\n if (!chartData) {\n return null;\n }\n return <>\n {title}\n \n ;\n}","import { Fade, Spinner } from 'reactstrap';\nimport GraphQLError from '@/components/common/GraphQLError';\nimport { GET_NODE_VISUALIZATIONS } from '@/queries/getNodeVisualizations';\nimport styled from 'styled-components';\nimport { DesiredOutcome, type GetNodeVisualizationsQuery } from '@/common/__generated__/graphql';\nimport { StyledCard } from './StyledCard';\nimport { useQuery } from '@apollo/client';\nimport { useSite } from '@/context/site';\nimport { getProgressTrackingScenario } from '@/utils/progress-tracking';\nimport { ProgressDriversVisualization } from './ProgressDriversVisualization';\nimport { useTranslation } from '@/common/i18n';\nconst VisualizationContainer = styled.div`\n display: grid;\n gap: ${({\n theme\n}) => theme.spaces.s100};\n`;\nconst StyledDriversTitle = styled.h2`\n font-size: ${({\n theme\n}) => theme.fontSizeMd};\n margin-top: ${({\n theme\n}) => theme.spaces.s100};\n margin-bottom: 0;\n color: ${({\n theme\n}) => theme.textColor.primary};\n`;\nconst StyledGroupTitle = styled.h3`\n font-size: ${({\n theme\n}) => theme.fontSizeBase};\n margin-bottom: ${({\n theme\n}) => theme.spaces.s100};\n color: ${({\n theme\n}) => theme.textColor.primary};\n`;\nconst StyledSpinnerContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: ${({\n theme\n}) => theme.spaces.s400};\n`;\nconst StyledChartContainer = styled.div`\n margin-bottom: ${({\n theme\n}) => theme.spaces.s200};\n`;\ninterface Props {\n nodeId: string;\n}\nexport function ProgressDriversWrapper({\n nodeId\n}: Props) {\n const site = useSite();\n const {\n t\n } = useTranslation();\n const progressTrackingScenario = getProgressTrackingScenario(site.scenarios);\n const observedYears = progressTrackingScenario?.actualHistoricalYears ?? [];\n const {\n loading,\n error,\n data\n } = useQuery(GET_NODE_VISUALIZATIONS, {\n variables: {\n nodeId,\n scenarios: ['default', 'progress_tracking']\n }\n });\n if (loading) {\n return \n \n ;\n }\n if (error) {\n return ;\n }\n const metricDim = data?.node?.metricDim;\n const visualizations = data?.node?.visualizations;\n if (!metricDim && !visualizations?.length || !observedYears.length) {\n return null;\n }\n return \n \n {!!metricDim && \n \n }\n\n {!!visualizations && <>\n {t('emission-drivers')}\n\n {visualizations.map((viz, i) => \n {viz.label && {viz.label}}\n {viz.__typename === 'VisualizationGroup' && viz.children?.map((child, ii) => child.__typename === 'VisualizationNodeOutput' && child.metricDim && \n \n )}\n )}\n }\n \n ;\n}","import { useTranslation } from '@/common/i18n';\nimport type { Theme } from '@kausal/themes/types';\nimport type { TFunction } from 'i18next';\nimport React, { useState } from 'react';\nimport { Modal, ModalBody, ModalHeader, Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Fade } from 'reactstrap';\nimport styled, { useTheme, createGlobalStyle } from 'styled-components';\nimport { Chart } from '@/components/charts/Chart';\nimport type { EChartsOption } from 'echarts';\nimport { useSite } from '@/context/site';\nimport type { TopLevelFormatterParams } from 'echarts/types/dist/shared';\nimport Icon, { useSVGIconPath } from '@/components/common/icon';\nimport { useProgressData, type MetricDim, type ProgressData } from './useProgressData';\nimport { StyledCard } from './StyledCard';\nimport { StyledIndicator, StyledStatusBadge } from './StyledStatusBadge';\nimport { STATUS_KEYS, getDeltaPercentage, getStatus } from './utils';\nimport { EmissionsCard } from './EmissionsCard';\nimport { ProgressDriversWrapper } from './ProgressDriversWrapper';\ntype DrillDownState = {\n categoryId: string;\n label: string;\n} | null;\nconst StyledContainer = styled.div<{\n $size?: string;\n $muted?: boolean;\n}>`\n padding: 0;\n color: ${({\n theme\n}) => theme.textColor.secondary};\n`;\nconst StyledViewDetails = styled.button`\n color: ${({\n theme\n}) => theme.graphColors.blue050};\n font-size: ${({\n theme\n}) => theme.fontSizeSm};\n padding: 0;\n background: transparent;\n margin: 0;\n outline: none;\n border: none;\n text-decoration: underline;\n margin-top: ${({\n theme\n}) => theme.spaces.s025};\n\n &:hover {\n color: ${({\n theme\n}) => theme.graphColors.blue070};\n }\n`;\nconst StyledStatusBadgeButton = styled(StyledStatusBadge).attrs({\n as: 'button'\n})`\n border: none;\n outline: none;\n cursor: pointer;\n padding: ${({\n theme\n}) => theme.spaces.s050};\n margin-top: ${({\n theme\n}) => theme.spaces.s025};\n`;\nconst StyledSpan = styled.span`\n line-height: 100%;\n`;\nconst StyledTitle = styled.p`\n font-size: 0.75rem;\n line-height: 1.2;\n font-weight: 700;\n margin: 0;\n margin-bottom: ${({\n theme\n}) => theme.spaces.s025};\n`;\nconst StyledSubtitle = styled.p`\n font-size: ${({\n theme\n}) => theme.fontSizeSm};\n line-height: 1.2;\n color: ${({\n theme\n}) => theme.textColor.tertiary};\n margin: 0;\n margin-bottom: ${({\n theme\n}) => theme.spaces.s025};\n`;\nconst StyledBackButton = styled.button`\n color: ${({\n theme\n}) => theme.graphColors.blue050};\n font-size: ${({\n theme\n}) => theme.fontSizeBase};\n display: flex;\n align-items: center;\n gap: ${({\n theme\n}) => theme.spaces.s025};\n background: none;\n border: none;\n padding: 0px;\n cursor: pointer;\n margin-bottom: ${({\n theme\n}) => theme.spaces.s100};\n transition:\n color 0.2s,\n border-bottom-color 0.2s;\n border-bottom: 2px solid transparent;\n\n &:hover {\n color: ${({\n theme\n}) => theme.graphColors.blue070};\n border-bottom-color: ${({\n theme\n}) => theme.graphColors.blue050};\n }\n`;\nconst StyledChart = styled(Chart)`\n canvas {\n cursor: pointer;\n }\n`;\nexport type ProgressIndicatorProps = {\n color?: string;\n metric: MetricDim;\n isModalOpen: boolean;\n onModalOpenChange: (isOpen: boolean) => void;\n selectedYear: number;\n onSelectedYearChange: (year: number) => void;\n showViewDetails?: boolean;\n};\nconst StyledChartWrapper = styled.div`\n height: 400px;\n`;\nconst StyledFlexContainer = styled.div`\n display: flex;\n gap: ${({\n theme\n}) => theme.spaces.s050};\n margin-bottom: ${({\n theme\n}) => theme.spaces.s100};\n`;\nconst StyledYearSelector = styled.div`\n margin-bottom: ${({\n theme\n}) => theme.spaces.s100};\n`;\n\n// Style modal as a drawer to the right\nconst StyledModal = styled(Modal)`\n height: 100%;\n margin-top: 0;\n margin-right: 0;\n margin-bottom: 0;\n\n .modal-content {\n border-radius: ${({\n theme\n}) => theme.cardBorderRadius};\n border-top-right-radius: 0;\n height: 100%;\n border-bottom-right-radius: 0;\n }\n\n .modal-body {\n flex: 1;\n overflow-y: auto;\n }\n`;\n\n// Slide the modal in from the right\nconst GlobalModalStyle = createGlobalStyle`\n .progress-tracking-modal {\n .modal.fade .modal-dialog {\n transform: translate(50px, 0);\n }\n \n .modal.show .modal-dialog {\n transform: none;\n }\n }\n`;\nfunction getStripeGradient(color?: string) {\n return `background-image: linear-gradient(-45deg, ${color} 25%,\n rgba(255,255,255,0.4) 25%, rgba(255,255,255,0.4) 50%,\n ${color} 50%, ${color} 75%,\n rgba(255,255,255,0.4) 75%);background-size: 8px 8px;`;\n}\nconst getTooltipRow = (style: string, seriesName: string, value: string | null, color: string, unit: string) => {\n const styles = ['display: inline-block', 'margin-right: 5px', 'width: 10px', 'height:10px', `border: 1px solid ${color}`, style];\n return `${seriesName}: ${value ?? ''} ${unit}`;\n};\nfunction getChartConfig(measuredEmissionsData: ProgressData, t: TFunction, theme: Theme, iconPath: string): EChartsOption {\n return {\n title: {\n show: false\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'shadow'\n },\n formatter: (params: TopLevelFormatterParams) => {\n const firstParam = params[0];\n const label = firstParam.axisValue.split('\\n')[0];\n if (!Array.isArray(params)) {\n return '';\n }\n const colorBlocks = params.map(param => {\n const style = param.seriesName === t('observed-emissions') ? getStripeGradient((param.color as string)) : `background-color: ${param.color};`;\n const roundedValue = typeof param.value === 'number' ? param.value.toLocaleString(undefined, {\n maximumFractionDigits: 0\n }) : null;\n return getTooltipRow(style, param.seriesName ?? '', roundedValue, (param.color as string) ?? '', measuredEmissionsData.unit);\n }).join('
');\n return `${label}
${colorBlocks}`;\n }\n },\n legend: {\n data: [t('expected-emissions'), t('observed-emissions')],\n top: '0',\n itemStyle: {\n color: '#bbb'\n }\n },\n grid: {\n left: '3%',\n right: '4%',\n bottom: '3%',\n top: '10%',\n containLabel: true,\n tooltip: {\n trigger: 'axis'\n }\n },\n xAxis: {\n type: 'value',\n name: measuredEmissionsData.unit\n },\n yAxis: [{\n type: 'category',\n data: measuredEmissionsData.observed.map((observed, i) => {\n const expected = measuredEmissionsData.expected.find(expected => expected.id === observed.id);\n if (!expected) {\n return observed.label;\n }\n const deltaPercentage = getDeltaPercentage(expected.value, observed.value);\n const status = getStatus(deltaPercentage, t, theme);\n const statusLabel = `{${status.key}|${status.label}}`;\n return `${observed.label}\\n${statusLabel}`;\n }),\n axisLabel: {\n formatter: '{value}',\n lineHeight: 18,\n rich: {\n [STATUS_KEYS.ON_TRACK]: {\n fontSize: 10,\n backgroundColor: theme.graphColors.green010,\n borderRadius: 4,\n padding: [2, 6],\n color: theme.graphColors.green070\n },\n [STATUS_KEYS.DEVIATING]: {\n fontSize: 10,\n backgroundColor: theme.graphColors.yellow010,\n borderRadius: 4,\n padding: [2, 6],\n color: theme.graphColors.yellow070\n },\n [STATUS_KEYS.OFF_TRACK]: {\n fontSize: 10,\n backgroundColor: theme.graphColors.red010,\n borderRadius: 4,\n padding: [2, 6],\n color: theme.graphColors.red070\n }\n }\n },\n triggerEvent: true\n }, {\n type: 'category',\n data: measuredEmissionsData.expected.map(() => '{chevron|}'),\n axisLine: {\n show: false\n },\n axisTick: {\n show: false\n },\n triggerEvent: true,\n axisLabel: {\n fontSize: 16,\n rich: {\n chevron: {\n backgroundColor: {\n image: iconPath\n },\n opacity: 0.5,\n width: 24,\n height: 24,\n padding: 0\n }\n }\n }\n }],\n series: [{\n name: t('expected-emissions'),\n type: 'bar',\n data: measuredEmissionsData.expected.map(f => f.value),\n itemStyle: {\n color: params => {\n const expected = measuredEmissionsData.expected[params.dataIndex];\n return expected.color;\n }\n }\n }, {\n name: t('observed-emissions'),\n type: 'bar',\n data: measuredEmissionsData.observed.map(m => m.value),\n itemStyle: {\n color: params => {\n const observed = measuredEmissionsData.observed[params.dataIndex];\n return observed.color;\n },\n decal: {\n rotation: -Math.PI / 4,\n dashArrayX: [1, 0],\n dashArrayY: 2,\n color: 'rgba(255, 255, 255, 0.4)'\n }\n }\n }]\n };\n}\nexport const ProgressIndicator = ({\n color,\n metric,\n isModalOpen,\n onModalOpenChange,\n selectedYear,\n onSelectedYearChange,\n showViewDetails = true\n}: ProgressIndicatorProps) => {\n const {\n t\n } = useTranslation();\n const theme = useTheme();\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const [drillDownState, setDrillDownState] = useState(null);\n const site = useSite();\n const drillDownIconPath = useSVGIconPath('angleRight');\n const progressData = useProgressData(metric, color);\n const observedYears = progressData.sort((a, b) => b.year - a.year).filter(data => data.observed.length > 0 && data.year !== site.minYear);\n const latestProgressData = observedYears[0];\n const selectedEmissions = observedYears.find(d => d.year === selectedYear);\n const latestDeltaPercentage = getDeltaPercentage(latestProgressData.totalExpected, latestProgressData.totalObserved);\n const totalExpected = selectedEmissions?.totalExpected ?? null;\n const totalObserved = selectedEmissions?.totalObserved ?? null;\n const status = getStatus(latestDeltaPercentage, t, theme);\n function handleOpenModal() {\n onModalOpenChange(true);\n }\n function handleCloseModal() {\n onModalOpenChange(false);\n\n // Wait for the modal to close before resetting anything that changes the layout\n setTimeout(() => {\n onSelectedYearChange(latestProgressData.year);\n setDrillDownState(null);\n setDropdownOpen(false);\n }, 400);\n }\n function toggleDropdown() {\n setDropdownOpen(isOpen => !isOpen);\n }\n function handleYearSelect(year: number) {\n onSelectedYearChange(year);\n }\n function handleChartClick(dataIndex: number) {\n const clickedCategory = selectedEmissions?.expected[dataIndex];\n if (clickedCategory) {\n setDrillDownState({\n categoryId: clickedCategory.id,\n label: clickedCategory.label\n });\n }\n }\n const chartConfig = selectedEmissions ? getChartConfig(selectedEmissions, t, theme, drillDownIconPath) : undefined;\n return <>\n \n \n \n {t('observed-emissions')} ({latestProgressData.year})\n \n\n {latestDeltaPercentage !== 0 && \n {t(latestDeltaPercentage > 0 ? 'higher-than-expected' : 'lower-than-expected', {\n percentage: Math.abs(latestDeltaPercentage)\n })}\n }\n\n
\n \n \n {status.label}\n \n
\n\n {showViewDetails && {t('view-details')}}\n
\n\n \n onModalOpenChange(false)} data-sentry-element=\"ModalHeader\" data-sentry-source-file=\"ProgressIndicator.tsx\">\n {drillDownState ? drillDownState.label : `${t('observed-emissions')} (${selectedEmissions?.year})`}\n \n \n \n
\n {drillDownState ?
\n setDrillDownState(null)}>\n \n Back to emissions by sector\n \n\n \n
: <>\n {observedYears.length > 1 && \n \n {selectedYear}\n \n {observedYears.map(({\n year\n }) => handleYearSelect(year)}>\n {year}\n )}\n \n \n }\n {!!selectedEmissions && \n {totalExpected != null && }\n {totalObserved != null && }\n }\n
{t('emissions-by-sector', {\n year: selectedEmissions?.year\n })}
\n \n \n {chartConfig && }\n \n \n }\n
\n
\n
\n
\n ;\n};","import { useMemo, useState } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport { Nav, NavItem, NavLink, TabContent } from 'reactstrap';\nimport Icon from 'components/common/icon';\nimport styled from 'styled-components';\nimport Loader from 'components/common/Loader';\nimport { NodeLink } from 'common/links';\nimport { getMetricValue, beautifyValue, getMetricChange } from 'common/preprocess';\nimport HighlightValue from 'components/general/HighlightValue';\nimport DimensionalBarGraph from 'components/general/DimensionalBarGraph';\nimport DataTable from './DataTable';\nimport OutcomeNodeDetails from './OutcomeNodeDetails';\nimport type { OutcomeNodeFieldsFragment } from 'common/__generated__/graphql';\nimport ScenarioBadge from 'components/common/ScenarioBadge';\nimport { useInstance } from 'common/instance';\nimport DimensionalNodePlot from './DimensionalNodePlot';\nimport { ProgressIndicator } from './progress-tracking/ProgressIndicator';\nimport { getLatestProgressYear, hasProgressTracking } from '@/utils/progress-tracking';\nimport { useSite } from '@/context/site';\nconst DisplayTab = styled(NavItem)`\n font-size: 0.9rem;\n\n .icon {\n width: 1.2rem !important;\n height: 1.2rem !important;\n margin-right: 0.2rem;\n vertical-align: middle;\n }\n`;\nconst ContentWrapper = styled.div`\n min-height: 300px;\n max-height: 1000px;\n overflow-y: auto;\n padding: 1rem;\n background-color: white;\n border-radius: 0;\n border: 1px solid ${props => props.theme.graphColors.grey010};\n border-top: 0;\n &:focus {\n outline: 2px solid ${props => props.theme.graphColors.grey010};\n }\n .x2sstick text,\n .xtick text {\n text-anchor: end !important;\n }\n`;\nconst CardContent = styled.div`\n //background-color: white;\n //padding: 0.5rem;\n\n .nav-pills {\n //margin-bottom: 0.5rem;\n }\n\n .nav-pills .nav-link {\n padding: 0.2rem 0.5rem;\n margin-right: 0.5rem;\n }\n\n .nav-pills .nav-link.active {\n background-color: ${props => props.theme.graphColors.grey050};\n }\n`;\nconst TabNavigation = styled(Nav)`\n flex-wrap: nowrap;\n width: 100%;\n border-bottom: 0;\n`;\nconst CardSetHeader = styled.div`\n display: flex;\n justify-content: space-between;\n flex-direction: column;\n margin-bottom: 0.5rem;\n\n a {\n color: ${props => props.theme.themeColors.dark};\n }\n\n @media (min-width: ${props => props.theme.breakpointMd}) {\n flex-direction: row;\n }\n`;\nconst CardSetDescription = styled.div`\n margin-bottom: ${({\n theme\n}) => theme.spaces.s100};\n h4 {\n margin-bottom: ${({\n theme\n}) => theme.spaces.s050};\n }\n`;\nconst CardSetDescriptionDetails = styled.div`\n font-size: 0.9rem;\n line-height: 1.2;\n color: ${props => props.theme.graphColors.grey050};\n`;\nconst CardSetSummary = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n margin-bottom: ${props => props.theme.spaces.s100};\n .figure {\n margin-left: 1rem;\n }\n`;\ntype OutcomeNodeContentProps = {\n isRootNode: boolean;\n node: OutcomeNodeFieldsFragment;\n subNodes: OutcomeNodeFieldsFragment[];\n color?: string | null;\n startYear: number;\n endYear: number;\n activeScenario: string;\n refetching: boolean;\n};\nconst OutcomeNodeContent = ({\n isRootNode,\n node,\n subNodes,\n color,\n startYear,\n endYear,\n activeScenario,\n refetching\n}: OutcomeNodeContentProps) => {\n const {\n t\n } = useTranslation();\n const [progressModalOpen, setProgressModalOpen] = useState(false);\n const instance = useInstance();\n const site = useSite();\n const [selectedProgressYear, setSelectedProgressYear] = useState(() => getLatestProgressYear(site));\n const showProgressTrackingStatus = node.metricDim && hasProgressTracking(node.metricDim, site.scenarios, site.minYear);\n const [activeTabId, setActiveTabId] = useState('graph');\n const showDistribution = instance.id === 'zuerich' && subNodes.length > 1;\n const nodesTotal = getMetricValue(node, endYear);\n const nodesBase = getMetricValue(node, startYear);\n const lastMeasuredYear = node?.metric?.historicalValues[node.metric.historicalValues.length - 1]?.year;\n const firstForecastYear = node?.metric?.forecastValues[0]?.year;\n const isForecast = endYear > lastMeasuredYear;\n const outcomeChange = getMetricChange(nodesBase, nodesTotal);\n const unit = node.metric?.unit?.htmlLong || node.metric?.unit?.htmlShort;\n const nodeName = node.shortName || node.name;\n const showNodeLinks = !instance.features?.hideNodeDetails;\n const maximumFractionDigits = instance.features?.maximumFractionDigits ?? undefined;\n function onClickMeasuredEmissions(year: number) {\n setSelectedProgressYear(year);\n setProgressModalOpen(true);\n }\n const outcomeGraph = useMemo(() => node.metricDim ? :
\n {t('time-series')}, {t('coming-soon')}\n
, [node, color, startYear, endYear]);\n const singleYearGraph = useMemo(() =>
\n \n
, [node, endYear, color]);\n return
\n \n
\n \n

\n {showNodeLinks ? \n {nodeName}\n : nodeName}\n

\n \n {startYear <= lastMeasuredYear && \n {t('table-historical')}\n }{' '}\n {typeof firstForecastYear === 'number' && firstForecastYear < endYear && \n {t('table-scenario-forecast')}\n {activeScenario && ` (${activeScenario})`}\n }\n \n
\n
\n \n {showProgressTrackingStatus && selectedProgressYear && node.metricDim && }\n {nodesTotal && }\n 0 ? '+' : ''}${outcomeChange}` : '-'} header={`${t('change-over-time')} ${startYear}–${endYear}`} unit=\"%\" data-sentry-element=\"HighlightValue\" data-sentry-source-file=\"OutcomeNodeContent.tsx\" />\n \n
\n \n \n {showDistribution && \n setActiveTabId('year')} active={activeTabId === 'year'} disabled={subNodes.length < 2} role=\"tab\" aria-selected={activeTabId === 'year'} aria-controls={`${node.id}-panel-year`} id={`${node.id}-tab-year`} tabIndex={0}>\n {t('distribution')}\n \n }\n \n setActiveTabId('graph')} active={activeTabId === 'graph'} role=\"tab\" aria-selected={activeTabId === 'graph'} aria-controls={`${node.id}-panel-graph`} id={`${node.id}-tab-graph`} tabIndex={0} data-sentry-element=\"NavLink\" data-sentry-source-file=\"OutcomeNodeContent.tsx\">\n {t('time-series')}\n \n \n \n setActiveTabId('table')} active={activeTabId === 'table'} role=\"tab\" aria-selected={activeTabId === 'table'} aria-controls={`${node.id}-panel-table`} id={`${node.id}-tab-table`} tabIndex={0} data-sentry-element=\"NavLink\" data-sentry-source-file=\"OutcomeNodeContent.tsx\">\n {t('table')}\n \n \n {showNodeLinks && \n setActiveTabId('info')} active={activeTabId === 'info'} role=\"tab\" aria-selected={activeTabId === 'info'} aria-controls={`${node.id}-panel-info`} id={`${node.id}-tab-info`} tabIndex={0}>\n {t('details')}\n \n }\n \n\n {refetching && }\n\n \n {activeTabId === 'year' && {singleYearGraph}}\n {activeTabId === 'graph' && {outcomeGraph}}\n {activeTabId === 'info' && \n \n }\n {activeTabId === 'table' && \n \n }\n \n \n
;\n};\nexport default OutcomeNodeContent;","import { CardBody } from 'reactstrap';\nimport styled from 'styled-components';\nconst CardWithState = styled.div`\n position: relative;\n border: 0;\n border-radius: 0;\n height: 170px;\n\n .card-body {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n padding: 0.5rem 0.5rem 0.5rem 1.5rem;\n }\n\n &.open,\n &.root {\n color: ${({\n theme\n}) => theme.textColor.tertiary};\n background-color: white;\n\n h2 {\n color: ${({\n theme\n}) => theme.textColor.tertiary};\n }\n }\n\n &.inactive,\n &.closed {\n color: ${({\n theme\n}) => theme.textColor.secondary};\n background-color: white;\n\n h2 {\n color: ${({\n theme\n}) => theme.textColor.secondary};\n }\n }\n\n &.open.hovered {\n color: ${({\n theme\n}) => theme.textColor.secondary};\n //border-color: ${props => props.color};\n\n h2 {\n color: ${({\n theme\n}) => theme.textColor.secondary};\n }\n\n &::after {\n content: '';\n position: absolute;\n width: 100%;\n height: 36px;\n background-color: white;\n bottom: -36px;\n left: 0;\n }\n }\n\n &.active.hovered:after {\n display: none;\n }\n\n &.active.open,\n &.root {\n position: relative;\n color: ${({\n theme\n}) => theme.textColor.secondary};\n background-color: ${({\n theme\n}) => theme.cardBackground.secondary};\n // border-radius: ${props => props.theme.cardBorderRadius} ${props => props.theme.cardBorderRadius} 0 0;\n height: 206px;\n padding-bottom: 36px;\n box-shadow: 3px 3px 12px rgba(33, 33, 33, 0.15);\n\n h2 {\n color: ${({\n theme\n}) => theme.textColor.secondary};\n }\n }\n`;\nconst DashCard = props => {\n const {\n children,\n state,\n hovered,\n active,\n color,\n refProp\n } = props;\n return \n {children}\n ;\n};\nexport default DashCard;","import { useRef, useEffect } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport DashCard from 'components/general/DashCard';\nimport styled from 'styled-components';\nimport { beautifyValue, getMetricChange, getMetricValue } from 'common/preprocess';\nimport type { OutcomeNodeFieldsFragment } from 'common/__generated__/graphql';\nimport Loader from 'components/common/Loader';\nimport { useFeatures } from '@/common/instance';\nconst StyledTab = styled.div`\n flex: 0 0 175px;\n margin: 0 0.25rem 0;\n cursor: pointer;\n\n &:first-child {\n margin-left: 0;\n }\n`;\nconst Header = styled.div`\n display: flex;\n justify-content: space-between;\n\n &.root h2 {\n font-size: 1.5rem;\n }\n`;\nconst Title = styled.div`\n // border-left: 6px solid ${props => props.color};\n // padding-left: 6px;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n`;\nconst Name = styled.h2`\n margin-bottom: 0;\n font-size: 1rem;\n`;\nconst Status = styled.div`\n margin-top: 0.5rem;\n white-space: nowrap;\n font-size: 1rem;\n font-weight: 700;\n color: ${({\n theme\n}) => theme.textColor.tertiary};\n`;\nconst Body = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-top: 0.5rem;\n`;\nconst MainValue = styled.div`\n text-align: left;\n font-size: 1.25rem;\n line-height: 1.2;\n font-weight: 700;\n`;\nconst NoValue = styled.div`\n text-align: left;\n font-weight: 700;\n color: ${({\n theme\n}) => theme.graphColors.grey030};\n &:before {\n content: '—';\n }\n`;\nconst Label = styled.div<{\n $active?: boolean;\n}>`\n font-size: 0.7rem;\n font-weight: 700;\n color: ${({\n theme,\n $active\n}) => $active ? theme.textColor.primary : theme.textColor.tertiary};\n`;\nconst MainUnit = styled.span`\n margin-left: 0.25rem;\n font-size: 0.6rem;\n`;\n\n// bottom: ${(props) => props.$size > 0 ? props.offset * 100 : 0}%;\nconst ProportionBarBar = styled.div<{\n $size: number;\n $color: string;\n}>`\n position: absolute;\n bottom: ${props => props.$size > 0 ? '0' : 'auto'}%;\n //bottom: 0;\n top: ${props => props.$size > 0 ? 'auto' : '0'}%;\n left: 0;\n height: ${props => Math.abs(props.$size) * 100}%;\n width: 14px;\n background-color: ${props => props.$color};\n`;\nconst ProportionBarContainer = styled.div<{\n $active: boolean;\n}>`\n position: absolute;\n height: 170px;\n bottom: ${props => props.$active ? '36px' : '0'};\n left: 0;\n width: 12px;\n`;\nconst ProportionBar = ({\n size,\n color,\n active,\n offset\n}: {\n size: number;\n color: string;\n active: boolean;\n offset?: number;\n}) => {\n return \n \n ;\n};\ntype OutcomeCardProps = {\n node: OutcomeNodeFieldsFragment;\n startYear: number;\n endYear: number;\n //subNodes: OutcomeNodeFieldsFragment[],\n state: 'open' | 'closed';\n hovered: boolean;\n active: boolean;\n onHover: (evt) => void;\n handleClick: (segmentId: string) => void;\n color: string;\n total: number;\n positiveTotal: number;\n negativeTotal: number;\n refetching: boolean;\n};\nconst OutcomeCard = (props: OutcomeCardProps) => {\n const {\n node,\n state,\n hovered,\n onHover,\n handleClick,\n active,\n color,\n startYear,\n endYear,\n total,\n positiveTotal,\n negativeTotal,\n refetching\n } = props;\n const cardRef = useRef(null);\n useEffect(() => {\n if (active && cardRef.current) cardRef.current.scrollIntoView({\n inline: 'center',\n behavior: 'smooth',\n block: 'nearest'\n });\n }, [active]);\n\n //console.log(state);\n const {\n t\n } = useTranslation();\n const baseOutcomeValue = getMetricValue(node, startYear) || 0;\n const goalOutcomeValue = getMetricValue(node, endYear);\n const change = getMetricChange(baseOutcomeValue, goalOutcomeValue);\n const lastMeasuredYear = node?.metric.historicalValues[node.metric.historicalValues.length - 1]?.year;\n const isForecast = !lastMeasuredYear || endYear > lastMeasuredYear;\n const {\n maximumFractionDigits\n } = useFeatures();\n\n // const unit = `kt CO2e${t('abbr-per-annum')}`;\n const unit = node.metric?.unit?.htmlShort;\n const handleClickTab = () => handleClick(node.id);\n const handleKeyDownOnTab = (e: React.KeyboardEvent) => {\n if (e.code === 'Enter' || e.code === 'Space') {\n e.preventDefault();\n handleClick(node.id);\n }\n };\n return onHover(node.id)} onMouseLeave={() => onHover(undefined)} onClick={handleClickTab} onKeyDown={handleKeyDownOnTab} aria-selected={active} aria-controls={`tabpanel-${node.id}`} data-sentry-element=\"StyledTab\" data-sentry-component=\"OutcomeCard\" data-sentry-source-file=\"OutcomeCard.tsx\">\n \n {refetching && }\n\n \n
\n \n <Name data-sentry-element=\"Name\" data-sentry-source-file=\"OutcomeCard.tsx\">{node.shortName || node.name}</Name>\n \n
\n\n \n \n \n {goalOutcomeValue ? <>\n {beautifyValue(goalOutcomeValue, undefined, maximumFractionDigits ?? undefined)}\n \n : }\n\n \n \n {change ? <>\n {change > 0 && +}\n {change ? {`${change}%`} : -}\n : }\n \n \n \n
\n
;\n};\nexport default OutcomeCard;","import { useState, useMemo, useCallback } from 'react';\nimport styled from 'styled-components';\nimport { useTranslation } from 'next-i18next';\nimport { useSpring, animated, config } from '@react-spring/web';\nimport useScrollTo from 'react-spring-scroll-to-hook';\nimport { getMetricValue, getOutcomeTotal } from 'common/preprocess';\nimport OutcomeNodeContent from 'components/general/OutcomeNodeContent';\nimport OutcomeCard from './OutcomeCard';\nimport { OutcomeNodeFieldsFragment } from 'common/__generated__/graphql';\nimport { setUniqueColors } from 'common/colors';\nconst CardSet = styled(animated.div)<{\n $color?: string;\n $haschildren?: boolean;\n}>`\n position: relative;\n padding-bottom: ${props => props.$haschildren ? '190px' : '1rem'};\n background-color: ${({\n theme\n}) => theme.cardBackground.secondary};\n box-shadow: 3px 3px 12px rgba(33, 33, 33, 0.15);\n\n &:not(:first-child) {\n margin-top: 1rem;\n }\n`;\nconst SubNodes = styled.div`\n padding: 0.5rem;\n`;\nconst CardDeck = styled.div`\n position: absolute;\n display: flex;\n overflow-x: auto;\n overflow-y: visible;\n width: calc(100% - 1rem);\n bottom: -1rem;\n height: 206px;\n z-index: 1;\n scroll-behavior: smooth;\n`;\nconst ContentArea = styled.div`\n padding: 0.5rem;\n`;\nconst Bar = styled.div`\n display: flex;\n margin: 0.5rem 0 1.5rem;\n height: 1rem;\n border: ${props => props.color} solid;\n border-width: 0;\n border-top: 0;\n cursor: pointer;\n`;\nconst BarHeader = styled.h5`\n font-size: 1rem;\n color: ${({\n theme\n}) => theme.textColor.tertiary};\n`;\nconst Segment = styled.div`\n display: inline-block;\n position: relative;\n border: ${props => props.theme.themeColors.white} solid;\n border-width: 2px;\n height: 1.5rem;\n\n &.hovered::after {\n content: '';\n position: absolute;\n width: 100%;\n height: 0.25rem;\n background-color: ${props => props.theme.graphColors.grey050};\n bottom: -0.5rem;\n }\n\n &.active::after {\n content: '';\n position: absolute;\n width: 100%;\n height: 0.25rem;\n background-color: ${props => props.theme.graphColors.grey090};\n bottom: -0.5rem;\n }\n`;\nconst BarSeparator = styled.div`\n display: inline-block;\n position: relative;\n height: 2rem;\n width: 2px;\n background-color: ${props => props.theme.graphColors.grey070};\n`;\nconst OutcomeBar = props => {\n const {\n nodes,\n date,\n hovered,\n onHover,\n handleClick,\n activeNode,\n parentColor\n } = props;\n const {\n t\n } = useTranslation();\n const nodesTotal = getOutcomeTotal(nodes, date);\n // Let's get the outcome type from first node and use it with translate to give bar a title\n // TODO: get title from API\n const outcomeType = nodes[0].quantity;\n const negativeNodes = nodes.filter(node => getMetricValue(node, date) < 0);\n const positiveNodes = nodes.filter(node => getMetricValue(node, date) >= 0);\n return <>\n {`${t(outcomeType)} ${date}`}\n \n {positiveNodes.map(node => onHover(node.id)} onMouseLeave={() => onHover(undefined)} onClick={() => handleClick(node.id)} />)}\n {negativeNodes?.length > 0 && }\n {negativeNodes.map(node => onHover(node.id)} onMouseLeave={() => onHover(undefined)} onClick={() => handleClick(node.id)} />)}\n {nodes.length < 2 && }\n \n ;\n};\nconst DEFAULT_NODE_ORDER = 100;\nfunction orderByMetric(nodes: OutcomeNodeFieldsFragment[]) {\n function getLastValue(node: OutcomeNodeFieldsFragment) {\n const {\n metric\n } = node;\n if (!metric) return 0;\n const lastValue = metric.historicalValues[metric.historicalValues.length - 1]?.value;\n if (lastValue == undefined) return 0;\n return lastValue;\n }\n nodes.sort((a, b) => {\n // First sort by the order field\n let aOrder = a.order ?? DEFAULT_NODE_ORDER;\n let bOrder = b.order ?? DEFAULT_NODE_ORDER;\n if (aOrder < 0) aOrder = DEFAULT_NODE_ORDER - aOrder;\n if (bOrder < 0) bOrder = DEFAULT_NODE_ORDER - bOrder;\n if (aOrder !== bOrder) {\n return aOrder - bOrder;\n }\n // or if order is the same, use metric values\n const aVal = getLastValue(a);\n const bVal = getLastValue(b);\n if (a.order != null && b.order != null) {\n return b.order - a.order;\n }\n return bVal - aVal;\n });\n}\ntype OutcomeCardSetProps = {\n nodeMap: Map;\n rootNode: OutcomeNodeFieldsFragment;\n parentColor: string;\n startYear: number;\n endYear: number;\n activeScenario: string;\n activeNodeId: string | undefined;\n setLastActiveNodeId: (s: string) => void;\n subNodesTitle: string;\n isRootNode: boolean;\n refetching: boolean;\n};\nconst OutcomeCardSet = ({\n nodeMap,\n rootNode,\n parentColor,\n startYear,\n endYear,\n activeScenario,\n activeNodeId,\n setLastActiveNodeId,\n subNodesTitle,\n isRootNode,\n refetching\n}: OutcomeCardSetProps) => {\n const [hoveredNodeId, setHoveredNodeId] = useState(undefined);\n const {\n scrollTo\n } = useScrollTo(config.molasses);\n const {\n cardNodes,\n subNodeMap\n } = useMemo(() => {\n const inputNodeIds = rootNode.inputNodes.map(node => node.id);\n const cardNodes = [...nodeMap.values()].filter(node => inputNodeIds.indexOf(node.id) >= 0).map(node => ({\n ...node\n }));\n orderByMetric(cardNodes);\n setUniqueColors(cardNodes, node => node.color, (node, color) => {\n node.color = color;\n });\n const subNodeMap = new Map(cardNodes.map(cn => [cn.id, cn.inputNodes.map(child => nodeMap.get(child.id)!).filter(child => !!child)]));\n return {\n cardNodes,\n subNodeMap\n };\n }, [nodeMap]);\n const inputNodes = rootNode.inputNodes.filter(node => !nodeMap.has(node.id));\n // Hide outcome bar. TODO: make this configurable\n const showOutcomeBar = false;\n const fadeIn = useSpring({\n to: {\n opacity: 1\n },\n from: {\n opacity: 0\n }\n });\n const handleHover = useCallback(evt => {\n setHoveredNodeId(evt);\n }, [setHoveredNodeId]);\n const handleClick = useCallback(segmentId => {\n // if active node clicked, make its parent active node\n const newActiveNode = segmentId === activeNodeId ? rootNode.id : segmentId;\n setLastActiveNodeId(newActiveNode);\n }, [activeNodeId, rootNode.id, setLastActiveNodeId]);\n const negativeNodesTotal = getOutcomeTotal(cardNodes.filter(node => getMetricValue(node, endYear) < 0), endYear);\n const positiveNodesTotal = getOutcomeTotal(cardNodes.filter(node => getMetricValue(node, endYear) >= 0), endYear);\n\n // console.log(\"card nodes\" , cardNodes);\n return <>\n 0} data-sentry-element=\"CardSet\" data-sentry-source-file=\"OutcomeCardSet.tsx\">\n \n \n \n {showOutcomeBar && <>\n \n }\n {cardNodes.length > 0 && \n {subNodesTitle}\n \n {cardNodes.map((node, indx) => )}\n \n }\n \n ;\n};\nexport default OutcomeCardSet;","import { useEffect, useMemo, useState } from 'react';\nimport { useReactiveVar } from '@apollo/client';\nimport { activeScenarioVar, yearRangeVar } from 'common/cache';\nimport OutcomeCardSet from 'components/general/OutcomeCardSet';\nimport SettingsPanelFull from 'components/general/SettingsPanelFull';\nimport { useRouter } from 'next/router';\nimport { useInstance } from 'common/instance';\nimport { useTranslation } from 'next-i18next';\nimport type { GetPageQuery, OutcomeNodeFieldsFragment } from 'common/__generated__/graphql';\nimport type { PageRefetchCallback } from './Page';\nimport type { ParsedUrlQuery } from 'querystring';\nimport { PageHero } from 'components/common/PageHero';\nimport type { TFunction } from 'i18next';\ntype OutcomeNode = OutcomeNodeFieldsFragment;\nconst findVisibleNodes = (allNodes: Map, lastNodeId: string, visibleNodes: OutcomeNode[]) => {\n // Using last active node Id, create an array of all visible nodes\n const lastNode = allNodes.get(lastNodeId)!;\n visibleNodes.unshift(lastNode);\n if (lastNode.outputNodes?.length) {\n if (!allNodes.has(lastNode.outputNodes[0].id)) return visibleNodes;\n findVisibleNodes(allNodes, lastNode.outputNodes[0].id, visibleNodes);\n }\n return visibleNodes;\n};\nconst getTitle = (t: TFunction, outcomeType: string | null) => {\n switch (outcomeType) {\n case 'emissions':\n return t('emissions-forecast');\n case 'disease_burden':\n return t('disease_burden-forecast');\n default:\n return t('forecast');\n }\n};\ntype OutcomePageProps = {\n page: GetPageQuery['page'] & {\n __typename: 'OutcomePage';\n };\n refetch: PageRefetchCallback;\n activeScenario: GetPageQuery['activeScenario'];\n refetching: boolean;\n};\nexport default function OutcomePage(props: OutcomePageProps) {\n const {\n page,\n refetch,\n activeScenario: queryActiveScenario,\n refetching\n } = props;\n const {\n t\n } = useTranslation();\n const instance = useInstance();\n const yearRange = useReactiveVar(yearRangeVar);\n const activeScenario = useReactiveVar(activeScenarioVar);\n const router = useRouter();\n const queryNodeId = Array.isArray(router.query.node) ? router.query.node[0] : router.query.node;\n const [lastActiveNodeId, setLastActiveNodeId] = useState(queryNodeId);\n useEffect(() => {\n if (activeScenario === null || activeScenario.id !== queryActiveScenario?.id) {\n refetch();\n }\n }, [activeScenario]);\n useEffect(() => {\n if (router.query?.node === lastActiveNodeId) return;\n const query: ParsedUrlQuery = {};\n if (lastActiveNodeId) {\n query.node = lastActiveNodeId;\n }\n router.replace({\n query\n }, undefined, {\n shallow: true\n });\n }, [lastActiveNodeId]);\n const {\n outcomeNode\n } = page;\n const {\n upstreamNodes\n } = outcomeNode;\n const allNodes = useMemo(() => new Map(upstreamNodes.map(node => [node.id, node])), [upstreamNodes]);\n allNodes.set(outcomeNode.id, outcomeNode);\n const activeNodeId = lastActiveNodeId && allNodes.has(lastActiveNodeId) ? lastActiveNodeId : outcomeNode.id;\n // TODO: filtering out empty nodes, in some instances there are some -> investigate why\n const visibleNodes = findVisibleNodes(allNodes, activeNodeId, []).filter(node => node?.id);\n const outcomeType = visibleNodes[0].quantity;\n const pageLeadTitle = page.leadTitle || instance.leadTitle;\n const pageLeadParagraph = page.leadParagraph || instance.leadParagraph;\n const showSettingsPanel = !instance.features?.hideNodeDetails;\n return <>\n \n <>\n {visibleNodes.map((node, index) => )}\n \n \n {showSettingsPanel && }\n ;\n}","import styled from 'styled-components';\nimport type { GetPageQuery } from 'common/__generated__/graphql';\nimport type { PageRefetchCallback } from './Page';\nimport { PageHero } from 'components/common/PageHero';\nimport { StreamField } from 'components/common/StreamField';\nconst BodyCard = styled.div`\n padding: 2rem;\n border-radius: ${props => props.theme.cardBorderRadius};\n background-color: ${props => props.theme.themeColors.white};\n box-shadow: 3px 3px 12px rgba(33, 33, 33, 0.15);\n`;\ntype StaticPageProps = {\n page: NonNullable & {\n __typename: 'StaticPage';\n };\n refetch: PageRefetchCallback;\n};\nfunction StaticPage({\n page\n}: StaticPageProps) {\n return \n \n {page?.body?.map(block => block ? : null)}\n \n ;\n}\nexport default StaticPage;","import { gql } from '@apollo/client';\nimport dimensionalNodePlotFragment from '../queries/dimensionalNodePlot';\nimport { STREAM_FIELD_FRAGMENT } from 'components/common/StreamField';\n\nconst OUTCOME_NODE_FIELDS = gql`\n fragment OutcomeNodeFields on Node {\n id\n name\n color\n order\n shortName\n shortDescription\n metric(goalId: $goal) {\n id\n name\n unit {\n short\n htmlShort\n htmlLong\n }\n forecastValues {\n year\n value\n }\n baselineForecastValues {\n year\n value\n }\n historicalValues {\n year\n value\n }\n }\n targetYearGoal\n goals(activeGoal: $goal) {\n year\n value\n }\n unit {\n short\n htmlShort\n htmlLong\n }\n quantity\n shortDescription\n inputNodes {\n id\n name\n }\n outputNodes {\n id\n }\n upstreamActions(onlyRoot: true, decisionLevel: MUNICIPALITY) {\n id\n name\n goal\n shortName\n shortDescription\n parameters {\n __typename\n id\n nodeRelativeId\n node {\n id\n }\n isCustomized\n ... on BoolParameterType {\n boolValue: value\n boolDefaultValue: defaultValue\n }\n }\n group {\n id\n name\n color\n }\n }\n ...DimensionalNodeMetric\n }\n ${dimensionalNodePlotFragment}\n`;\n\nconst GET_PAGE = gql`\n ${OUTCOME_NODE_FIELDS}\n query GetPage($path: String!, $goal: ID, $scenarios: [String!]) {\n activeScenario {\n id\n }\n page(path: $path) {\n id\n __typename\n title\n ... on OutcomePage {\n leadTitle\n leadParagraph\n outcomeNode {\n ...OutcomeNodeFields\n upstreamNodes(sameQuantity: true, sameUnit: true, includeActions: false) {\n ...OutcomeNodeFields\n }\n }\n }\n ... on ActionListPage {\n actionListLeadTitle: leadTitle\n actionListLeadParagraph: leadParagraph\n showOnlyMunicipalActions\n defaultSortOrder\n }\n ... on StaticPage {\n body {\n ...StreamFieldFragment\n }\n }\n }\n }\n ${STREAM_FIELD_FRAGMENT}\n`;\n\nexport default GET_PAGE;\n","import { Suspense } from 'react';\nimport Head from 'next/head';\nimport { ObservableQuery, useQuery, useReactiveVar } from '@apollo/client';\nimport type { GetPageQuery, GetPageQueryVariables } from 'common/__generated__/graphql';\nimport { activeGoalVar } from 'common/cache';\nimport { logApolloError } from 'common/log';\nimport ContentLoader from 'components/common/ContentLoader';\nimport ErrorMessage from 'components/common/ErrorMessage';\nimport ActionListPage from 'components/pages/ActionListPage';\nimport OutcomePage from 'components/pages/OutcomePage';\nimport StaticPage from 'components/pages/StaticPage';\nimport { useSite } from 'context/site';\nimport { useTranslation } from 'next-i18next';\nimport Error from 'pages/_error';\nimport GET_PAGE from 'queries/getPage';\nimport { getProgressTrackingScenario } from '@/utils/progress-tracking';\nexport type PageRefetchCallback = ObservableQuery['refetch'];\nconst PageLoader = () => {\n return ;\n};\ntype PageProps = {\n path: string;\n headerExtra?: JSX.Element;\n};\nexport default function Page({\n path,\n headerExtra\n}: PageProps) {\n const site = useSite();\n const scenarios = !!getProgressTrackingScenario(site.scenarios) ? ['default', 'progress_tracking'] : null;\n const activeGoal = useReactiveVar(activeGoalVar);\n const queryResp = useQuery(GET_PAGE, {\n variables: {\n path,\n goal: activeGoal?.id ?? null,\n scenarios\n },\n fetchPolicy: 'cache-and-network',\n notifyOnNetworkStatusChange: true\n });\n const {\n loading,\n error,\n previousData,\n refetch\n } = queryResp;\n const data = queryResp.data ?? previousData;\n const {\n t\n } = useTranslation();\n if (error) {\n logApolloError(error, {\n query: GET_PAGE,\n component: 'Page'\n });\n /* If the GetPage query fails, we should show the \"internal server error\"\n * dialog. */\n throw error;\n }\n if (!data) {\n return ;\n }\n const {\n page,\n activeScenario\n } = data;\n let pageContent: React.ReactNode;\n if (!page) {\n console.error(`No page found for path ${path}`);\n return ;\n }\n if (page.__typename === 'OutcomePage') {\n pageContent = ;\n } else if (page.__typename === 'ActionListPage') {\n pageContent = ;\n } else if (page.__typename === 'StaticPage') {\n pageContent = ;\n } else {\n console.error('Invalid page type: ', page.__typename);\n return ;\n }\n return <>\n \n \n {site.title} | {page.title}\n \n \n {headerExtra}\n } data-sentry-element=\"Suspense\" data-sentry-source-file=\"Page.tsx\">{pageContent}\n ;\n}"],"names":["StyledBadge","styled","BSSBadge","props","theme","color","readableColor","themeColors","black","white","badgeBorderRadius","badgePaddingY","badgePaddingX","badgeFontWeight","isLink","darken","fontSizeMd","fontSizeBase","fontSizeSm","Badge","children","size","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","className","data-sentry-element","data-sentry-component","data-sentry-source-file","defaultProps","propTypes","PropTypes","__webpack_exports__","Z","LoaderOverlay","div","withConfig","Spinner","StyledCardContainer","param","spaces","s100","StyledCard","Card","cardBorderRadius","cardBackground","secondary","StyledCardTitle","CardTitle","lineHeightMd","textColor","CardListBlock","title","cards","jsx_runtime","jsxs","Fragment","h5","map","card","i","tag","shortDescription","CardText","STREAM_FIELD_FRAGMENT","gql","StreamField","block","__typename","RichText","html","value","filter","undefined","TotalValue","$size","$muted","tertiary","TotalUnit","span","YearRange","displayValue","header","unit","muted","id","concat","replace","tooltipOpen","setTooltipOpen","useState","dangerouslySetInnerHTML","__html","ImpactDisplayWrapper","graphColors","grey030","ImpactDisplayHeader","ImpactDisplayItem","ImpactDisplayChildren","ImpactDisplay","effectCumulative","effectYearly","yearRange","unitCumulative","unitYearly","impactName","t","i18n","useTranslation","cumulativePrefix","yearlyPrefix","instance","useInstance","features","showAccumulatedEffects","HighlightValue","formatNumber","language","StyledContentContainer","Container","$overlap","StyledHeroContainer","brandDark","StyledHero","StyledTitle","h1","fontSizeLg","breakpointMd","fontSizeXl","StyledHeroCard","primary","s400","s200","Description","breakpointSm","PageHero","leadTitle","leadDescription","overlap","hasHeroCard","fluid","Row","as","grey070","BadgeYears","fontWeightBold","common_ScenarioBadge","startYear","endYear","formattedYears","Plot","dynamic","Promise","all","__webpack_require__","e","then","bind","ssr","GraphContainer","ActionDescription","grey010","HoverValue","HoverGroupTag","HoverValueTitle","HoverValueValue","HoverValueUnit","parseFloat","Number","toPrecision","toLocaleString","graphs_ActionComparisonGraph","data","actionGroups","impactUnit","actionIds","useTheme","hoverId","setHoverId","useEffect","actions","length","layout","useMemo","height","barmode","hoverlabel","bgcolor","bordercolor","font","family","fontFamily","grey090","hovermode","hoverdistance","yaxis","xaxis","showgrid","showticklabels","margin","l","r","b","pad","paper_bgcolor","plot_bgcolor","handleHover","useCallback","evt","points","pointIndex","plot","type","x","y","text","name","marker","colors","opacity","line","width","textposition","customdata","hovertemplate","useResizeHandler","style","config","displayModeBar","onHover","a","href","find","group","groups","h4","Icon","Col","md","impact","StyledSubtitle","p","ChartWrapper","subtitle","isLoading","h3","Loader","general_ActionsComparison","sortedActions","sortBy","sortAscending","refetching","displayYears","action","impactMetric","forecastValues","dataPoint","year","sort","aValue","bValue","macData","ids","htmlShort","ActionComparisonGraph","EfficiencyDisplayWrapper","EfficiencyDisplayHeader","s050","grey050","EfficiencyDisplayItem","general_EfficiencyDisplay","impactCumulative","impactCumulativeUnit","impactCumulativeLabel","costCumulative","costCumulativeUnit","costCumulativeLabel","efficiencyCumulative","efficiencyCumulativeUnit","efficiencyCumulativeLabel","efficiencyCap","displayEfficiency","Math","abs","displayImpact","ActionItem","$isActive","CardHeader","ActionCategory","CardContent","CardDetails","ActionState","GroupTag","dark","StyledIconWrapper","StyledActionLink","StyledActionTitle","general_ActionListCard","enabledParam","description","displayType","actionEffectCumulative","summarizeYearlyValuesBetween","yearlyCumulativeUnit","findActionEnabledParam","parameters","isActive","boolValue","hasEfficiency","goal","_this","originalLength","clippedDescription","slice","ActionLink","data-testid","decisionLevel","ActionParameters","impactOnTargetYear","EfficiencyDisplay","cumulativeImpact","cumulativeImpactUnit","cumulativeImpactName","cumulativeCost","cumulativeCostUnit","cumulativeCostName","cumulativeEfficiency","cumulativeEfficiencyUnit","cumulativeEfficiencyName","ActionListList","ActionListItem","ActionListCategory","getValueForSorting","key","sortKey","sortValue","general_ActionsList","sortActions","Set","forEach","add","sm","xl","ActionListCard","EmptyPlot","graphs_MacGraph","efficiencyUnit","efficiencyName","costName","costUnit","green090","barColors","setBarColors","isEmpty","totalSaving","negativeSideWidth","xPlacement","bar","barWidth","negativeSide","xref","yref","x0","y0","x1","y1","fillcolor","red030","ticksuffix","shapes","count","cost","efficiency","general_ActionsMac","actionEfficiencyPairs","efficiencyLimit","plotLimitEfficiency","MacGraph","echarts","BarChart","CustomChart","TitleComponent","TooltipComponent","GridComponent","DatasetComponent","TransformComponent","LegendComponent","LabelLayout","UniversalTransition","CanvasRenderer","GraphicComponent","LineChart","StyledChartWrapper","$height","Chart","onZrClick","chartRef","useRef","wrapperRef","chart","current","getChartTheme","version","themeName","seriesCnt","backgroundColor","titleColor","headingsColor","subtitleColor","textColorShow","markTextColor","blue030","green030","yellow030","borderColor","borderWidth","visualMapColor","legendTextColor","kColor","kColor0","kBorderColor","kBorderColor0","kBorderWidth","lineWidth","symbolSize","symbol","symbolBorderWidth","lineSmooth","graphLineWidth","graphLineColor","mapLabelColor","mapLabelColorE","mapBorderColor","mapBorderColorE","mapBorderWidth","mapBorderWidthE","mapAreaColor","mapAreaColorE","axes","axisLineShow","axisLineColor","axisTickShow","axisTickColor","axisLabelShow","axisLabelColor","splitLineShow","splitLineColor","splitAreaShow","splitAreaColor","transparentize","axisSeperateSetting","toolboxColor","toolboxEmphasisColor","tooltipAxisColor","tooltipAxisWidth","timelineLineColor","timelineLineWidth","timelineItemColor","timelineItemColorE","timelineCheckColor","timelineCheckBorderColor","timelineItemBorderWidth","timelineControlColor","timelineControlBorderColor","timelineControlBorderWidth","timelineLabelColor","datazoomBackgroundColor","datazoomDataColor","datazoomFillColor","datazoomHandleColor","datazoomHandleWidth","datazoomLabelColor","throttledResize","throttle","resize","leading","trailing","window","addEventListener","flush","removeEventListener","clear","dispose","showLoading","hideLoading","setOption","chartZr","getZr","withClickHandler","handleClick","params","pointInPixel","offsetX","offsetY","pointInGrid","convertFromPixel","on","off","ref","CostBenefitAnalysis","useReactiveVar","yearRangeVar","dimensionalMetrics","costBenefitData","impactOverviews","dataset","graphType","costDim","DimensionalMetric","metric","metricsWithTotals","benefit","rows","reduce","row","totals","netBenefit","chartData","getChartData","sortedData","short","unitLabel","dimensions","source","item","tooltip","trigger","axisPointer","valueFormatter","round","legend","icon","grid","containLabel","top","bottom","xAxis","position","axisLabel","formatter","yAxis","splitArea","show","axisLine","overflow","align","axisTick","splitLine","series","itemStyle","renderItem","api","categoryIndex","highPoint","coord","halfHeight","visual","stroke","fill","barCategoryGap","groupPadding","transition","shape","cx","cy","label","x2","y2","textAlign","textBaseline","encode","z","barCount","formatPercentage","ReturnOnInvestment","getChartConfig","returnOnInvestment","years","index","totalCost","totalImpact","roi","impactDim","values","transform","dimension","order","datasetIndex","activeIndex","bars","GET_IMPACT_OVERVIEWS","SettingsForm","form","ActionCount","StyledFormGroup","FormGroup","SortButtons","ButtonGroup","ActionsViewTabs","Tab","button","s150","brandLight","blue070","getSortOptions","isHidden","hasGraph","impactResponse","overview","ActionPageTab","tabId","onSelectTab","onClick","role","tabIndex","aria-selected","aria-controls","pages_ActionListPage","activeGoal","actionListResp","sortOptions","page","activeGoalVar","impactResp","useQuery","fetchPolicy","GET_ACTION_LIST","variables","error","loading","areActionsLoading","previousData","activeScenario","activeScenarioVar","showReturnOnInvestment","showCostBenefitAnalysis","listType","setListType","ascending","setAscending","setSortBy","sortOption","defaultSortOrder","activeEfficiency","setActiveEfficiency","actionGroup","setActionGroup","filteredActions","showOnlyMunicipalActions","usableActions","act","_find","efficiencyType","_find_value","efficiencyAction","reductionText","out","historicalValues","invertImpact","impactValues","invertCost","costValues","efficiencyDivisor","Object","assign","impactNode","costNode","handleChangeSort","selectedSorter","option","GraphQLError","actionListLeadTitle","actionListLeadParagraph","Label","for","Input","onChange","target","impactGroup","indx","selected","Button","outline","active","aria-label","ScenarioBadge","ActionsList","ActionsMac","ActionsComparison","SettingsPanelFull","ContentLoader","fullPage","getDefaultSliceConfig","cube","defaultConfig","dimensionId","categories","cubeDefault","getChoicesForGoal","hasOwnProperty","firstPossible","dim","general_DimensionalBarGraph","sliceConfig","setSliceConfig","newDefault","isEqual","yearData","getSingleYear","plotData","longUnit","hasDimension","maxTotal","categoryTypes","options","colId","cIdx","colTotals","acc","rowId","rIdx","datum","portion","dimDetails","allLabels","push","meta","texttemplate","textangle","base","showlegend","range","annotations","yshift","xanchor","yanchor","showarrow","modebar","remove","activecolor","tickfont","dragmode","orientation","itemclick","itemdoubleclick","displaylogo","responsive","minWidth","maxWidth","noValidate","TableWrapper","Styled","general_DataTable","useFeatures","node","subNodes","totalHistoricalValues","totalForecastValues","maximumFractionDigits","hasTotalValues","some","val","Table","bordered","thead","tr","th","subNode","tbody","td","ul","ActionGroup","ActionsListCard","li","$groupColor","h6","general_OutcomeNodeDetails","upstreamActions","sector","NodeLink","StyledIndicator","StyledStatusBadge","$color","$backgroundColor","s025","$iconColor","getDeltaPercentage","expected","observed","STATUS_KEYS","ON_TRACK","OFF_TRACK","DEVIATING","getStatus","deltaPercentage","green070","iconColor","green050","green010","subLabel","percentage","red070","red050","red010","yellow070","yellow050","yellow010","StyledEmissionsCardValue","StyledEmissionsCardUnit","StyledEmissionsCardTitle","EmissionsCard","status","visualizationEntryFragment","fragment","GET_NODE_VISUALIZATIONS","COMMON_AREA_CONFIG","stack","silent","lineStyle","getNegativeAreaStyle","getPositiveAreaStyle","StyledChartTitle","fontWeightBase","ProgressDriversVisualization","desiredOutcome","site","useSite","getProgressTrackingScenario","negativeAreaStyle","positiveAreaStyle","dimensionalMetric","ALL_SCENARIOS","slicedDim","sliceBy","defaultScenario","categoryValues","cv","category","originalId","progressScenario","progressYears","scenarios","actualHistoricalYears","firstYear","lastYear","_","allYears","historicalYears","forecastYears","allDefaultData","allProgressData","defaultData","progressData","combinedData","defaultValue","progressValue","minYear","includes","interpolatedProgressData","interpolateProgressValues","result","startIndex","endIndex","startValue","endValue","gap","step","areaData","above","below","axisValue","noDataColor","noDataText","items","isNaN","seriesName","join","left","selectedMode","right","boundaryGap","area","areaStyle","DesiredOutcome","Increasing","stackStrategy","Decreasing","connectNulls","blue050","VisualizationContainer","StyledDriversTitle","h2","StyledGroupTitle","StyledSpinnerContainer","StyledChartContainer","ProgressDriversWrapper","progressTrackingScenario","nodeId","observedYears","metricDim","visualizations","Fade","viz","child","ii","StyledContainer","StyledViewDetails","StyledStatusBadgeButton","attrs","StyledSpan","StyledBackButton","StyledChart","StyledFlexContainer","StyledYearSelector","StyledModal","Modal","GlobalModalStyle","createGlobalStyle","getTooltipRow","styles","ProgressIndicator","selectedEmissions","drillDownState","isModalOpen","onModalOpenChange","selectedYear","onSelectedYearChange","showViewDetails","dropdownOpen","setDropdownOpen","setDrillDownState","drillDownIconPath","useSVGIconPath","defaultColor","defaultMetric","metricHasProgressTrackingScenario","metrics","default","progress","defaultSlice","progressSlice","setUniqueColors","yearIndex","indexOf","progressIndex","totalExpected","totalValues","totalObserved","matchingProgressCategory","latestProgressData","d","latestDeltaPercentage","handleOpenModal","chartConfig","firstParam","split","Array","isArray","colorBlocks","roundedValue","measuredEmissionsData","statusLabel","lineHeight","rich","fontSize","borderRadius","padding","triggerEvent","chevron","image","f","dataIndex","m","decal","rotation","PI","dashArrayX","dashArrayY","isOpen","toggle","setTimeout","aria-modal","centered","wrapClassName","ModalHeader","ModalBody","categoryId","Dropdown","DropdownToggle","caret","DropdownMenu","DropdownItem","clickedCategory","DisplayTab","NavItem","ContentWrapper","TabNavigation","Nav","CardSetHeader","CardSetDescription","CardSetDescriptionDetails","CardSetSummary","general_OutcomeNodeContent","isRootNode","progressModalOpen","setProgressModalOpen","selectedProgressYear","setSelectedProgressYear","getLatestProgressYear","showProgressTrackingStatus","hasProgressTracking","activeTabId","setActiveTabId","showDistribution","nodesTotal","getMetricValue","nodesBase","lastMeasuredYear","firstForecastYear","isForecast","outcomeChange","getMetricChange","htmlLong","nodeName","shortName","showNodeLinks","hideNodeDetails","onClickMeasuredEmissions","outcomeGraph","DimensionalNodePlot","withControls","baselineForecast","baselineForecastValues","withReferenceYear","withTools","singleYearGraph","DimensionalBarGraph","max","beautifyValue","tabs","NavLink","disabled","TabContent","activeTab","aria-labelledby","OutcomeNodeDetails","DataTable","CardWithState","general_DashCard","state","hovered","refProp","CardBody","StyledTab","Header","Title","Name","Status","Body","MainValue","NoValue","$active","MainUnit","ProportionBarBar","ProportionBarContainer","ProportionBar","offset","general_OutcomeCard","total","positiveTotal","negativeTotal","cardRef","scrollIntoView","inline","behavior","baseOutcomeValue","goalOutcomeValue","change","onMouseEnter","onMouseLeave","onKeyDown","code","preventDefault","DashCard","CardSet","animated","$haschildren","SubNodes","CardDeck","ContentArea","BarHeader","general_OutcomeCardSet","nodeMap","rootNode","parentColor","activeNodeId","setLastActiveNodeId","subNodesTitle","hoveredNodeId","setHoveredNodeId","scrollTo","useScrollTo","molasses","cardNodes","subNodeMap","inputNodeIds","inputNodes","orderByMetric","nodes","getLastValue","lastValue","aOrder","bOrder","DEFAULT_NODE_ORDER","aVal","bVal","Map","cn","get","has","fadeIn","useSpring","to","from","segmentId","negativeNodesTotal","getOutcomeTotal","positiveNodesTotal","OutcomeNodeContent","OutcomeCard","findVisibleNodes","allNodes","lastNodeId","visibleNodes","lastNode","unshift","outputNodes","getTitle","outcomeType","OutcomePage","refetch","queryActiveScenario","router","useRouter","queryNodeId","query","lastActiveNodeId","shallow","outcomeNode","upstreamNodes","set","quantity","pageLeadTitle","pageLeadParagraph","leadParagraph","showSettingsPanel","OutcomeCardSet","BodyCard","pages_StaticPage","body","OUTCOME_NODE_FIELDS","dimensionalNodePlotFragment","GET_PAGE","PageLoader","Page","queryResp","pageContent","path","headerExtra","notifyOnNetworkStatusChange","logApolloError","component","console","Error","statusCode","ActionListPage","ErrorMessage","message","StaticPage","Head","Suspense","fallback"],"sourceRoot":""}