1
+ import _includes from 'lodash/includes'
1
2
import * as FT from '@/constants/energy-fuel-techs/group-detailed.js'
2
3
3
4
function calAverage ( isEnergyType , isWemOrAu , dataset ) {
@@ -34,31 +35,40 @@ export default function({
34
35
isEnergyType,
35
36
isWemOrAu
36
37
} ) {
37
-
38
38
39
- const addUp = ( data , domain , hasSource ) => {
40
- // if (isCalculateByGeneration) {
41
- // // only if it's a source AND it's not imports
42
- // if (domain.category === 'source' && domain.fuelTech !== 'imports') {
43
- // return data[domain.id] || 0
44
- // }
45
- // } else {
46
- // // it's not a load OR it's exports
47
- // if (domain.category !== 'load' || domain.fuelTech === 'exports') {
48
- // return Math.abs(data[domain.id]) || 0
49
- // }
50
- // }
51
-
52
- if ( hasSource ) {
53
- // only if it's a source AND it's not imports
54
- if ( domain . category === 'source' && domain . fuelTech !== 'imports' ) {
39
+ /**
40
+ when viewing generation:
41
+ sum(all emissions from visible sources except imports) / energy from all of the above
42
+
43
+ when viewing consumption:
44
+ sum(all emissions from visible sources) minus exports / energy from all of the above
45
+ */
46
+ const getEmissions = ( data , domain ) => {
47
+ if ( isCalculateByGeneration ) {
48
+ /** Generation */
49
+ // return value if category is source and not imports
50
+ if ( domain . category === 'source' && ! _includes ( domain . id , 'imports' ) ) {
55
51
return data [ domain . id ] || 0
56
52
}
57
- return 0
58
53
} else {
59
- // if all the selected domains are loads
60
- return Math . abs ( data [ domain . id ] ) || 0
54
+ /** Consumption */
55
+ // return exports as negative value
56
+ if ( _includes ( domain . id , 'exports' ) ) {
57
+ return - data [ domain . id ] || 0
58
+ }
59
+
60
+ // return value if category is source
61
+ if ( domain . category === 'source' ) {
62
+ return data [ domain . id ] || 0
63
+ }
61
64
}
65
+
66
+ // else return 0
67
+ return 0
68
+ }
69
+
70
+ const getPowerEnergy = ( data , domain ) => {
71
+ return data [ domain . id ] || 0
62
72
}
63
73
64
74
const batteryDischarging = domainPowerEnergy . find (
@@ -79,6 +89,7 @@ export default function({
79
89
time : d . time ,
80
90
_isIncompleteBucket : d . _isIncompleteBucket
81
91
}
92
+
82
93
let totalEmissions = 0 ,
83
94
totalEmissionsMinusLoads = 0 ,
84
95
totalPowerEnergy = 0 ,
@@ -89,15 +100,15 @@ export default function({
89
100
}
90
101
91
102
emissionsDomains . forEach ( ( domain ) => {
92
- totalEmissions += addUp ( d , domain , hasSource )
103
+ totalEmissions += getEmissions ( d , domain )
93
104
94
105
if ( domain . category !== 'load' ) {
95
- totalEmissionsMinusLoads += addUp ( d , domain , hasSource )
106
+ totalEmissionsMinusLoads += getEmissions ( d , domain )
96
107
}
97
108
} )
98
109
99
110
powerEnergyDomains . forEach ( ( domain ) => {
100
- totalPowerEnergy += addUp ( d , domain , hasSource )
111
+ totalPowerEnergy += getPowerEnergy ( d , domain )
101
112
} )
102
113
103
114
const totalPowerEnergyMinusBatteryDischarging =
@@ -120,7 +131,7 @@ export default function({
120
131
ei = ei * 12
121
132
}
122
133
}
123
-
134
+
124
135
const isValidEI = Number . isFinite ( ei )
125
136
126
137
if ( ei < 0 || ei > 1500 ) {
@@ -141,7 +152,13 @@ export default function({
141
152
)
142
153
const averageEmissions = hasSource
143
154
? sumEmissionsMinusLoads / dataset . length
144
- : sumEmissions / dataset . length
155
+ : Math . abs ( sumEmissions / dataset . length )
156
+
157
+ if ( averageEmissions < 0 ) {
158
+ // console.log(`averageEmissions < 0: ${averageEmissions}`)
159
+ } else {
160
+ // console.log(`emissions intensity... ${averageEmissions}`, hasSource, sumEmissionsMinusLoads, dataset.length, powerEnergyDomains, emissionsDomains)
161
+ }
145
162
146
163
return {
147
164
emissionIntensityData : dataset ,
0 commit comments