@ -35,37 +35,39 @@ const displayCarbonUsage = async (apiKey, region) => {
try {
await axios
. get ( 'https://api.co2signal.com/v1/latest' , {
params : {
countryCode : region ,
} ,
headers : {
//please get your own token from CO2Signal https://www.co2signal.com/
'auth-token' : apiKey ,
} ,
params : { countryCode : region } ,
headers : { 'auth-token' : apiKey } ,
} )
. then ( ( response ) => {
let CO2 = Math . floor ( response . data . data . carbonIntensity ) ;
const data = response ? . data ? . data ;
// ✅ Validate required data before using
if ( data ? . carbonIntensity == null || data ? . fossilFuelPercentage == null ) {
throw new Error ( 'Missing carbon intensity or fossil fuel data' ) ;
}
let CO2 = Math . floor ( data . carbonIntensity ) ;
calculateColor ( CO2 ) ;
loading . style . display = 'none' ;
form . style . display = 'none' ;
myregion . textContent = region ;
usage . textContent =
Math . round ( response. data . data. carbonIntensity ) + ' grams (grams C02 emitted per kilowatt hour)' ;
Math . round ( data. carbonIntensity ) + ' grams (grams C02 emitted per kilowatt hour)' ;
fossilfuel . textContent =
response. data . data. fossilFuelPercentage . toFixed ( 2 ) +
data. fossilFuelPercentage . toFixed ( 2 ) +
'% (percentage of fossil fuels used to generate electricity)' ;
results . style . display = 'block' ;
} ) ;
} catch ( error ) {
console . log( error ) ;
console . warn( 'Data fetch failed:' , error . message ) ;
loading . style . display = 'none' ;
results . style . display = 'none' ;
errors . textContent = 'Sorry, we have no data for the region you have requested .';
errors . textContent = 'Sorry, data unavailable for the selected region .';
}
} ;
// set up api key and region
const setUpUser = async ( apiKey , region ) => {
localStorage . setItem ( 'apiKey' , apiKey ) ;