|
64 | 64 | ); |
65 | 65 | } |
66 | 66 |
|
| 67 | + function checkDataAvailability() { |
| 68 | + let selectedClass = document.querySelector('#asset_class_selector').value; |
| 69 | + let selectedSector = document.querySelector('#sector_selector').value; |
| 70 | +
|
| 71 | + let filteredTechmixData = techmix_data |
| 72 | + .filter((d) => d.asset_class == selectedClass) |
| 73 | + .filter((d) => d.ald_sector == selectedSector); |
| 74 | +
|
| 75 | + let filteredVolTrajData = traj_data |
| 76 | + .filter((d) => d.asset_class == selectedClass) |
| 77 | + .filter((d) => d.ald_sector == selectedSector); |
| 78 | +
|
| 79 | + let filteredEmissionsData = emissions_data |
| 80 | + .filter((d) => d.asset_class == selectedClass) |
| 81 | + .filter((d) => d.ald_sector == selectedSector); |
| 82 | +
|
| 83 | + let check = [filteredTechmixData, filteredVolTrajData, filteredEmissionsData].some(x => x.length != 0) |
| 84 | +
|
| 85 | + return(check) |
| 86 | + }; |
| 87 | +
|
| 88 | + function handleNoDataForAssetSectorCombination() { |
| 89 | + document.querySelector('#analysis-content').classList.add('hidden'); |
| 90 | + document.querySelector('#alert-message').classList.remove('hidden'); |
| 91 | + }; |
| 92 | +
|
| 93 | + function showAnalysisHideAlert() { |
| 94 | + document.querySelector('#analysis-content').classList.remove('hidden'); |
| 95 | + document.querySelector('#alert-message').classList.add('hidden'); |
| 96 | + }; |
| 97 | +
|
67 | 98 | function updateScenarioSourceSelector() { |
68 | 99 | let selectedSource = document.querySelector('#scenario_source_selector').value; |
69 | 100 |
|
|
214 | 245 | document.querySelector('#content-landing-page').classList.toggle('hidden'); |
215 | 246 | document.querySelector('#content-sector-view').classList.toggle('hidden'); |
216 | 247 | fetchExposureStats(); |
217 | | - fetchTrajectoryAlignment(); |
218 | | - fetchTechmix(); |
219 | | - fetchEmissionIntensityPlot(); |
| 248 | + if (checkDataAvailability()) { |
| 249 | + showAnalysisHideAlert(); |
| 250 | + fetchTrajectoryAlignment(); |
| 251 | + fetchTechmix(); |
| 252 | + fetchEmissionIntensityPlot(); |
| 253 | + } else { |
| 254 | + handleNoDataForAssetSectorCombination(); |
| 255 | + }; |
220 | 256 | }); |
221 | 257 |
|
222 | 258 | sector_selector.addEventListener('change', function () { |
223 | 259 | fetchExposureStats(); |
224 | | - updateScenarioSourceSelector(); |
225 | | - updateScenarioSelector(); |
226 | | - updateEquityMarketSelector(); |
227 | | - updateBenchmarkSelector(); |
228 | | - fetchTrajectoryAlignment(); |
229 | | - fetchTechmix(); |
230 | | - fetchEmissionIntensityPlot(); |
| 260 | + if (checkDataAvailability()) { |
| 261 | + showAnalysisHideAlert(); |
| 262 | + updateScenarioSourceSelector(); |
| 263 | + updateScenarioSelector(); |
| 264 | + updateEquityMarketSelector(); |
| 265 | + updateBenchmarkSelector(); |
| 266 | + fetchTrajectoryAlignment(); |
| 267 | + fetchTechmix(); |
| 268 | + fetchEmissionIntensityPlot(); |
| 269 | + } else { |
| 270 | + handleNoDataForAssetSectorCombination(); |
| 271 | + }; |
231 | 272 | }); |
232 | 273 |
|
233 | 274 | asset_class_selector.addEventListener('change', function () { |
234 | 275 | fetchExposureStats(); |
235 | | - updateScenarioSourceSelector(); |
236 | | - updateScenarioSelector(); |
237 | | - updateAllocationMethodSelector(); |
238 | | - updateEquityMarketSelector(); |
239 | | - updateBenchmarkSelector(); |
240 | | - fetchTrajectoryAlignment(); |
241 | | - fetchTechmix(); |
242 | | - fetchEmissionIntensityPlot(); |
| 276 | + if (checkDataAvailability()) { |
| 277 | + showAnalysisHideAlert(); |
| 278 | + updateScenarioSourceSelector(); |
| 279 | + updateScenarioSelector(); |
| 280 | + updateAllocationMethodSelector(); |
| 281 | + updateEquityMarketSelector(); |
| 282 | + updateBenchmarkSelector(); |
| 283 | + fetchTrajectoryAlignment(); |
| 284 | + fetchTechmix(); |
| 285 | + fetchEmissionIntensityPlot(); |
| 286 | + } else { |
| 287 | + handleNoDataForAssetSectorCombination(); |
| 288 | + }; |
243 | 289 | }); |
244 | 290 | const benchmark_selector = document.querySelector('#benchmark_selector'); |
245 | 291 | benchmark_selector.addEventListener('change', function () { |
|
273 | 319 | setValuesSectorSelectors(); |
274 | 320 | setValuesAssetClassSelector(); |
275 | 321 | fetchExposureStats(); |
276 | | - updateScenarioSourceSelector(); |
277 | | - updateScenarioSelector(); |
278 | | - updateAllocationMethodSelector(); |
279 | | - updateEquityMarketSelector(); |
280 | | - updateBenchmarkSelector(); |
281 | | - addEventListeners(); |
282 | | - fetchTechmix(); |
283 | | - fetchTrajectoryAlignment(); |
284 | | - fetchEmissionIntensityPlot(); |
| 322 | + if (checkDataAvailability()) { |
| 323 | + showAnalysisHideAlert(); |
| 324 | + updateScenarioSourceSelector(); |
| 325 | + updateScenarioSelector(); |
| 326 | + updateAllocationMethodSelector(); |
| 327 | + updateEquityMarketSelector(); |
| 328 | + updateBenchmarkSelector(); |
| 329 | + addEventListeners(); |
| 330 | + fetchTechmix(); |
| 331 | + fetchTrajectoryAlignment(); |
| 332 | + fetchEmissionIntensityPlot(); |
| 333 | + } else { |
| 334 | + handleNoDataForAssetSectorCombination(); |
| 335 | + }; |
285 | 336 | }); |
286 | 337 | </script> |
287 | 338 |
|
|
343 | 394 | <div class="exposure-stats" id="exposure-stats"></div> |
344 | 395 | </div> |
345 | 396 | </div> |
346 | | - <div class="analysis-content grid sm:grid-cols-12 p-4 bg-teal-300"> |
| 397 | + <div class="analysis-content grid sm:grid-cols-12 p-4 bg-teal-300" id="analysis-content"> |
347 | 398 | <div class="analysis-plots sm:col-span-10 p-4 bg-yellow-300"> |
348 | 399 | <div class="plot-trajectory-box grid p-4 bg-orange-300"> |
349 | 400 | <div class="trajectory-explanation bg-cyan-300"> |
|
437 | 488 | </div> |
438 | 489 | </div> |
439 | 490 |
|
| 491 | +<div class="alert-message bg-blue-100 border-t border-b border-blue-500 text-blue-700 px-4 py-3 hidden" role="alert" id="alert-message"> |
| 492 | + <p class="font-bold">No data found for this asset class / sector combination</p> |
| 493 | + <p class="text-sm">Please make a different selecion.</p> |
| 494 | +</div> |
| 495 | + |
440 | 496 | <style> |
441 | 497 | .hide { |
442 | 498 | display: none; |
|
0 commit comments