Fix drive card icon fallback

This commit is contained in:
nianzhibai
2026-06-08 19:07:53 +08:00
parent d33c1b1b20
commit 3465b9e837
5 changed files with 24 additions and 1 deletions
+1
View File
@@ -40,4 +40,5 @@ __pycache__/
/image.jpg
/image003.jpg
/image004.jpg
/image005.png
/image02.png
+2 -1
View File
@@ -20,6 +20,7 @@ import { formatBytes } from "./storageFormat";
import { makeUniqueDriveId } from "./driveId";
import {
FormState,
driveKindAbbr,
kindLabel,
emptyForm,
idleNightlyStatus,
@@ -770,7 +771,7 @@ export function DrivesPage() {
<div className="admin-drive-card__header">
<div className="admin-drive-card__title">
<span className="admin-drive-card__brand-icon" data-kind={d.kind}>
{d.kind.substring(0, 2)}
{driveKindAbbr(d.kind)}
</span>
<span>{d.name || d.id}</span>
</div>
+10
View File
@@ -12,6 +12,16 @@ export const kindAbbr: Record<string, string> = {
spider91: "91",
};
export function driveKindAbbr(kind: string): string {
const explicit = kindAbbr[kind];
if (explicit) return explicit;
const trimmed = kind.trim();
if (!trimmed) return "??";
const compact = trimmed.replace(/[^a-zA-Z0-9]+/g, "");
return (compact || trimmed).slice(0, 2).toUpperCase();
}
export const kindLabel: Record<string, string> = {
quark: "夸克网盘",
p115: "115 网盘",
+2
View File
@@ -2971,6 +2971,7 @@
display: grid;
place-items: center;
color: #fff;
background: var(--accent);
font-size: 13px;
font-weight: var(--weight-bold);
text-transform: capitalize;
@@ -2983,6 +2984,7 @@
.admin-drive-card__brand-icon[data-kind="pikpak"] { background: var(--drive-pikpak); }
.admin-drive-card__brand-icon[data-kind="wopan"] { background: var(--drive-wopan); }
.admin-drive-card__brand-icon[data-kind="onedrive"] { background: var(--drive-onedrive); }
.admin-drive-card__brand-icon[data-kind="googledrive"] { background: #4285f4; }
.admin-drive-card__brand-icon[data-kind="localstorage"] { background: var(--drive-localstorage); }
.admin-drive-card__brand-icon[data-kind="spider91"] { background: var(--accent); }
+9
View File
@@ -191,6 +191,15 @@ test("drive type selector keeps primary source order", () => {
]);
});
test("drive cards use configured abbreviations and visible fallback icon colors", () => {
assert.match(constantsSource, /googledrive:\s*"GD"/);
assert.match(constantsSource, /function driveKindAbbr\(kind: string\)/);
assert.match(constantsSource, /\.slice\(0, 2\)\.toUpperCase\(\)/);
assert.match(drivesPageSource, /driveKindAbbr\(d\.kind\)/);
assert.match(adminCss, /\.admin-drive-card__brand-icon\s*\{[^}]*background:\s*var\(--accent\);/s);
assert.match(adminCss, /\.admin-drive-card__brand-icon\[data-kind="googledrive"\]\s*\{\s*background:\s*#4285f4;\s*\}/);
});
test("drive management exposes stop task controls", () => {
assert.match(apiSource, /stopDriveTasks/);
assert.match(apiSource, /\/drives\/\$\{encodeURIComponent\(id\)\}\/tasks\/stop/);