Skip to content

Conversation

@JGreenlee
Copy link
Collaborator

@JGreenlee JGreenlee commented Aug 19, 2024

Agg metrics were broken because we iterated over an array using "for .. in ..", which has unexpected consequences.

"for .. in .." iterates over all the keys in an object. Arrays are a type of object, where the elements of the array are keyed by index. But they can have other properties too (like their methods) so when you use "for .. in .." you get everything.

In general arrays should be iterated with "for .. of .." or ".forEach", but in this specific case I noticed we are basically just copying an array with some values substituted, so I opted for ".map".

Note: There is repeated code across these two files that should obviously be refactored later

Agg metrics were broken because we iterated over an array using "for .. in ..", which has unexpected consequences.

"for .. in .." iterates over all the keys in an object. Arrays are a type of object, where the elements of the array are keyed by index.
But they can have other properties too (like their methods) so when you use "for .. in .." you get everything.

In general arrays should be iterated with "for .. of .." or ".forEach", but in this specific case I noticed we are basically just copying an array with some values substituted, so I opted for ".map".

Note: There is repeated code across these two files that should obviously be refactored later, but for now I just want to get this bug fixed.
@codecov
Copy link

codecov bot commented Aug 19, 2024

Codecov Report

Attention: Patch coverage is 0% with 8 lines in your changes missing coverage. Please review.

Project coverage is 30.10%. Comparing base (52b0fb9) to head (e6aea4e).
Report is 3 commits behind head on master.

Files Patch % Lines
www/js/metrics/CarbonFootprintCard.tsx 0.00% 4 Missing ⚠️
www/js/metrics/CarbonTextCard.tsx 0.00% 4 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1167      +/-   ##
==========================================
+ Coverage   30.09%   30.10%   +0.01%     
==========================================
  Files         118      118              
  Lines        5203     5201       -2     
  Branches     1113     1162      +49     
==========================================
  Hits         1566     1566              
+ Misses       3635     3631       -4     
- Partials        2        4       +2     
Flag Coverage Δ
unit 30.10% <0.00%> (+0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Coverage Δ
www/js/metrics/CarbonFootprintCard.tsx 0.00% <0.00%> (ø)
www/js/metrics/CarbonTextCard.tsx 0.00% <0.00%> (ø)

... and 2 files with indirect coverage changes

@JGreenlee
Copy link
Collaborator Author

JGreenlee commented Aug 24, 2024

By the way, the reason this issue emerged out of the blue was a bug in Transcrypt.

Although using "for .. in .." on an array is less than ideal, the code was working fine like that for several releases – until we added e-mission-common which includes Transcrypt.

I submitted a PR to Transcrypt that would address this:
TranscryptOrg/Transcrypt#879

@shankari shankari merged commit 1f1731d into e-mission:master Aug 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

2 participants