import { Box, Button, Grid, HStack, Select, SelectContent, SelectIcon, SelectListbox, SelectOption, SelectOptionIndicator, SelectOptionText, SelectPlaceholder, SelectTrigger, SelectValue, Table, Tbody, Th, Thead, Tr, VStack, Switch as HopeSwitch, } from "@hope-ui/solid" import { createMemo, createSignal, For, Match, Show, Switch } from "solid-js" import { useFetch, useManageTitle, useRouter, useT } from "~/hooks" import { handleResp, notify, r } from "~/utils" import { EmptyResp, PageResp, Resp, Storage } from "~/types" import { StorageGridItem, StorageListItem } from "./Storage" import { createStorageSignal } from "@solid-primitives/storage" const Storages = () => { const t = useT() useManageTitle("manage.sidemenu.storages") const { to } = useRouter() const [getStoragesLoading, getStorages] = useFetch( (): Promise> => r.get("/admin/storage/list"), ) const [storages, setStorages] = createSignal([]) const refresh = async () => { const resp = await getStorages() handleResp(resp, (data) => setStorages(data.content)) } const [drivers, setDrivers] = createSignal([]) const [selectedDrivers, setSelectedDrivers] = createSignal([]) const getDrivers = async () => { const resp: Resp = await r.get("/admin/driver/names") handleResp(resp, (data) => setDrivers(data)) } getDrivers() refresh() const loadAll = async () => { const resp: EmptyResp = await r.post("/admin/storage/load_all") handleResp(resp, () => { notify.success(t("storages.other.start_load_success")) }) } const shownStorages = createMemo(() => { return storages().filter((storage) => { if (selectedDrivers().length === 0) { return true } return selectedDrivers().includes(storage.driver) }) }) const [layout, setLayout] = createStorageSignal( "storages-layout", "grid" as "grid" | "table", ) return ( 0}> { setLayout(e.currentTarget.checked ? "table" : "grid") }} > {t("storages.other.table_layout")} {(storage) => ( )} {(title) => } {(storage) => ( )}
{t(`storages.common.${title}`)} {t("global.operations")}
) } export default Storages