roi.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. (async function () {
  2. const response = await fetch('roi.json');
  3. const profits: Profit[] = await response.json();
  4. const formatDecimal = new Intl.NumberFormat(undefined,
  5. {maximumFractionDigits: 2, maximumSignificantDigits: 6, roundingPriority: 'lessPrecision'}).format;
  6. const formatWhole = new Intl.NumberFormat(undefined, {maximumFractionDigits: 0}).format;
  7. const tbody = document.querySelector('tbody')!;
  8. for (const p of profits) {
  9. const tr = document.createElement('tr');
  10. tr.innerHTML = `
  11. <td>${p.output}</td>
  12. <td>${p.expertise}</td>
  13. <td>${formatDecimal(p.profit_per_area)}</td>
  14. <td>${formatWhole(p.capex)}</td>
  15. <td>${formatWhole(p.cost_per_day)}</td>
  16. <td>${formatDecimal(p.logistics_per_area)}</td>
  17. <td>${formatWhole(p.output_per_day)}<br>${formatWhole(p.average_traded_7d)}</td>
  18. `;
  19. const output = tr.querySelector('td')!;
  20. output.title = p.recipe;
  21. tbody.appendChild(tr);
  22. }
  23. })();
  24. interface Profit {
  25. output: string
  26. recipe: string
  27. expertise: string
  28. profit_per_area: number
  29. capex: number
  30. cost_per_day: number
  31. logistics_per_area: number
  32. output_per_day: number
  33. average_traded_7d: number
  34. }