mirror of
				https://github.com/khairul169/garage-webui.git
				synced 2025-10-30 14:49:32 +07:00 
			
		
		
		
	Compare commits
	
		
			No commits in common. "b53859ae234525f9ca1c22f7f1252ea6672f6993" and "ccfa2cde256deebb76eaa3adcee69d49d5d27957" have entirely different histories.
		
	
	
		
			b53859ae23
			...
			ccfa2cde25
		
	
		
							
								
								
									
										10
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								README.md
									
									
									
									
									
								
							| @ -39,10 +39,10 @@ services: | |||||||
|       - ./data:/var/lib/garage/data |       - ./data:/var/lib/garage/data | ||||||
|     restart: unless-stopped |     restart: unless-stopped | ||||||
|     ports: |     ports: | ||||||
|       - 3900:3900 |        - 3900:3900 | ||||||
|       - 3901:3901 |        - 3901:3901 | ||||||
|       - 3902:3903 |        - 3902:3903 | ||||||
|       - 3903:3903 |        - 3903:3903 | ||||||
| 
 | 
 | ||||||
|   webui: |   webui: | ||||||
|     image: khairul169/garage-webui:latest |     image: khairul169/garage-webui:latest | ||||||
| @ -62,7 +62,7 @@ services: | |||||||
| Get the latest binary from the [release page](https://github.com/khairul169/garage-webui/releases/latest) according to your OS architecture. For example: | Get the latest binary from the [release page](https://github.com/khairul169/garage-webui/releases/latest) according to your OS architecture. For example: | ||||||
| 
 | 
 | ||||||
| ```sh | ```sh | ||||||
| $ wget -O garage-webui https://github.com/khairul169/garage-webui/releases/download/1.0.6/garage-webui-v1.0.6-linux-amd64 | $ wget -O garage-webui https://github.com/khairul169/garage-webui/releases/download/1.0.5/garage-webui-v1.0.5-linux-amd64 | ||||||
| $ chmod +x garage-webui | $ chmod +x garage-webui | ||||||
| $ sudo cp garage-webui /usr/local/bin | $ sudo cp garage-webui /usr/local/bin | ||||||
| ``` | ``` | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| { | { | ||||||
|   "name": "garage-webui", |   "name": "garage-webui", | ||||||
|   "private": true, |   "private": true, | ||||||
|   "version": "1.0.6", |   "version": "1.0.5", | ||||||
|   "type": "module", |   "type": "module", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "dev:client": "vite", |     "dev:client": "vite", | ||||||
|  | |||||||
| @ -66,8 +66,7 @@ const AssignNodeDialog = () => { | |||||||
|   }, [data]); |   }, [data]); | ||||||
| 
 | 
 | ||||||
|   const zoneList = useMemo(() => { |   const zoneList = useMemo(() => { | ||||||
|     const nodes = cluster?.nodes || cluster?.knownNodes || []; |     const list = cluster?.nodes | ||||||
|     const list = nodes |  | ||||||
|       .flatMap((i) => { |       .flatMap((i) => { | ||||||
|         const role = layout?.roles.find((role) => role.id === i.id); |         const role = layout?.roles.find((role) => role.id === i.id); | ||||||
|         const staged = layout?.stagedRoleChanges.find( |         const staged = layout?.stagedRoleChanges.find( | ||||||
| @ -84,8 +83,7 @@ const AssignNodeDialog = () => { | |||||||
|   }, [cluster, layout]); |   }, [cluster, layout]); | ||||||
| 
 | 
 | ||||||
|   const tagsList = useMemo(() => { |   const tagsList = useMemo(() => { | ||||||
|     const nodes = cluster?.nodes || cluster?.knownNodes || []; |     const list = cluster?.nodes | ||||||
|     const list = nodes |  | ||||||
|       .flatMap((i) => { |       .flatMap((i) => { | ||||||
|         const role = layout?.roles.find((role) => role.id === i.id); |         const role = layout?.roles.find((role) => role.id === i.id); | ||||||
|         const staged = layout?.stagedRoleChanges.find( |         const staged = layout?.stagedRoleChanges.find( | ||||||
|  | |||||||
| @ -268,9 +268,7 @@ const NodesList = ({ nodes }: NodeListProps) => { | |||||||
| 
 | 
 | ||||||
|                 <Dropdown |                 <Dropdown | ||||||
|                   end |                   end | ||||||
|                   vertical={ |                   vertical={idx >= items.length - 2 ? "top" : "bottom"} | ||||||
|                     idx > 2 && idx >= items.length - 2 ? "top" : "bottom" |  | ||||||
|                   } |  | ||||||
|                 > |                 > | ||||||
|                   <Dropdown.Toggle button={false}> |                   <Dropdown.Toggle button={false}> | ||||||
|                     <Button shape="circle" color="ghost"> |                     <Button shape="circle" color="ghost"> | ||||||
|  | |||||||
| @ -2,22 +2,9 @@ import Page from "@/context/page-context"; | |||||||
| import { useClusterStatus } from "./hooks"; | import { useClusterStatus } from "./hooks"; | ||||||
| import { Card } from "react-daisyui"; | import { Card } from "react-daisyui"; | ||||||
| import NodesList from "./components/nodes-list"; | import NodesList from "./components/nodes-list"; | ||||||
| import { useMemo } from "react"; |  | ||||||
| 
 | 
 | ||||||
| const ClusterPage = () => { | const ClusterPage = () => { | ||||||
|   const { data } = useClusterStatus(); |   const { data } = useClusterStatus(); | ||||||
|   const nodes = useMemo(() => { |  | ||||||
|     if (!data) return []; |  | ||||||
| 
 |  | ||||||
|     if (Array.isArray(data.knownNodes)) { |  | ||||||
|       return data.knownNodes.map((node) => ({ |  | ||||||
|         ...node, |  | ||||||
|         role: data.layout?.roles.find((role) => role.id === node.id), |  | ||||||
|       })); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     return data.nodes || []; |  | ||||||
|   }, [data]); |  | ||||||
| 
 | 
 | ||||||
|   return ( |   return ( | ||||||
|     <div className="container"> |     <div className="container"> | ||||||
| @ -31,10 +18,7 @@ const ClusterPage = () => { | |||||||
|           <DetailItem title="Version" value={data?.garageVersion} /> |           <DetailItem title="Version" value={data?.garageVersion} /> | ||||||
|           {/* <DetailItem title="Rust version" value={data?.rustVersion} /> */} |           {/* <DetailItem title="Rust version" value={data?.rustVersion} /> */} | ||||||
|           <DetailItem title="DB engine" value={data?.dbEngine} /> |           <DetailItem title="DB engine" value={data?.dbEngine} /> | ||||||
|           <DetailItem |           <DetailItem title="Layout version" value={data?.layoutVersion} /> | ||||||
|             title="Layout version" |  | ||||||
|             value={data?.layoutVersion || data?.layout?.version} |  | ||||||
|           /> |  | ||||||
|         </Card.Body> |         </Card.Body> | ||||||
|       </Card> |       </Card> | ||||||
| 
 | 
 | ||||||
| @ -42,7 +26,7 @@ const ClusterPage = () => { | |||||||
|         <Card.Body> |         <Card.Body> | ||||||
|           <Card.Title>Nodes</Card.Title> |           <Card.Title>Nodes</Card.Title> | ||||||
| 
 | 
 | ||||||
|           <NodesList nodes={nodes} /> |           <NodesList nodes={data?.nodes || []} /> | ||||||
|         </Card.Body> |         </Card.Body> | ||||||
|       </Card> |       </Card> | ||||||
|     </div> |     </div> | ||||||
|  | |||||||
| @ -7,9 +7,7 @@ export type GetStatusResult = { | |||||||
|   rustVersion: string; |   rustVersion: string; | ||||||
|   dbEngine: string; |   dbEngine: string; | ||||||
|   layoutVersion: number; |   layoutVersion: number; | ||||||
|   nodes?: Node[]; |   nodes: Node[]; | ||||||
|   knownNodes?: Node[]; |  | ||||||
|   layout?: GetClusterLayoutResult; |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export type Node = { | export type Node = { | ||||||
| @ -19,9 +17,9 @@ export type Node = { | |||||||
|   hostname: string; |   hostname: string; | ||||||
|   isUp: boolean; |   isUp: boolean; | ||||||
|   lastSeenSecsAgo: number | null; |   lastSeenSecsAgo: number | null; | ||||||
|   draining?: boolean; |   draining: boolean; | ||||||
|   dataPartition?: DataPartition; |   dataPartition: DataPartition; | ||||||
|   metadataPartition?: DataPartition; |   metadataPartition: DataPartition; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export type DataPartition = { | export type DataPartition = { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user