import _ from "lodash";
import { CityWithLocation } from "../repository/city";
-import { UnitTrainingQueue } from "../repository/training-queue";
+import { UnitTrainingQueueWithName } from "../repository/training-queue";
import { Unit } from "../repository/unit";
+import { DateTime } from "luxon";
-function progressBar(current, max): string {
+function progressBar(current: number, max: number): string {
const percent = Math.ceil((current/max) * 100);
return `
<div class="progress-bar unit-training" style="background: background: var(--green-bg);
`;
}
-export function renderUnitTraining(city: CityWithLocation, units: Unit[], trainingQueues: UnitTrainingQueue[]): string {
+export function renderUnitTraining(city: CityWithLocation, units: Unit[], trainingQueues: UnitTrainingQueueWithName[]): string {
const unit = _.keyBy(units, 'slug');
let html = `
<div hx-trigger="reload-unit-training, every 600s" hx-get="/poll/unit-training">
${trainingQueues.sort((a, b) => {
return a.due - b.due;
}).map(queue => {
- const now = Date.now() - queue.created;
- const duration = queue.due - queue.created;
+ const created = DateTime.fromMillis(queue.created);
+ const due = DateTime.fromMillis(queue.due);
+ const now = Date.now() - queue.created;
+ const duration = queue.due - queue.created;
- return `
- <tr>
- <td>${queue.unit_type}</td>
- <td>${queue.amount}</td>
- <td>${progressBar(now, duration)}</td>
- </tr>
- `;
+ return `
+ <tr>
+ <td>${queue.display}</td>
+ <td>${queue.amount}</td>
+ <td>
+ <span title="${Math.ceil(due.diff(created).as('minutes')).toLocaleString()} minutes remaining">
+ ${progressBar(now, duration)}<br>
+ </span>
+ </td>
+ </tr>
+ `;
}).join("\n")}
</table>
</div>