parent
4352c398c1
commit
71d4eb6cc3
|
@ -6,6 +6,7 @@ import (
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"tea.chunkbyte.com/kato/drive-health/lib/hardware"
|
"tea.chunkbyte.com/kato/drive-health/lib/hardware"
|
||||||
|
"tea.chunkbyte.com/kato/drive-health/lib/svc"
|
||||||
)
|
)
|
||||||
|
|
||||||
func setupApi(r *gin.Engine) {
|
func setupApi(r *gin.Engine) {
|
||||||
|
@ -31,4 +32,10 @@ func setupApi(r *gin.Engine) {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
api.GET("/snapshots", func(ctx *gin.Context) {
|
||||||
|
snapshots := svc.GetHardwareSnapshot()
|
||||||
|
|
||||||
|
ctx.JSON(http.StatusOK, snapshots)
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,31 @@
|
||||||
package web
|
package web
|
||||||
|
|
||||||
import "github.com/gin-gonic/gin"
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"tea.chunkbyte.com/kato/drive-health/lib/hardware"
|
||||||
|
)
|
||||||
|
|
||||||
func setupFrontend(r *gin.Engine) {
|
func setupFrontend(r *gin.Engine) {
|
||||||
|
r.LoadHTMLGlob("templates/*")
|
||||||
|
r.Static("/static", "./static")
|
||||||
|
|
||||||
|
// Set up a route for the root URL
|
||||||
|
r.GET("/", func(c *gin.Context) {
|
||||||
|
|
||||||
|
hardDrives, err := hardware.GetSystemHardDrives()
|
||||||
|
if err != nil {
|
||||||
|
c.AbortWithStatus(500)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, hdd := range hardDrives {
|
||||||
|
hdd.GetTemperature(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Render the HTML template
|
||||||
|
c.HTML(http.StatusOK, "index.html", gin.H{
|
||||||
|
"drives": hardDrives,
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
background-color: #333;
|
||||||
|
color: #fff;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
width: 80%;
|
||||||
|
margin: auto;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
text-align: center;
|
||||||
|
padding: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 20px;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
table, th, td {
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
th, td {
|
||||||
|
text-align: left;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
background-color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr:nth-child(even) {
|
||||||
|
background-color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr:hover {
|
||||||
|
background-color: #555;
|
||||||
|
}
|
|
@ -3,9 +3,38 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Drive Health</title>
|
<link rel="stylesheet" href="/static/style.css">
|
||||||
|
<title>Drive Health Dashboard</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>Drive Health Dashboard</h1>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Transport</th>
|
||||||
|
<th>Size</th>
|
||||||
|
<th>Model</th>
|
||||||
|
<th>Serial</th>
|
||||||
|
<th>Type</th>
|
||||||
|
<th>Temperature</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{{range .drives}}
|
||||||
|
<tr>
|
||||||
|
<td>{{.Name}}</td>
|
||||||
|
<td>{{.Transport}}</td>
|
||||||
|
<td>{{.Size}}</td>
|
||||||
|
<td>{{.Model}}</td>
|
||||||
|
<td>{{.Serial}}</td>
|
||||||
|
<td>{{.Type}}</td>
|
||||||
|
<td>{{.Temperature}}</td>
|
||||||
|
</tr>
|
||||||
|
{{end}}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Reference in New Issue