import React, { useContext, useEffect, useState } from "react"; import { BaseWebPlugin, PageLayout, PageHeader, ControlContext } from "@clusterio/web_ui"; import { DatabaseStatsRequest, DatabaseStatsResponse } from "../messages"; import "./style.css"; function InventoryPage() { let control = useContext(ControlContext); let [statsData, updateStatsData] = useState(); useEffect(() => { (async () => { // Get statistics updateStatsData(await control.send(new DatabaseStatsRequest())); })(); }, []); return {statsData && <>

Database size: {Math.round(statsData.databaseSize / 1000)}kB

Database entries: {statsData.databaseEntries}

Largest entry is {statsData.largestEntry.name} with {(statsData.largestEntry.size / 1000)}kB

}
; } export class WebPlugin extends BaseWebPlugin { async init() { this.pages = [ { path: "/inventory", sidebarName: "Inventory sync", permission: "inventory_sync.inventory.view", content: , }, ]; } }