4444
4545class DemoProvider
4646{
47+ /** @var array<string, array> $impact_values Embodied and usage impact values*/
4748 private static array $ impact_values = [
48- 'gwp ' => 616000000 ,
49- 'adp ' => 12.748 ,
50- 'pe ' => 491000000 ,
51- 'gwppb ' => null ,
52- 'gwppf ' => null ,
53- 'gwpplu ' => null ,
54- 'ir ' => null ,
55- 'lu ' => -101 ,
56- 'odp ' => null ,
57- 'pm ' => null ,
58- 'pocp ' => null ,
59- 'wu ' => null ,
60- 'mips ' => null ,
61- 'adpe ' => null ,
62- 'adpf ' => null ,
63- 'ap ' => null ,
64- 'ctue ' => null ,
65- // 'ctuh_c' => null,
66- // 'ctuh_nc' => null,
67- 'epf ' => null ,
68- 'epm ' => null ,
69- 'ept ' => null ,
49+ 'gwp ' => [ 616000000 , null ] ,
50+ 'adp ' => [ 12.748 , null ] ,
51+ 'pe ' => [ 491000000 , null ] ,
52+ 'gwppb ' => [ null , null ] ,
53+ 'gwppf ' => [ null , null ] ,
54+ 'gwpplu ' => [ null , null ] ,
55+ 'ir ' => [ null , null ] ,
56+ 'lu ' => [ -101 , null ] ,
57+ 'odp ' => [ null , null ] ,
58+ 'pm ' => [ null , null ] ,
59+ 'pocp ' => [ null , null ] ,
60+ 'wu ' => [ null , null ] ,
61+ 'mips ' => [ null , null ] ,
62+ 'adpe ' => [ null , null ] ,
63+ 'adpf ' => [ null , null ] ,
64+ 'ap ' => [ null , null ] ,
65+ 'ctue ' => [ null , null ] ,
66+ // 'ctuh_c' => [ null, null] ,
67+ // 'ctuh_nc' => [ null, null] ,
68+ 'epf ' => [ null , null ] ,
69+ 'epm ' => [ null , null ] ,
70+ 'ept ' => [ null , null ] ,
7071 ];
7172
7273 public static function getUsageAbioticDepletion (array $ params = [], array $ crit = []): array
@@ -400,8 +401,8 @@ public static function getUsageCarbonEmission(array $params = []): array
400401 ];
401402 }
402403
403- /**
404- * Total embodied abiotic depletion potential in antimony equivalent
404+ /**
405+ * Get the value of an impact criteria for the embodied scope
405406 *
406407 * @param array $params
407408 * @param array $crit
@@ -420,7 +421,87 @@ public static function getImpactOfEmbodiedCriteria(string $impact_type, array $p
420421 $ crit ['itemtype ' ] = array_intersect ($ crit ['itemtype ' ], PLUGIN_CARBON_TYPES );
421422 }
422423
423- $ value = self ::$ impact_values [$ impact_type ];
424+ $ value = self ::$ impact_values [$ impact_type ][0 ];
425+ if ($ value === null ) {
426+ $ value = 'N/A ' ;
427+ } else {
428+ $ value = Toolbox::getHumanReadableValue (
429+ $ value ,
430+ Type::getImpactUnit ($ impact_type )
431+ );
432+ }
433+
434+ return [
435+ 'number ' => $ value ,
436+ 'label ' => $ params ['label ' ],
437+ 'icon ' => $ params ['icon ' ],
438+ 'tooltip ' => Type::getCriteriaTooltip ($ impact_type ),
439+ 'pictogram_file ' => Type::getCriteriaPictogram ($ impact_type ),
440+ 'doc_url ' => Type::getCriteriaInfoLink ($ impact_type ),
441+ ];
442+ }
443+
444+ /**
445+ * Get the value of an impact criteria for the usage scope
446+ *
447+ * @param array $params
448+ * @param array $crit
449+ * @return array
450+ */
451+ public static function getImpactOfUsageCriteria (string $ impact_type , array $ params = [], array $ crit = []): array
452+ {
453+ $ default_params = [
454+ 'label ' => Type::getEmbodiedImpactLabel ($ impact_type ),
455+ 'icon ' => Type::getCriteriaIcon ($ impact_type ),
456+ ];
457+ $ params = array_merge ($ default_params , $ params );
458+ if (count ($ crit ['itemtype ' ] ?? []) === 0 ) {
459+ $ crit ['itemtype ' ] = PLUGIN_CARBON_TYPES ;
460+ } else {
461+ $ crit ['itemtype ' ] = array_intersect ($ crit ['itemtype ' ], PLUGIN_CARBON_TYPES );
462+ }
463+
464+ $ value = self ::$ impact_values [$ impact_type ][1 ];
465+ if ($ value === null ) {
466+ $ value = 'N/A ' ;
467+ } else {
468+ $ value = Toolbox::getHumanReadableValue (
469+ $ value ,
470+ Type::getImpactUnit ($ impact_type )
471+ );
472+ }
473+
474+ return [
475+ 'number ' => $ value ,
476+ 'label ' => $ params ['label ' ],
477+ 'icon ' => $ params ['icon ' ],
478+ 'tooltip ' => Type::getCriteriaTooltip ($ impact_type ),
479+ 'pictogram_file ' => Type::getCriteriaPictogram ($ impact_type ),
480+ 'doc_url ' => Type::getCriteriaInfoLink ($ impact_type ),
481+ ];
482+ }
483+
484+ /**
485+ * Get the value of an impact criteria for the embodied + usage scopes
486+ *
487+ * @param array $params
488+ * @param array $crit
489+ * @return array
490+ */
491+ public static function getImpactOfEmbodiedAndUsageCriteria (string $ impact_type , array $ params = [], array $ crit = []): array
492+ {
493+ $ default_params = [
494+ 'label ' => Type::getEmbodiedImpactLabel ($ impact_type ),
495+ 'icon ' => Type::getCriteriaIcon ($ impact_type ),
496+ ];
497+ $ params = array_merge ($ default_params , $ params );
498+ if (count ($ crit ['itemtype ' ] ?? []) === 0 ) {
499+ $ crit ['itemtype ' ] = PLUGIN_CARBON_TYPES ;
500+ } else {
501+ $ crit ['itemtype ' ] = array_intersect ($ crit ['itemtype ' ], PLUGIN_CARBON_TYPES );
502+ }
503+
504+ $ value = self ::$ impact_values [$ impact_type ][1 ];
424505 if ($ value === null ) {
425506 $ value = 'N/A ' ;
426507 } else {
0 commit comments