Feature: show quota in debug panel

This commit is contained in:
Pieter Vander Vennet 2025-04-06 00:30:59 +02:00
parent c4f0e18b9e
commit 722f7e86cc
2 changed files with 24 additions and 4 deletions

View file

@ -7,12 +7,13 @@ import LoginButton from "../Base/LoginButton.svelte"
import ThemeViewState from "../../Models/ThemeViewState"
import OrientationDebugPanel from "../Debug/OrientationDebugPanel.svelte"
import AllTagsPanel from "../Popup/AllTagsPanel/AllTagsPanel.svelte"
import { ImmutableStore, UIEventSource } from "../../Logic/UIEventSource"
import { UIEventSource } from "../../Logic/UIEventSource"
import ClearCaches from "../Popup/ClearCaches.svelte"
import Locale from "../i18n/Locale"
import LanguageUtils from "../../Utils/LanguageUtils"
import LanguagePicker from "../InputElement/LanguagePicker.svelte"
import PendingChangesIndicator from "../BigComponents/PendingChangesIndicator.svelte"
import { Utils } from "../../Utils"
export class SettingsVisualisations {
public static initList(): SpecialVisualizationSvelte[] {
@ -79,14 +80,23 @@ export class SettingsVisualisations {
group: "settings",
docs: "Shows the current state of storage",
args: [],
constr(state: SpecialVisualizationState): SvelteUIElement {
constr: function(state: SpecialVisualizationState): SvelteUIElement {
const data = {}
for (const key in localStorage) {
data[key] = localStorage[key]
}
const tags = new ImmutableStore(data)
const tags = new UIEventSource(data)
navigator.storage.estimate().then(estimate => {
data["__usage:current:bytes"] = estimate.usage
data["__usage:current:human"] = Utils.toHumanByteSize(estimate.usage)
data["__usage:quota:bytes"] = estimate.quota
data["__usage:quota:human"] = Utils.toHumanByteSize(estimate.quota)
tags.ping()
})
return new SvelteUIElement(AllTagsPanel, { state, tags })
},
}
},
{
funcName: "clear_caches",

View file

@ -1150,6 +1150,16 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
return hours + ":" + Utils.TwoDigits(minutes) + ":" + Utils.TwoDigits(seconds)
}
public static toHumanByteSize(bytes: number): string {
const scale = ["b", "KB", "MB", "GB", "TB"] as const
let i = 0
while (bytes > 1000) {
bytes = bytes / 1000
i++
}
return Math.round(bytes) + scale[i]
}
public static HomepageLink(): string {
if (typeof window === "undefined") {
return "https://mapcomplete.org"