1 import { City } from "../repository/city";
4 foodUsagePerTick: number;
5 foodProductionPerTick: number;
6 energyUsagePerTick: number;
7 energyProductionPerTick: number;
10 function renderUnreadBadge(count: number): string {
11 return `<span class="badge danger">${count}</span>`;
15 function mailLink(unreadCount: number): string {
17 <a href="#" hx-target="#main" hx-get="/poll/mailroom" hx-trigger="click" id="mail-link" hx-swap-oob="true">Mail ${unreadCount > 0 ? renderUnreadBadge(unreadCount) : ''}</a>
21 export function topbar(city: City & Usage, unreadMail: number): string {
22 const foodRateOfChange = city.foodProductionPerTick - city.foodUsagePerTick;
23 const energyRateOfChange = city.energyProductionPerTick - city.energyUsagePerTick;
25 ${mailLink(unreadMail)}
26 <div class="col" id="info-bar" hx-swap-oob="true">
28 <b data-augmented-ui="all-hex border" title="Credits">₡</b>
29 <span class="text">${city.credits.toLocaleString()}</span>
32 <b data-augmented-ui="all-hex border" title="Alloys">A</b>
33 <span class="text">${city.alloys.toLocaleString()}</span>
36 <b data-augmented-ui="all-hex border" title="Food">F</b>
38 ${city.food.toLocaleString()}
39 <span class="rate-of-change ${foodRateOfChange < 0 ? 'danger-text': 'success-text'}">${foodRateOfChange.toLocaleString()}</span>
43 <b data-augmented-ui="all-hex border" title="Energy">E</b>
45 ${city.energy.toLocaleString()}
46 <span class="rate-of-change ${energyRateOfChange < 0 ? 'danger-text': 'success-text'}">${energyRateOfChange.toLocaleString()}</span>