fix: remove project name badges from the Coolify widget
Coolify was the only service reporting the generic detail field (project name chips); drop it end to end - collector, type, and the widget's chip row - rather than leave the plumbing for zero producers. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WpxhtQY3CExQdMs4j7MmJe
This commit is contained in:
@@ -60,15 +60,6 @@ export function ServiceWidget({ widget, widgetId }: { widget: ServiceWidget; wid
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
{data.detail && data.detail.length > 0 && (
|
||||
<div className="flex flex-wrap gap-1.5">
|
||||
{data.detail.map((entry) => (
|
||||
<StatusTag key={entry} tone="neutral">
|
||||
{entry}
|
||||
</StatusTag>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
{data.statError && <StatusTag tone="degraded">{data.statError}</StatusTag>}
|
||||
{widget.showStats && data.docker.cpuPercent !== null && memPercent !== null && (
|
||||
<div className="mt-0.5 flex gap-4">
|
||||
|
||||
@@ -9,7 +9,7 @@ import { collectUmami } from "./services/umami";
|
||||
import { collectHeadscale } from "./services/headscale";
|
||||
import { collectTraefikStat } from "./services/traefik";
|
||||
|
||||
function collectServiceStat(widget: ServiceWidget): Promise<{ stats: ServiceStat[]; detail?: string[] }> {
|
||||
function collectServiceStat(widget: ServiceWidget): Promise<{ stats: ServiceStat[] }> {
|
||||
switch (widget.service) {
|
||||
case "gitea":
|
||||
return collectGitea(widget);
|
||||
|
||||
@@ -2,12 +2,6 @@ import type { CoolifyServiceWidget } from "@/lib/config/schema";
|
||||
import type { ServiceStat } from "@/lib/types/service-result";
|
||||
import { serviceBaseUrl } from "./base-url";
|
||||
|
||||
const DETAIL_LIMIT = 5;
|
||||
|
||||
interface CoolifyProject {
|
||||
name: string;
|
||||
}
|
||||
|
||||
async function fetchCoolify<T>(base: string, path: string, apiToken: string): Promise<T> {
|
||||
const response = await fetch(`${base}${path}`, {
|
||||
headers: { Authorization: `Bearer ${apiToken}` },
|
||||
@@ -19,22 +13,17 @@ async function fetchCoolify<T>(base: string, path: string, apiToken: string): Pr
|
||||
return (await response.json()) as T;
|
||||
}
|
||||
|
||||
export async function collectCoolify(
|
||||
widget: CoolifyServiceWidget
|
||||
): Promise<{ stats: ServiceStat[]; detail?: string[] }> {
|
||||
export async function collectCoolify(widget: CoolifyServiceWidget): Promise<{ stats: ServiceStat[] }> {
|
||||
const base = serviceBaseUrl(widget);
|
||||
const [projects, resources] = await Promise.all([
|
||||
fetchCoolify<CoolifyProject[]>(base, "/api/v1/projects", widget.apiToken),
|
||||
fetchCoolify<unknown[]>(base, "/api/v1/projects", widget.apiToken),
|
||||
fetchCoolify<unknown[]>(base, "/api/v1/resources", widget.apiToken),
|
||||
]);
|
||||
const names = projects.slice(0, DETAIL_LIMIT).map((p) => p.name);
|
||||
if (projects.length > DETAIL_LIMIT) names.push(`+${projects.length - DETAIL_LIMIT} more`);
|
||||
|
||||
return {
|
||||
stats: [
|
||||
{ label: "Projects", value: String(projects.length) },
|
||||
{ label: "Resources", value: String(resources.length) },
|
||||
],
|
||||
detail: names.length > 0 ? names : undefined,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,6 +8,5 @@ export interface ServiceStat {
|
||||
export interface ServiceWidgetResult {
|
||||
docker: DockerContainerResult;
|
||||
stats: ServiceStat[];
|
||||
detail?: string[];
|
||||
statError?: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user