feat(hub,site): enhance domain management and monitor UI
Build Docker images / Hub (push) Failing after 54s

Implement manual domain expiry overrides, improve subdomain discovery via CT logs, and enhance the monitoring dashboard with favicons and configurable display options.

hub:
- allow manual expiry and creation date overrides in domain API when WHOIS lookup fails
- implement JSON parsing for crt.sh certificate transparency log searches in subdomain discovery
- update monitor API routes to use curly brace syntax for path parameters

site:
- add manual registration date and period inputs to domain dialog
- implement monitor favicon support using Google's favicon service
- add configurable display options (uptime pills, heartbeat dots) to monitors table
- update localization files to include new UI elements
This commit is contained in:
Tomas Dvorak
2026-05-10 10:24:28 +02:00
parent b6f40af67f
commit 0dd7db8a82
39 changed files with 641 additions and 218 deletions
+28
View File
@@ -128,6 +128,9 @@ func (h *APIHandler) createDomain(e *core.RequestEvent) error {
NotifyOnSSL bool `json:"notify_on_ssl_expiry"` NotifyOnSSL bool `json:"notify_on_ssl_expiry"`
NotifyOnDNS bool `json:"notify_on_dns_change"` NotifyOnDNS bool `json:"notify_on_dns_change"`
NotifyOnReg bool `json:"notify_on_registrar_change"` NotifyOnReg bool `json:"notify_on_registrar_change"`
// Manual expiry override when WHOIS fails
ExpiryDate string `json:"expiry_date,omitempty"`
CreationDate string `json:"creation_date,omitempty"`
} }
if err := json.NewDecoder(e.Request.Body).Decode(&req); err != nil { if err := json.NewDecoder(e.Request.Body).Decode(&req); err != nil {
return e.BadRequestError("invalid request body", err) return e.BadRequestError("invalid request body", err)
@@ -179,6 +182,7 @@ func (h *APIHandler) createDomain(e *core.RequestEvent) error {
record.Set("user", authRecord.Id) record.Set("user", authRecord.Id)
// Auto-lookup if requested // Auto-lookup if requested
lookupHadExpiry := false
if req.AutoLookup { if req.AutoLookup {
lookupSvc := whois.NewLookupService("") lookupSvc := whois.NewLookupService("")
ctx := e.Request.Context() ctx := e.Request.Context()
@@ -188,6 +192,7 @@ func (h *APIHandler) createDomain(e *core.RequestEvent) error {
// Calculate status based on lookup results // Calculate status based on lookup results
status := domain.DomainStatusUnknown status := domain.DomainStatusUnknown
if domainData.ExpiryDate != nil { if domainData.ExpiryDate != nil {
lookupHadExpiry = true
daysUntil := int(time.Until(*domainData.ExpiryDate).Hours() / 24) daysUntil := int(time.Until(*domainData.ExpiryDate).Hours() / 24)
if daysUntil < 0 { if daysUntil < 0 {
status = domain.DomainStatusExpired status = domain.DomainStatusExpired
@@ -204,6 +209,29 @@ func (h *APIHandler) createDomain(e *core.RequestEvent) error {
} }
} }
// Apply manual expiry/creation dates if WHOIS didn't find them
if !lookupHadExpiry {
if req.ExpiryDate != "" {
if t, err := time.Parse("2006-01-02", req.ExpiryDate); err == nil {
record.Set("expiry_date", t)
// Recalculate status with manual expiry
daysUntil := int(time.Until(t).Hours() / 24)
status := domain.DomainStatusActive
if daysUntil < 0 {
status = domain.DomainStatusExpired
} else if daysUntil <= req.AlertDaysBefore {
status = domain.DomainStatusExpiring
}
record.Set("status", status)
}
}
if req.CreationDate != "" {
if t, err := time.Parse("2006-01-02", req.CreationDate); err == nil {
record.Set("creation_date", t)
}
}
}
if err := h.app.Save(record); err != nil { if err := h.app.Save(record); err != nil {
return e.InternalServerError("failed to create domain", err) return e.InternalServerError("failed to create domain", err)
} }
+58 -5
View File
@@ -3,6 +3,7 @@ package domains
import ( import (
"context" "context"
"crypto/tls" "crypto/tls"
"encoding/json"
"fmt" "fmt"
"log" "log"
"net" "net"
@@ -143,21 +144,73 @@ func (sd *SubdomainDiscovery) dnsBruteForce(ctx context.Context, domainName stri
wg.Wait() wg.Wait()
} }
// ctLogSearch searches certificate transparency logs // ctLogSearch searches certificate transparency logs via crt.sh
func (sd *SubdomainDiscovery) ctLogSearch(ctx context.Context, domainName string, results chan<- DiscoveryResult) { func (sd *SubdomainDiscovery) ctLogSearch(ctx context.Context, domainName string, results chan<- DiscoveryResult) {
// Query crt.sh for certificates // Query crt.sh for certificates
url := fmt.Sprintf("https://crt.sh/?q=%%.%s&output=json", domainName) url := fmt.Sprintf("https://crt.sh/?q=%%.%s&output=json", domainName)
resp, err := sd.client.Get(url) req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
if err != nil {
log.Printf("[subdomain-discovery] CT log search failed for %s: %v", domainName, err)
return
}
resp, err := sd.client.Do(req)
if err != nil { if err != nil {
log.Printf("[subdomain-discovery] CT log search failed for %s: %v", domainName, err) log.Printf("[subdomain-discovery] CT log search failed for %s: %v", domainName, err)
return return
} }
defer resp.Body.Close() defer resp.Body.Close()
// Parse response (simplified - in production would parse JSON) if resp.StatusCode != http.StatusOK {
// For now, just log that we attempted this log.Printf("[subdomain-discovery] CT log search returned status %d for %s", resp.StatusCode, domainName)
log.Printf("[subdomain-discovery] CT log search attempted for %s (status: %d)", domainName, resp.StatusCode) return
}
// Parse crt.sh JSON response
var entries []struct {
NameValue string `json:"name_value"`
}
if err := json.NewDecoder(resp.Body).Decode(&entries); err != nil {
log.Printf("[subdomain-discovery] Failed to parse CT log response for %s: %v", domainName, err)
return
}
seen := make(map[string]bool)
for _, entry := range entries {
// crt.sh returns one name_value per line, may contain wildcards or multiple names
names := strings.Split(entry.NameValue, "\n")
for _, name := range names {
name = strings.TrimSpace(name)
if name == "" || name == domainName {
continue
}
// Remove wildcard prefix
name = strings.TrimPrefix(name, "*.")
// Only include subdomains of the target domain
if !strings.HasSuffix(name, "."+domainName) {
continue
}
subdomain := strings.TrimSuffix(name, "."+domainName)
if subdomain == "" || seen[subdomain] {
continue
}
seen[subdomain] = true
// Try to resolve IPs
ips, _ := net.LookupHost(name)
results <- DiscoveryResult{
Subdomain: subdomain,
FullDomain: name,
IPAddresses: ips,
Source: "certificate",
FoundAt: time.Now(),
}
}
}
log.Printf("[subdomain-discovery] CT log search found %d unique subdomains for %s", len(seen), domainName)
} }
// patternEnumeration enumerates common subdomain patterns // patternEnumeration enumerates common subdomain patterns
+8 -8
View File
@@ -40,16 +40,16 @@ func (h *APIHandler) RegisterRoutes(se *core.ServeEvent) {
// CRUD endpoints // CRUD endpoints
api.GET("", h.listMonitors) api.GET("", h.listMonitors)
api.POST("", h.createMonitor) api.POST("", h.createMonitor)
api.GET("/:id", h.getMonitor) api.GET("/{id}", h.getMonitor)
api.PATCH("/:id", h.updateMonitor) api.PATCH("/{id}", h.updateMonitor)
api.DELETE("/:id", h.deleteMonitor) api.DELETE("/{id}", h.deleteMonitor)
// Action endpoints // Action endpoints
api.POST("/:id/check", h.manualCheck) api.POST("/{id}/check", h.manualCheck)
api.POST("/:id/pause", h.pauseMonitor) api.POST("/{id}/pause", h.pauseMonitor)
api.POST("/:id/resume", h.resumeMonitor) api.POST("/{id}/resume", h.resumeMonitor)
api.GET("/:id/stats", h.getStats) api.GET("/{id}/stats", h.getStats)
api.GET("/:id/heartbeats", h.getHeartbeats) api.GET("/{id}/heartbeats", h.getHeartbeats)
} }
// HeartbeatSummary represents a minimal heartbeat for the monitor list // HeartbeatSummary represents a minimal heartbeat for the monitor list
@@ -36,7 +36,7 @@ import {
type UpdateDomainRequest, type UpdateDomainRequest,
type DomainLookupResult, type DomainLookupResult,
} from "@/lib/domains" } from "@/lib/domains"
import { Loader2, Search } from "lucide-react" import { Loader2, Search, AlertTriangle, Calendar } from "lucide-react"
const formSchema = z.object({ const formSchema = z.object({
domain_name: z.string().min(1, "Domain name is required"), domain_name: z.string().min(1, "Domain name is required"),
@@ -79,6 +79,13 @@ export function DomainDialog({ open, onOpenChange, domain, isEdit = false }: Dom
const [activeTab, setActiveTab] = useState("basic") const [activeTab, setActiveTab] = useState("basic")
const [lookupData, setLookupData] = useState<DomainLookupResult | null>(null) const [lookupData, setLookupData] = useState<DomainLookupResult | null>(null)
const [isLookingUp, setIsLookingUp] = useState(false) const [isLookingUp, setIsLookingUp] = useState(false)
// Manual expiry inputs when WHOIS fails
const [manualRegDate, setManualRegDate] = useState(() => {
const today = new Date()
return today.toISOString().split("T")[0]
})
const [manualRegPeriod, setManualRegPeriod] = useState<number>(1)
const [manualPurchasePrice, setManualPurchasePrice] = useState<number>(0)
const form = useForm<FormData>({ const form = useForm<FormData>({
resolver: zodResolver(formSchema), resolver: zodResolver(formSchema),
@@ -163,6 +170,10 @@ export function DomainDialog({ open, onOpenChange, domain, isEdit = false }: Dom
quiet_hours_end: "08:00", quiet_hours_end: "08:00",
}) })
setLookupData(null) setLookupData(null)
const today = new Date().toISOString().split("T")[0]
setManualRegDate(today)
setManualRegPeriod(1)
setManualPurchasePrice(0)
} }
}, [open, isEdit, domain, form]) }, [open, isEdit, domain, form])
@@ -207,6 +218,11 @@ export function DomainDialog({ open, onOpenChange, domain, isEdit = false }: Dom
try { try {
const data = await lookupDomain(domainName) const data = await lookupDomain(domainName)
setLookupData(data) setLookupData(data)
// Reset manual inputs on new lookup
const today = new Date().toISOString().split("T")[0]
setManualRegDate(today)
setManualRegPeriod(1)
setManualPurchasePrice(0)
toast({ title: "Domain info retrieved successfully" }) toast({ title: "Domain info retrieved successfully" })
} catch (error) { } catch (error) {
toast({ toast({
@@ -219,6 +235,17 @@ export function DomainDialog({ open, onOpenChange, domain, isEdit = false }: Dom
} }
} }
// Calculate expiry date from registration date + period in years
const calculateExpiryDate = (regDateStr: string, years: number): string | null => {
const regDate = new Date(regDateStr)
if (isNaN(regDate.getTime())) return null
const expiry = new Date(regDate)
expiry.setFullYear(expiry.getFullYear() + years)
// Subtract 1 day (expiry is typically the day before the anniversary)
expiry.setDate(expiry.getDate() - 1)
return expiry.toISOString().split("T")[0]
}
const onSubmit = (data: FormData) => { const onSubmit = (data: FormData) => {
const payload: CreateDomainRequest = { const payload: CreateDomainRequest = {
domain_name: cleanDomain(data.domain_name), domain_name: cleanDomain(data.domain_name),
@@ -247,6 +274,19 @@ export function DomainDialog({ open, onOpenChange, domain, isEdit = false }: Dom
quiet_hours_end: data.quiet_hours_enabled ? data.quiet_hours_end : undefined, quiet_hours_end: data.quiet_hours_enabled ? data.quiet_hours_end : undefined,
} }
// If lookup returned no expiry, attach manual dates
if (!isEdit && lookupData && !lookupData.expiry_date) {
const calculatedExpiry = calculateExpiryDate(manualRegDate, manualRegPeriod)
if (calculatedExpiry) {
payload.expiry_date = calculatedExpiry
payload.creation_date = manualRegDate
}
// Use the manual purchase price if set (overrides form value when WHOIS fails)
if (manualPurchasePrice > 0) {
payload.purchase_price = manualPurchasePrice
}
}
if (isEdit && domain) { if (isEdit && domain) {
updateMutation.mutate({ updateMutation.mutate({
id: domain.id, id: domain.id,
@@ -384,19 +424,91 @@ export function DomainDialog({ open, onOpenChange, domain, isEdit = false }: Dom
/> />
{lookupData && !isEdit && ( {lookupData && !isEdit && (
<div className="rounded-lg border p-4 space-y-2"> <div className="space-y-3">
<h4 className="font-medium">Lookup Results</h4> {/* Lookup Results */}
{lookupData.registrar_name && ( <div className="rounded-lg border p-4 space-y-2">
<p className="text-sm">Registrar: {lookupData.registrar_name}</p> <h4 className="font-medium">Lookup Results</h4>
)} {lookupData.registrar_name && (
{lookupData.expiry_date && ( <p className="text-sm">Registrar: {lookupData.registrar_name}</p>
<p className="text-sm">Expires: {lookupData.expiry_date}</p> )}
)} {lookupData.expiry_date && (
{lookupData.ssl_valid_to && ( <p className="text-sm">Expires: {lookupData.expiry_date}</p>
<p className="text-sm">SSL Expires: {lookupData.ssl_valid_to}</p> )}
)} {lookupData.ssl_valid_to && (
{lookupData.host_country && ( <p className="text-sm">SSL Expires: {lookupData.ssl_valid_to}</p>
<p className="text-sm">Location: {lookupData.host_country}</p> )}
{lookupData.host_country && (
<p className="text-sm">Location: {lookupData.host_country}</p>
)}
</div>
{/* Manual expiry fallback when WHOIS doesn't return expiry */}
{!lookupData.expiry_date && (
<div className="rounded-lg border border-yellow-500/30 bg-yellow-500/5 p-4 space-y-3">
<div className="flex items-center gap-2 text-yellow-700">
<AlertTriangle className="h-4 w-4" />
<h4 className="font-medium text-sm">Expiry date not found in WHOIS</h4>
</div>
<p className="text-xs text-muted-foreground">
Enter your registration details below and we&apos;ll calculate the expiry date.
</p>
<div className="grid grid-cols-2 gap-3">
<div className="space-y-1">
<label className="text-xs font-medium">Registration Date</label>
<div className="flex items-center gap-2">
<Calendar className="h-3.5 w-3.5 text-muted-foreground" />
<Input
type="date"
value={manualRegDate}
onChange={(e) => setManualRegDate(e.target.value)}
className="h-8 text-sm"
/>
</div>
</div>
<div className="space-y-1">
<label className="text-xs font-medium">Registration Period</label>
<select
value={manualRegPeriod}
onChange={(e) => setManualRegPeriod(Number(e.target.value))}
className="w-full h-8 px-2 rounded-md border border-input bg-background text-sm"
>
<option value={1}>1 year</option>
<option value={2}>2 years</option>
<option value={3}>3 years</option>
<option value={5}>5 years</option>
<option value={10}>10 years</option>
</select>
</div>
</div>
<div className="space-y-1">
<label className="text-xs font-medium">Purchase Price (total for selected period)</label>
<Input
type="number"
min={0}
step="0.01"
value={manualPurchasePrice || ""}
placeholder="e.g. 29.99"
onChange={(e) => setManualPurchasePrice(Number(e.target.value))}
className="h-8 text-sm"
/>
{manualPurchasePrice > 0 && manualRegPeriod > 1 && (
<p className="text-[10px] text-muted-foreground">
~{(manualPurchasePrice / manualRegPeriod).toFixed(2)} per year
</p>
)}
</div>
{manualRegDate && manualRegPeriod > 0 && (
<div className="rounded-md bg-muted p-2 text-xs">
<p className="font-medium">Calculated Expiry:</p>
<p className="text-muted-foreground">
{calculateExpiryDate(manualRegDate, manualRegPeriod)}
</p>
</div>
)}
</div>
)} )}
</div> </div>
)} )}
@@ -58,6 +58,7 @@ import { useToast } from "@/components/ui/use-toast"
import { import {
deleteMonitor, deleteMonitor,
getMonitorTypeLabel, getMonitorTypeLabel,
getMonitorFaviconUrl,
listMonitors, listMonitors,
manualCheck, manualCheck,
pauseMonitor, pauseMonitor,
@@ -101,13 +102,35 @@ function StatusIndicator({ status }: { status: MonitorStatus }) {
) )
} }
// Favicon component
function MonitorFavicon({ monitor, className }: { monitor: Monitor; className?: string }) {
const [error, setError] = useState(false)
const faviconUrl = getMonitorFaviconUrl(monitor)
if (!faviconUrl || error) {
return <GlobeIcon className={cn("h-4 w-4 text-muted-foreground", className)} />
}
return (
<img
src={faviconUrl}
alt=""
className={cn("h-4 w-4 object-contain", className)}
onError={() => setError(true)}
loading="lazy"
/>
)
}
// Monitor Card component for grid view // Monitor Card component for grid view
function MonitorCard({ function MonitorCard({
monitor, monitor,
onEdit, onEdit,
displayOptions,
}: { }: {
monitor: Monitor monitor: Monitor
onEdit: (m: Monitor) => void onEdit: (m: Monitor) => void
displayOptions: DisplayOptions
}) { }) {
const { toast } = useToast() const { toast } = useToast()
const queryClient = useQueryClient() const queryClient = useQueryClient()
@@ -146,7 +169,10 @@ function MonitorCard({
<div className="flex items-start justify-between"> <div className="flex items-start justify-between">
<Link href={`/monitor/${monitor.id}`} className="flex items-center gap-3 cursor-pointer min-w-0"> <Link href={`/monitor/${monitor.id}`} className="flex items-center gap-3 cursor-pointer min-w-0">
<div className="shrink-0"> <div className="shrink-0">
<StatusIndicator status={monitor.status} /> <div className="flex items-center gap-2">
<MonitorFavicon monitor={monitor} className="h-5 w-5" />
<StatusIndicator status={monitor.status} />
</div>
</div> </div>
<div className="min-w-0"> <div className="min-w-0">
<div className="font-medium truncate hover:underline">{monitor.name}</div> <div className="font-medium truncate hover:underline">{monitor.name}</div>
@@ -187,15 +213,21 @@ function MonitorCard({
</div> </div>
{/* Uptime - Prominent pill display */} {/* Uptime - Prominent pill display */}
<div className="flex flex-col gap-2"> {displayOptions.showUptimePills && (
<div className="flex items-center gap-2 flex-wrap"> <div className="flex flex-col gap-2">
<UptimePill uptime={monitor.uptime_stats?.uptime_24h ?? 100} label="24h" /> <div className="flex items-center gap-2 flex-wrap">
{monitor.uptime_stats?.uptime_7d !== undefined && monitor.uptime_stats.uptime_7d !== monitor.uptime_stats?.uptime_24h && ( {displayOptions.showUptimePercentage && (
<UptimePill uptime={monitor.uptime_stats.uptime_7d} label="7d" /> <UptimePill uptime={monitor.uptime_stats?.uptime_24h ?? 100} label="24h" />
)}
{displayOptions.showUptimePercentage && monitor.uptime_stats?.uptime_7d !== undefined && monitor.uptime_stats.uptime_7d !== monitor.uptime_stats?.uptime_24h && (
<UptimePill uptime={monitor.uptime_stats.uptime_7d} label="7d" />
)}
</div>
{displayOptions.showHeartbeatDots && (
<UptimeDots heartbeats={monitor.recent_heartbeats} />
)} )}
</div> </div>
<UptimeDots heartbeats={monitor.recent_heartbeats} /> )}
</div>
<div className="flex items-center justify-between text-sm"> <div className="flex items-center justify-between text-sm">
<div className="text-xs text-muted-foreground">Response</div> <div className="text-xs text-muted-foreground">Response</div>
@@ -366,9 +398,11 @@ function UptimeDots({ heartbeats }: { heartbeats?: Array<{ status: string; time:
function MonitorRow({ function MonitorRow({
monitor, monitor,
onEdit, onEdit,
displayOptions,
}: { }: {
monitor: Monitor monitor: Monitor
onEdit: (m: Monitor) => void onEdit: (m: Monitor) => void
displayOptions: DisplayOptions
}) { }) {
const { toast } = useToast() const { toast } = useToast()
const queryClient = useQueryClient() const queryClient = useQueryClient()
@@ -412,7 +446,7 @@ function MonitorRow({
<TableRow> <TableRow>
<TableCell> <TableCell>
<Link href={`/monitor/${monitor.id}`} className="flex items-center gap-3 cursor-pointer"> <Link href={`/monitor/${monitor.id}`} className="flex items-center gap-3 cursor-pointer">
<GlobeIcon className="h-4 w-4 text-muted-foreground" /> <MonitorFavicon monitor={monitor} className="h-5 w-5" />
<div> <div>
<div className="font-medium hover:underline">{monitor.name}</div> <div className="font-medium hover:underline">{monitor.name}</div>
<div className="text-xs text-muted-foreground"> <div className="text-xs text-muted-foreground">
@@ -440,7 +474,11 @@ function MonitorRow({
)} )}
</TableCell> </TableCell>
<TableCell> <TableCell>
<UptimeBar stats={monitor.uptime_stats} /> {displayOptions.showUptimePills ? (
<UptimeBar stats={monitor.uptime_stats} />
) : (
<span className="text-sm text-muted-foreground">-</span>
)}
</TableCell> </TableCell>
<TableCell> <TableCell>
<div className="flex flex-wrap gap-1"> <div className="flex flex-wrap gap-1">
@@ -534,6 +572,12 @@ type ViewMode = "table" | "grid"
type StatusFilter = "all" | MonitorStatus type StatusFilter = "all" | MonitorStatus
type TypeFilter = "all" | MonitorType type TypeFilter = "all" | MonitorType
interface DisplayOptions {
showUptimePills: boolean
showUptimePercentage: boolean
showHeartbeatDots: boolean
}
// Main component // Main component
export default memo(function MonitorsTable() { export default memo(function MonitorsTable() {
const { t } = useLingui() const { t } = useLingui()
@@ -549,6 +593,11 @@ export default memo(function MonitorsTable() {
window.innerWidth < 1024 ? "grid" : "table" window.innerWidth < 1024 ? "grid" : "table"
) )
const [displayOptions, setDisplayOptions] = useBrowserStorage<DisplayOptions>(
"monitorsDisplayOptions",
{ showUptimePills: true, showUptimePercentage: true, showHeartbeatDots: true }
)
const { data: monitors = [], isLoading } = useQuery({ const { data: monitors = [], isLoading } = useQuery({
queryKey: ["monitors"], queryKey: ["monitors"],
queryFn: listMonitors, queryFn: listMonitors,
@@ -746,6 +795,42 @@ export default memo(function MonitorsTable() {
</DropdownMenuRadioGroup> </DropdownMenuRadioGroup>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
{/* Display Options */}
<DropdownMenuLabel className="flex items-center gap-2">
<Settings2Icon className="size-4" />
<Trans>Display</Trans>
</DropdownMenuLabel>
<div className="px-2 py-1 space-y-1">
<label className="flex items-center gap-2 text-sm cursor-pointer hover:bg-muted/50 rounded px-1 py-0.5">
<input
type="checkbox"
checked={displayOptions.showUptimePills}
onChange={(e) => setDisplayOptions({ ...displayOptions, showUptimePills: e.target.checked })}
className="rounded border-gray-300"
/>
<span>Show uptime pills</span>
</label>
<label className="flex items-center gap-2 text-sm cursor-pointer hover:bg-muted/50 rounded px-1 py-0.5">
<input
type="checkbox"
checked={displayOptions.showUptimePercentage}
onChange={(e) => setDisplayOptions({ ...displayOptions, showUptimePercentage: e.target.checked })}
className="rounded border-gray-300"
/>
<span>Show percentage</span>
</label>
<label className="flex items-center gap-2 text-sm cursor-pointer hover:bg-muted/50 rounded px-1 py-0.5">
<input
type="checkbox"
checked={displayOptions.showHeartbeatDots}
onChange={(e) => setDisplayOptions({ ...displayOptions, showHeartbeatDots: e.target.checked })}
className="rounded border-gray-300"
/>
<span>Show heartbeat dots</span>
</label>
</div>
<DropdownMenuSeparator />
{/* Status Filter */} {/* Status Filter */}
<DropdownMenuLabel className="flex items-center gap-2"> <DropdownMenuLabel className="flex items-center gap-2">
<FilterIcon className="size-4" /> <FilterIcon className="size-4" />
@@ -834,6 +919,7 @@ export default memo(function MonitorsTable() {
key={monitor.id} key={monitor.id}
monitor={monitor} monitor={monitor}
onEdit={setEditingMonitor} onEdit={setEditingMonitor}
displayOptions={displayOptions}
/> />
))} ))}
</TableBody> </TableBody>
@@ -845,6 +931,7 @@ export default memo(function MonitorsTable() {
key={monitor.id} key={monitor.id}
monitor={monitor} monitor={monitor}
onEdit={setEditingMonitor} onEdit={setEditingMonitor}
displayOptions={displayOptions}
/> />
))} ))}
</div> </div>
@@ -109,6 +109,7 @@ export default function DomainDetail({ id }: { id: string }) {
const queryClient = useQueryClient() const queryClient = useQueryClient()
const [deleteDialogOpen, setDeleteDialogOpen] = useState(false) const [deleteDialogOpen, setDeleteDialogOpen] = useState(false)
const [isDeleting, setIsDeleting] = useState(false) const [isDeleting, setIsDeleting] = useState(false)
const [isEditDialogOpen, setIsEditDialogOpen] = useState(false)
const [expiryDialogOpen, setExpiryDialogOpen] = useState(false) const [expiryDialogOpen, setExpiryDialogOpen] = useState(false)
const [manualExpiryDate, setManualExpiryDate] = useState("") const [manualExpiryDate, setManualExpiryDate] = useState("")
const [manualPurchaseDate, setManualPurchaseDate] = useState("") const [manualPurchaseDate, setManualPurchaseDate] = useState("")
@@ -37,6 +37,7 @@ import {
} from "lucide-react" } from "lucide-react"
import { import {
type Heartbeat, type Heartbeat,
type Monitor,
getMonitor, getMonitor,
getMonitorStats, getMonitorStats,
getMonitorHeartbeats, getMonitorHeartbeats,
@@ -45,6 +46,7 @@ import {
resumeMonitor, resumeMonitor,
deleteMonitor, deleteMonitor,
getMonitorTypeLabel, getMonitorTypeLabel,
getMonitorFaviconUrl,
formatUptime, formatUptime,
formatPing, formatPing,
} from "@/lib/monitors" } from "@/lib/monitors"
@@ -457,6 +459,16 @@ export default memo(function MonitorDetail({ id }: { id: string }) {
const headerIconColor = isUp ? "text-green-500" : isPaused ? "text-gray-500" : isPending ? "text-yellow-500" : "text-red-500" const headerIconColor = isUp ? "text-green-500" : isPaused ? "text-gray-500" : isPending ? "text-yellow-500" : "text-red-500"
const headerBgColor = isUp ? "bg-green-500/10" : isPaused ? "bg-gray-500/10" : isPending ? "bg-yellow-500/10" : "bg-red-500/10" const headerBgColor = isUp ? "bg-green-500/10" : isPaused ? "bg-gray-500/10" : isPending ? "bg-yellow-500/10" : "bg-red-500/10"
// Favicon component
function MonitorFaviconImage({ monitor }: { monitor: Monitor }) {
const [error, setError] = useState(false)
const faviconUrl = getMonitorFaviconUrl(monitor)
if (!faviconUrl || error) {
return <Globe className={cn("h-6 w-6", headerIconColor)} />
}
return <img src={faviconUrl} alt="" className="h-6 w-6 object-contain" onError={() => setError(true)} />
}
return ( return (
<div className="grid gap-4 mb-14"> <div className="grid gap-4 mb-14">
{/* Header */} {/* Header */}
@@ -470,7 +482,7 @@ export default memo(function MonitorDetail({ id }: { id: string }) {
headerBgColor headerBgColor
)} )}
> >
<Globe className={cn("h-6 w-6", headerIconColor)} /> <MonitorFaviconImage monitor={monitor} />
</div> </div>
<div> <div>
<h1 className="text-2xl font-bold">{monitor.name}</h1> <h1 className="text-2xl font-bold">{monitor.name}</h1>
+3
View File
@@ -154,6 +154,9 @@ export interface CreateDomainRequest {
quiet_hours_enabled?: boolean quiet_hours_enabled?: boolean
quiet_hours_start?: string quiet_hours_start?: string
quiet_hours_end?: string quiet_hours_end?: string
// Manual expiry override when WHOIS fails
expiry_date?: string
creation_date?: string
} }
export interface UpdateDomainRequest { export interface UpdateDomainRequest {
+7
View File
@@ -340,6 +340,13 @@ export function formatPing(ping: number): string {
return `${(ping / 1000).toFixed(2)}s` return `${(ping / 1000).toFixed(2)}s`
} }
// Favicon URL helper - uses Google's favicon service as fallback
export function getMonitorFaviconUrl(monitor: Monitor): string | null {
const hostname = extractHostnameFromMonitor(monitor)
if (!hostname) return null
return `https://www.google.com/s2/favicons?domain=${encodeURIComponent(hostname)}&sz=32`
}
// Domain extraction and grouping utilities // Domain extraction and grouping utilities
export function extractHostnameFromMonitor(monitor: Monitor): string | null { export function extractHostnameFromMonitor(monitor: Monitor): string | null {
if (monitor.hostname) { if (monitor.hostname) {
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "عرض" msgstr "عرض"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "الشبكة" msgstr "الشبكة"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "عرض أحدث 200 تنبيه." msgstr "عرض أحدث 200 تنبيه."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "الأعمدة الظاهرة" #~ msgstr "الأعمدة الظاهرة"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Показване" msgstr "Показване"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Мрежа" msgstr "Мрежа"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Прегледайте последните си 200 сигнала." msgstr "Прегледайте последните си 200 сигнала."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Видими полета" #~ msgstr "Видими полета"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Zobrazení" msgstr "Zobrazení"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Síť" msgstr "Síť"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Zobrazit vašich 200 nejnovějších upozornění." msgstr "Zobrazit vašich 200 nejnovějších upozornění."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Viditelné sloupce" #~ msgstr "Viditelné sloupce"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Visning" msgstr "Visning"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "" msgstr ""
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Se dine 200 nyeste alarmer." msgstr "Se dine 200 nyeste alarmer."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Synlige felter" #~ msgstr "Synlige felter"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Anzeige" msgstr "Anzeige"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Netzwerk" msgstr "Netzwerk"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Sieh dir die neusten 200 Alarme an." msgstr "Sieh dir die neusten 200 Alarme an."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Sichtbare Spalten" #~ msgstr "Sichtbare Spalten"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -507,8 +507,8 @@ msgid "Close"
msgstr "Close" msgstr "Close"
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "Columns" msgstr "Columns"
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -788,6 +788,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Display" msgstr "Display"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr "Display"
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "Display Columns" msgstr "Display Columns"
@@ -1455,8 +1459,8 @@ msgid "Net"
msgstr "Net" msgstr "Net"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "Network (Grouped)" #~ msgstr "Network (Grouped)"
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2456,8 +2460,8 @@ msgid "View your 200 most recent alerts."
msgstr "View your 200 most recent alerts." msgstr "View your 200 most recent alerts."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Visible Fields" #~ msgstr "Visible Fields"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Pantalla" msgstr "Pantalla"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Red" msgstr "Red"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Ver tus 200 alertas más recientes." msgstr "Ver tus 200 alertas más recientes."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Columnas visibles" #~ msgstr "Columnas visibles"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "نمایش" msgstr "نمایش"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "شبکه" msgstr "شبکه"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "۲۰۰ هشدار اخیر خود را مشاهده کنید." msgstr "۲۰۰ هشدار اخیر خود را مشاهده کنید."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "فیلدهای قابل مشاهده" #~ msgstr "فیلدهای قابل مشاهده"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Affichage" msgstr "Affichage"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Rés" msgstr "Rés"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Voir vos 200 dernières alertes." msgstr "Voir vos 200 dernières alertes."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Colonnes visibles" #~ msgstr "Colonnes visibles"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "תצוגה" msgstr "תצוגה"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "רשת" msgstr "רשת"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "צפה ב-200 ההתראות האחרונות שלך." msgstr "צפה ב-200 ההתראות האחרונות שלך."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "שדות גלויים" #~ msgstr "שדות גלויים"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Prikaz" msgstr "Prikaz"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Mreža" msgstr "Mreža"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Pogledajte posljednjih 200 upozorenja." msgstr "Pogledajte posljednjih 200 upozorenja."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Vidljiva polja" #~ msgstr "Vidljiva polja"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Megjelenítés" msgstr "Megjelenítés"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Hálózat" msgstr "Hálózat"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Legfrissebb 200 riasztásod áttekintése." msgstr "Legfrissebb 200 riasztásod áttekintése."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Látható mezők" #~ msgstr "Látható mezők"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Tampilan" msgstr "Tampilan"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Jaringan" msgstr "Jaringan"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Lihat 200 peringatan terbaru anda." msgstr "Lihat 200 peringatan terbaru anda."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Metrik yang Terlihat" #~ msgstr "Metrik yang Terlihat"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "" msgstr ""
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Rete" msgstr "Rete"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Visualizza i tuoi 200 avvisi più recenti." msgstr "Visualizza i tuoi 200 avvisi più recenti."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Colonne visibili" #~ msgstr "Colonne visibili"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "表示" msgstr "表示"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "帯域" msgstr "帯域"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "直近200件のアラートを表示します。" msgstr "直近200件のアラートを表示します。"
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "表示列" #~ msgstr "表示列"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "표시" msgstr "표시"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "네트워크" msgstr "네트워크"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "최근 200개의 알림을 봅니다." msgstr "최근 200개의 알림을 봅니다."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "표시할 열" #~ msgstr "표시할 열"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Weergave" msgstr "Weergave"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Netwerk" msgstr "Netwerk"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Bekijk je 200 meest recente meldingen." msgstr "Bekijk je 200 meest recente meldingen."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Zichtbare kolommen" #~ msgstr "Zichtbare kolommen"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Vis" msgstr "Vis"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Nett" msgstr "Nett"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Vis de 200 siste varslene." msgstr "Vis de 200 siste varslene."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Synlige Felter" #~ msgstr "Synlige Felter"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Widok" msgstr "Widok"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Sieć" msgstr "Sieć"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Wyświetl 200 ostatnich alertów." msgstr "Wyświetl 200 ostatnich alertów."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Widoczne kolumny" #~ msgstr "Widoczne kolumny"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Ecrã" msgstr "Ecrã"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Rede" msgstr "Rede"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Veja os seus 200 alertas mais recentes." msgstr "Veja os seus 200 alertas mais recentes."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Campos Visíveis" #~ msgstr "Campos Visíveis"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Отображение" msgstr "Отображение"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Сеть" msgstr "Сеть"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Просмотреть 200 последних оповещений." msgstr "Просмотреть 200 последних оповещений."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Видимые столбцы" #~ msgstr "Видимые столбцы"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Zaslon" msgstr "Zaslon"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Mreža" msgstr "Mreža"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Oglejte si svojih 200 najnovejših opozoril." msgstr "Oglejte si svojih 200 najnovejših opozoril."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Vidna polja" #~ msgstr "Vidna polja"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Приказ" msgstr "Приказ"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Мрежа" msgstr "Мрежа"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Погледајте ваших 200 најновијих упозорења." msgstr "Погледајте ваших 200 најновијих упозорења."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Видљива поља" #~ msgstr "Видљива поља"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Visa" msgstr "Visa"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Nät" msgstr "Nät"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Visa dina 200 senaste larm." msgstr "Visa dina 200 senaste larm."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Synliga fält" #~ msgstr "Synliga fält"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Görünüm" msgstr "Görünüm"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Ağ" msgstr "Ağ"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "En son 200 uyarınızı görüntüleyin." msgstr "En son 200 uyarınızı görüntüleyin."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Görünür Alanlar" #~ msgstr "Görünür Alanlar"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Відображення" msgstr "Відображення"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Мережа" msgstr "Мережа"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Переглянути 200 останніх сповіщень." msgstr "Переглянути 200 останніх сповіщень."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Видимі стовпці" #~ msgstr "Видимі стовпці"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "Hiển thị" msgstr "Hiển thị"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "Mạng" msgstr "Mạng"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "Xem 200 cảnh báo gần đây nhất của bạn." msgstr "Xem 200 cảnh báo gần đây nhất của bạn."
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "Các cột hiển thị" #~ msgstr "Các cột hiển thị"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "显示" msgstr "显示"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "网络" msgstr "网络"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "查看您最近的200个警报。" msgstr "查看您最近的200个警报。"
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "可见列" #~ msgstr "可见列"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "顯示" msgstr "顯示"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "網絡" msgstr "網絡"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "檢視最近 200 則警報。" msgstr "檢視最近 200 則警報。"
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "可見欄位" #~ msgstr "可見欄位"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx
+10 -6
View File
@@ -512,8 +512,8 @@ msgid "Close"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
#~ msgid "Columns" msgid "Columns"
#~ msgstr "" msgstr ""
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
#: src/components/login/forgot-pass-form.tsx #: src/components/login/forgot-pass-form.tsx
@@ -793,6 +793,10 @@ msgctxt "Layout display options"
msgid "Display" msgid "Display"
msgstr "顯示" msgstr "顯示"
#: src/components/monitors-table/monitors-table.tsx
msgid "Display"
msgstr ""
#: src/components/domains-table/domains-table.tsx #: src/components/domains-table/domains-table.tsx
msgid "Display Columns" msgid "Display Columns"
msgstr "" msgstr ""
@@ -1460,8 +1464,8 @@ msgid "Net"
msgstr "網路" msgstr "網路"
#: src/components/monitors-table/monitors-table.tsx #: src/components/monitors-table/monitors-table.tsx
msgid "Network (Grouped)" #~ msgid "Network (Grouped)"
msgstr "" #~ msgstr ""
#: src/components/routes/system/charts/network-charts.tsx #: src/components/routes/system/charts/network-charts.tsx
msgid "Network traffic of docker containers" msgid "Network traffic of docker containers"
@@ -2461,8 +2465,8 @@ msgid "View your 200 most recent alerts."
msgstr "檢視最近 200 則警報。" msgstr "檢視最近 200 則警報。"
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" #~ msgid "Visible Fields"
msgstr "顯示欄位" #~ msgstr "顯示欄位"
#: src/components/routes/domain.tsx #: src/components/routes/domain.tsx
#: src/components/routes/monitor.tsx #: src/components/routes/monitor.tsx