diff --git a/data/calculate-carbon-intensity.js b/data/calculate-carbon-intensity.js index 383f556f..4a575c4c 100644 --- a/data/calculate-carbon-intensity.js +++ b/data/calculate-carbon-intensity.js @@ -1,4 +1,5 @@ import _includes from 'lodash/includes' +import { isBefore } from 'date-fns'; import * as FT from '@/constants/energy-fuel-techs/group-detailed.js' function calAverage(isEnergyType, isWemOrAu, dataset) { @@ -33,7 +34,8 @@ export default function({ powerEnergyDomains, domainPowerEnergy, isEnergyType, - isWemOrAu + isWemOrAu, + regionId }) { /** @@ -142,6 +144,15 @@ export default function({ return obj }) + // nulled out EI data before jan 2009 and only for nem regions (exclude nem, au and wem) + if (regionId !== 'nem' && regionId !== 'au' && regionId !== 'wem') { + dataset.forEach(d => { + if (isBefore(d.date, new Date(2009, 0, 1))) { + d._emissionIntensity = null + } + }) + } + const sumEmissionsMinusLoads = dataset.reduce( (prev, cur) => prev + cur._totalEmissionsMinusLoads, 0 @@ -160,6 +171,8 @@ export default function({ // console.log(`emissions intensity... ${averageEmissions}`, hasSource, sumEmissionsMinusLoads, dataset.length, powerEnergyDomains, emissionsDomains) } + + return { emissionIntensityData: dataset, averageEmissionIntensity: calAverage(isEnergyType, isWemOrAu, dataset), diff --git a/data/pages/page-stripes.js b/data/pages/page-stripes.js index 26c59372..0588e8ff 100644 --- a/data/pages/page-stripes.js +++ b/data/pages/page-stripes.js @@ -33,7 +33,8 @@ export async function getRegionCompareData(dataset, regions, interval, filterPer domainDemandMarketValue: rData.domainDemandMarketValue, domainInflation: rData.inflation ? rData.inflation.domain : null, topUp: false, - bucket + bucket, + regionId: region.id }) regionData.push({ @@ -89,7 +90,8 @@ export async function getRegionStripesData(fetchFunc, regions) { domainDemandMarketValue: rData.domainDemandMarketValue, domainInflation: rData.inflation ? rData.inflation.domain : null, topUp: false, - bucket: allBucket + bucket: allBucket, + regionId: region.id }) }) }) @@ -98,7 +100,7 @@ export async function getRegionStripesData(fetchFunc, regions) { return regionData } -function transformStripesDataset(d) { +function transformStripesDataset(d, regionId) { const data = [] getEachYearOfInterval.forEach((year, yIndex) => { const yearInt = parseInt(year) @@ -121,7 +123,8 @@ function transformStripesDataset(d) { domainDemandMarketValue: d.domainDemandMarketValue, domainInflation: d.inflation ? d.inflation.domain : null, topUp: true, - bucket: getEachDayOfInterval(yearInt) + bucket: getEachDayOfInterval(yearInt), + regionId }) }) } @@ -141,7 +144,7 @@ export function getYearlyStripesData(fetchFunc, regions) { resolve({ region: r.label, regionId: r.id, - yearlyData: transformStripesDataset(d) + yearlyData: transformStripesDataset(d, r.id) }) }) }) diff --git a/data/transform/energy-to-stripe-metrics.js b/data/transform/energy-to-stripe-metrics.js index 3fbd0360..4abff570 100644 --- a/data/transform/energy-to-stripe-metrics.js +++ b/data/transform/energy-to-stripe-metrics.js @@ -1,6 +1,7 @@ import startOfQuarter from 'date-fns/startOfQuarter' import differenceInDays from 'date-fns/differenceInDays' import addDays from 'date-fns/addDays' +import isBefore from 'date-fns/isBefore' import { BATTERY_DISCHARGING } from '@/constants/energy-fuel-techs/group-detailed.js' export default function ({ @@ -16,7 +17,8 @@ export default function ({ domainDemandMarketValue, domainInflation, topUp, - bucket + bucket, + regionId }) { if (bucket) { const data = bucket.map((d) => { @@ -31,7 +33,8 @@ export default function ({ domainTemperature, domainPrice, domainMarketValue, - domainInflation + domainInflation, + regionId ) }) @@ -49,7 +52,8 @@ export default function ({ domainTemperature, domainPrice, domainMarketValue, - domainInflation + domainInflation, + regionId ) }) @@ -104,7 +108,8 @@ function updateMetricObject( domainTemperature, domainPrice, domainMarketValue, - domainInflation + domainInflation, + regionId ) { if (d) { let totalEmissions = 0, @@ -155,6 +160,7 @@ function updateMetricObject( } }) + // deprecated const totalPowerEnergyMinusBatteryDischarging = totalPowerEnergy - totalBatteryDischarging @@ -196,7 +202,17 @@ function updateMetricObject( } } - obj.carbonIntensity = isValidEI ? ei : null + function setCarbonIntensity(ei, isValidEI) { + // nulled out EI data before jan 2009 and only for nem regions (exclude nem, au and wem) + const affectedRegions = regionId !== 'nem' && regionId !== 'au' && regionId !== 'wem' + if (affectedRegions && isBefore(d.date, new Date(2009, 0, 1))) { + return null + } + + return isValidEI ? ei : null + } + + obj.carbonIntensity = setCarbonIntensity(ei, isValidEI) obj.renewablesProportion = d._totalDemandRenewablesPercentage < 0 ? 0 diff --git a/package-lock.json b/package-lock.json index 023b1081..3b68ecd5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "opennem", - "version": "4.22.4", + "version": "4.22.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "opennem", - "version": "4.22.4", + "version": "4.22.5", "dependencies": { "@nuxtjs/axios": "^5.0.0", "@nuxtjs/proxy": "^2.0.1", diff --git a/package.json b/package.json index acc9fb82..bf52705a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "opennem", - "version": "4.22.4", + "version": "4.22.5", "description": "An Open Platform for National Electricity Market Data", "author": "Steven Tan", "private": true, diff --git a/pages/energy/_region/export.vue b/pages/energy/_region/export.vue index 46ba20c3..8a77b428 100644 --- a/pages/energy/_region/export.vue +++ b/pages/energy/_region/export.vue @@ -224,7 +224,8 @@ export default { powerEnergyDomains: this.powerEnergyDomains, domainPowerEnergy: this.domainPowerEnergy, isEnergyType: this.isEnergyType, - isWemOrAu: this.isWemOrAu + isWemOrAu: this.isWemOrAu, + regionId: this.regionId }) }, diff --git a/pages/energy/_region/index.vue b/pages/energy/_region/index.vue index 5f3b5229..afde8d7b 100644 --- a/pages/energy/_region/index.vue +++ b/pages/energy/_region/index.vue @@ -563,7 +563,8 @@ export default { powerEnergyDomains: this.powerEnergyDomains, domainPowerEnergy: this.domainPowerEnergy, isEnergyType: this.isEnergyType, - isWemOrAu: this.isWemOrAu + isWemOrAu: this.isWemOrAu, + regionId: this.regionId }) }, diff --git a/store/energy/emissions.js b/store/energy/emissions.js index 7c256bf3..fb4cb4a6 100644 --- a/store/energy/emissions.js +++ b/store/energy/emissions.js @@ -40,7 +40,8 @@ export const actions = { powerEnergyDomains, domainPowerEnergy, isEnergyType, - isWemOrAu + isWemOrAu, + regionId } ) { @@ -56,7 +57,8 @@ export const actions = { powerEnergyDomains, domainPowerEnergy, isEnergyType, - isWemOrAu + isWemOrAu, + regionId }) commit('emissionIntensityData', emissionIntensityData)