Skip to content

Commit dd22dca

Browse files
committed
fix: Operator was not showing on the map
This was due to hardcoded category in the operator municipalities fetching function. Since we do not have geographical information in the sunshine data, we need to somehow fetch the links between operator and municipalities from the energy price cube (which contains municipality information). Previously, we were filtering the energy price cube observations on category C2. Now we filter on category for sunshine indicator that are category based, otherwise we do not put a category filter
1 parent 6cc68c6 commit dd22dca

File tree

7 files changed

+25
-23
lines changed

7 files changed

+25
-23
lines changed

src/graphql/queries.graphql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ query WikiContent($locale: String!, $slug: String!) {
176176
}
177177
}
178178

179-
query OperatorMunicipalities($period: String!, $electricityCategory: String!) {
179+
query OperatorMunicipalities($period: String!, $electricityCategory: String) {
180180
operatorMunicipalities(
181181
period: $period
182182
electricityCategory: $electricityCategory

src/graphql/queries.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ export type QueryOperatorArgs = {
375375
};
376376

377377
export type QueryOperatorMunicipalitiesArgs = {
378-
electricityCategory: Scalars["String"]["input"];
378+
electricityCategory?: InputMaybe<Scalars["String"]["input"]>;
379379
period: Scalars["String"]["input"];
380380
};
381381

@@ -854,7 +854,7 @@ export type WikiContentQuery = {
854854

855855
export type OperatorMunicipalitiesQueryVariables = Exact<{
856856
period: Scalars["String"]["input"];
857-
electricityCategory: Scalars["String"]["input"];
857+
electricityCategory?: InputMaybe<Scalars["String"]["input"]>;
858858
}>;
859859

860860
export type OperatorMunicipalitiesQuery = {
@@ -1459,10 +1459,7 @@ export function useWikiContentQuery(
14591459
});
14601460
}
14611461
export const OperatorMunicipalitiesDocument = gql`
1462-
query OperatorMunicipalities(
1463-
$period: String!
1464-
$electricityCategory: String!
1465-
) {
1462+
query OperatorMunicipalities($period: String!, $electricityCategory: String) {
14661463
operatorMunicipalities(
14671464
period: $period
14681465
electricityCategory: $electricityCategory

src/graphql/resolver-types.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ export type QueryOperatorArgs = {
391391
};
392392

393393
export type QueryOperatorMunicipalitiesArgs = {
394-
electricityCategory: Scalars["String"]["input"];
394+
electricityCategory?: InputMaybe<Scalars["String"]["input"]>;
395395
period: Scalars["String"]["input"];
396396
};
397397

@@ -1358,10 +1358,7 @@ export type QueryResolvers<
13581358
Array<ResolversTypes["OperatorMunicipality"]>,
13591359
ParentType,
13601360
ContextType,
1361-
RequireFields<
1362-
QueryOperatorMunicipalitiesArgs,
1363-
"electricityCategory" | "period"
1364-
>
1361+
RequireFields<QueryOperatorMunicipalitiesArgs, "period">
13651362
>;
13661363
operators?: Resolver<
13671364
Array<ResolversTypes["Operator"]>,

src/graphql/resolvers.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,9 @@ const Query: QueryResolvers = {
582582
{ period, electricityCategory },
583583
context
584584
) => {
585-
const category = asElectricityCategory(electricityCategory);
585+
const category = electricityCategory
586+
? asElectricityCategory(electricityCategory)
587+
: undefined;
586588
return await getOperatorsMunicipalities(
587589
period,
588590
category,

src/graphql/schema.graphql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ type Query {
221221

222222
operatorMunicipalities(
223223
period: String!
224-
electricityCategory: String!
224+
electricityCategory: String
225225
): [OperatorMunicipality!]! @cacheControl(maxAge: 300)
226226

227227
cubeHealth: CubeHealth

src/hooks/use-enriched-sunshine-data.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { group } from "d3";
22
import { useMemo } from "react";
33

44
import { ElectricityCategory } from "src/domain/data";
5-
import { NetworkLevel } from "src/domain/sunshine";
5+
import { NetworkLevel, SunshineIndicator } from "src/domain/sunshine";
66
import {
77
useSunshineDataByIndicatorQuery,
88
useOperatorMunicipalitiesQuery,
@@ -13,7 +13,7 @@ interface UseEnrichedSunshineDataParams {
1313
filter: {
1414
period: string;
1515
peerGroup?: string;
16-
indicator: string;
16+
indicator: SunshineIndicator;
1717
saidiSaifiType?: string;
1818
networkLevel: NetworkLevel["id"];
1919
category: ElectricityCategory;
@@ -56,10 +56,16 @@ export const useEnrichedSunshineData = ({
5656
pause: !enabled,
5757
});
5858

59-
// TODO Should not use hardcoded category
60-
// Fetch operator municipalities data for the electricity category C2
59+
// Fetch operator municipalities data based on the selected indicator
6160
// This is needed to link operators with their geographic areas
62-
const electricityCategory = "C2" as const;
61+
// The Sunshine Data does not contain municipality information
62+
// Different indicators require different query parameters:
63+
// - netTariffs/energyTariffs: uses category from filter
64+
// - All other indicators (networkCosts, saidi, saifi, outageInfo, etc.): do not use a category
65+
const electricityCategory =
66+
indicator === "netTariffs" || indicator === "energyTariffs"
67+
? category
68+
: undefined;
6369
const [operatorMunicipalitiesQuery] = useOperatorMunicipalitiesQuery({
6470
variables: {
6571
period,
@@ -85,8 +91,6 @@ export const useEnrichedSunshineData = ({
8591
sunshineDataQuery.data.sunshineDataByIndicator?.data || [];
8692
const median =
8793
sunshineDataQuery.data.sunshineMedianByIndicator ?? undefined;
88-
const operatorMunicipalities =
89-
operatorMunicipalitiesQuery.data.operatorMunicipalities;
9094

9195
// Create operator index from the observations data
9296
const uniqueOperators = Array.from(
@@ -129,6 +133,9 @@ export const useEnrichedSunshineData = ({
129133
(obs) => obs.operatorId?.toString() || ""
130134
);
131135

136+
const operatorMunicipalities =
137+
operatorMunicipalitiesQuery.data?.operatorMunicipalities || [];
138+
132139
return {
133140
observations: enrichedObservations,
134141
observationsByOperator,

src/rdf/queries.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -588,7 +588,7 @@ export const getOperatorDocuments = async ({
588588

589589
export const getOperatorsMunicipalities = async (
590590
year: string,
591-
category: ElectricityCategory | "all",
591+
category: ElectricityCategory | undefined,
592592
client: ParsingClient
593593
) => {
594594
const query = `
@@ -603,7 +603,6 @@ export const getOperatorsMunicipalities = async (
603603
? `?source0 <https://energy.ld.admin.ch/elcom/electricityprice/dimension/category> <https://energy.ld.admin.ch/elcom/electricityprice/category/${category}> .`
604604
: ""
605605
}
606-
?source0 <https://energy.ld.admin.ch/elcom/electricityprice/dimension/municipality> ?municipality .
607606
?municipality <http://schema.org/containedInPlace> ?canton .
608607
?canton <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://schema.ld.admin.ch/Canton> .
609608
}

0 commit comments

Comments
 (0)