@@ -8,8 +8,10 @@ import type {
88 IF ,
99 ImpactFactors ,
1010 ImpactFactorsKeys ,
11- UnorderedImpactFactors
11+ UnorderedImpactFactors ,
12+ GCLC
1213} from "../../lib/types/gpu" ;
14+ import { isNotExcludedCriterion } from "$lib/utils" ;
1315import Average from "../../data/gpu/average_model.json" with { type : "json" } ;
1416import { PlanetBoundaries } from "$lib/types/enums" ;
1517
@@ -217,15 +219,15 @@ export function computeTotalsPerLifeCycleStep(
217219 splitProperty [ lastIndex ] === "c" || splitProperty [ lastIndex ] === "nc"
218220 ? "CTUh_" . concat ( splitProperty [ lastIndex ] )
219221 : ( splitProperty [ lastIndex ] as IF ) ;
220- totalsPerLifeCycleStep [ endOfLife ] [ criteria ] ! = sum as number ;
222+ totalsPerLifeCycleStep [ endOfLife ] [ criteria as IF ] ! = sum as number ;
221223 } else {
222224 const splitProperty = property . split ( "_" ) ;
223225 const lifeCycleStep = splitProperty [ 0 ] as keyof GraphicsCardLifeCycle ;
224226 const criteria =
225227 splitProperty [ 2 ] === "c" || splitProperty [ 2 ] === "nc"
226228 ? "CTUh_" . concat ( splitProperty [ 2 ] )
227229 : ( splitProperty [ 1 ] as IF ) ;
228- totalsPerLifeCycleStep [ lifeCycleStep ] [ criteria ] ! = sum as number ;
230+ totalsPerLifeCycleStep [ lifeCycleStep ] [ criteria as IF ] ! = sum as number ;
229231 }
230232 } ) ;
231233
@@ -293,38 +295,26 @@ export function tidy(card: GraphicsCardImpactFactors): TidyImpactFactor[] {
293295export function tidyTotals ( impactFactors : GraphicsCardLifeCycle ) : TidyImpactFactor [ ] {
294296 const lifeCycleSteps = Object . keys ( impactFactors ) . filter ( ( key ) => typeof key === "string" ) ;
295297 const tidiedImpactFactors = lifeCycleSteps . flatMap ( ( lifeCycleStep ) => {
296- const criterias = Object . keys ( impactFactors [ lifeCycleStep ] ) . filter (
298+ const criterias = Object . keys ( impactFactors [ lifeCycleStep as GCLC ] ) . filter (
297299 ( key ) => typeof key === "string"
298300 ) ;
299301 return criterias . map ( ( criteria ) => {
300302 return {
301303 impactCriterion : criteria ,
302- lifeCycleStep,
303- value : impactFactors [ lifeCycleStep ] [ criteria ]
304+ lifeCycleStep : lifeCycleStep
305+ . replace ( "endOfLife" , "End-of-life" )
306+ . replace ( / ^ ./ , ( char ) => char . toUpperCase ( ) ) ,
307+ value : impactFactors [ lifeCycleStep as GCLC ] [ criteria as IF ] !
304308 } ;
305309 } ) ;
306310 } ) ;
307311 return tidiedImpactFactors ;
308312}
309313
310- function isNotExcludedCriterion ( value : string ) {
311- if (
312- value === "GWPb" ||
313- value === "GWPf" ||
314- value === "GWPlu" ||
315- value === "LU" ||
316- value === "MIPS" ||
317- value === "DEEE" ||
318- value === "TPE"
319- ) {
320- return false ;
321- }
322- return true ;
323- }
324314export function computePlanetBoundaries ( impactFactors : ImpactFactors ) : ImpactFactors {
325315 const ignoredCriteria = [ "GWPb" , "GWPf" , "GWPlu" , "LU" , "MIPS" , "DEEE" , "TPE" ] ;
326316 const planetBoundaries = Object . assign ( { } , impactFactors ) ;
327- ignoredCriteria . forEach ( ( criterion ) => delete planetBoundaries [ criterion ] ) ;
317+ ignoredCriteria . forEach ( ( criterion ) => delete planetBoundaries [ criterion as IF ] ) ;
328318
329319 const criteria = Object . keys ( impactFactors ) . filter ( isNotExcludedCriterion ) ;
330320
@@ -384,10 +374,10 @@ export function tidyPlanetBoundaries(impactFactors: ImpactFactors): TidyRatio[]
384374 ) ;
385375 const tidiedFactors = criteria . flatMap ( ( criterion ) => {
386376 const ratio : TidyRatio = {
387- totalImpactFactor : impactFactors [ criterion ] ,
377+ totalImpactFactor : impactFactors [ criterion as IF ] ! ,
388378 impactCriterion : criterion ,
389- ratioNumber : planetBoundariesValues [ criterion ] ,
390- ratioPercentage : ( planetBoundariesValues [ criterion ] / totalPerInhabitant ) * 100
379+ ratioNumber : planetBoundariesValues [ criterion as IF ] ! ,
380+ ratioPercentage : ( planetBoundariesValues [ criterion as IF ] ! / totalPerInhabitant ) * 100
391381 } ;
392382 return ratio ;
393383 } ) ;
0 commit comments