mirror of
https://github.com/ublue-os/forge.git
synced 2025-07-04 08:45:45 +03:00
feat(nicegui): show list of all images stored in container registry (#43)
This commit is contained in:
parent
b40e0dd4a1
commit
83f047f2d6
8 changed files with 417 additions and 10 deletions
|
@ -1,10 +1,38 @@
|
|||
import pandas
|
||||
import humanize
|
||||
from nicegui import ui
|
||||
import os
|
||||
from utils.registry import DockerRegistry
|
||||
|
||||
|
||||
## TODO: this should be async but I currently don't know how to implement this without button press
|
||||
def get_image_info() -> pandas.DataFrame:
|
||||
registry = DockerRegistry()
|
||||
all_image_info = registry.get_all_image_info()
|
||||
if isinstance(all_image_info, list) and len(all_image_info) > 0:
|
||||
data = pandas.json_normalize(
|
||||
all_image_info,
|
||||
record_path=["tags"],
|
||||
meta=[["name"]],
|
||||
meta_prefix="image_",
|
||||
).assign(
|
||||
size=lambda x: x["manifest.layers"].apply(
|
||||
lambda layers: sum(layer["size"] for layer in layers)
|
||||
)
|
||||
)
|
||||
data = data[["image_name", "name", "size"]].rename(
|
||||
columns={"image_name": "image", "name": "tag", "size": "size"}
|
||||
)
|
||||
data["size"] = data["size"].apply(humanize.naturalsize)
|
||||
return data
|
||||
else:
|
||||
ui.notify(message="No images found")
|
||||
data = pandas.DataFrame(columns=["image_name", "tag", "size"])
|
||||
return data
|
||||
|
||||
|
||||
def content() -> None:
|
||||
project_root = os.environ['NICEGUI_DIR']
|
||||
ui.label("Work in progress...").classes("text-h6")
|
||||
ui.image(project_root + "/pages/assets/work-in-progress.png").classes(
|
||||
"w-[200%]"
|
||||
)
|
||||
with ui.row().classes("w-full"):
|
||||
with ui.card().classes("w-full"):
|
||||
ui.label("Image Overview").classes("text-h5")
|
||||
data = get_image_info()
|
||||
ui.table.from_pandas(df=data).classes("w-full")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue