Skip to content

Commit 26a64d2

Browse files
author
root
committed
fix pr gate
1 parent 4f6e8e5 commit 26a64d2

65 files changed

Lines changed: 2038 additions & 1504 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

web/src/components/docker/CommandTab.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,7 @@ export function CommandTab({ serverId = 'local' }: { serverId?: string }) {
9494
})}
9595
<br />
9696
{t('command.exampleLabel', { defaultValue: 'Example:' })} <code>ps -a</code>,{' '}
97-
<code>images</code>, <code>compose ls</code>,{' '}
98-
<code>network ls</code>
97+
<code>images</code>, <code>compose ls</code>, <code>network ls</code>
9998
</p>
10099
)}
101100
{history.map(entry => (

web/src/components/docker/ComposeTab.tsx

Lines changed: 59 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -447,12 +447,14 @@ export function ComposeTab({
447447
setProjectContainers(grouped)
448448
setProjectContainersHydrated(true)
449449
} catch (err) {
450-
setActionError(
451-
getApiErrorMessage(
452-
err,
453-
t('compose.errors.loadContainers', { defaultValue: 'Failed to load compose containers' })
454-
)
450+
setActionError(
451+
getApiErrorMessage(
452+
err,
453+
t('compose.errors.loadContainers', {
454+
defaultValue: 'Failed to load compose containers',
455+
})
455456
)
457+
)
456458
} finally {
457459
setProjectContainersLoading(state => {
458460
const next = { ...state }
@@ -587,11 +589,11 @@ export function ComposeTab({
587589
setTextDialogContent(
588590
getApiErrorMessage(
589591
err,
590-
request.kind === 'logs'
591-
? t('compose.errors.loadLogs', { defaultValue: 'Failed to load logs' })
592-
: t('compose.errors.loadConfig', { defaultValue: 'Failed to load config' })
593-
)
592+
request.kind === 'logs'
593+
? t('compose.errors.loadLogs', { defaultValue: 'Failed to load logs' })
594+
: t('compose.errors.loadConfig', { defaultValue: 'Failed to load config' })
594595
)
596+
)
595597
} finally {
596598
setTextDialogLoading(false)
597599
}
@@ -749,7 +751,9 @@ export function ComposeTab({
749751
className="h-7 min-w-0 px-0.5"
750752
onClick={() => changePage(Math.max(1, effectivePage - 1))}
751753
disabled={effectivePage <= 1}
752-
aria-label={t('compose.pagination.previous', { defaultValue: 'Previous compose page' })}
754+
aria-label={t('compose.pagination.previous', {
755+
defaultValue: 'Previous compose page',
756+
})}
753757
>
754758
<ChevronLeft className="h-3.5 w-3.5" />
755759
</Button>
@@ -762,7 +766,7 @@ export function ComposeTab({
762766
className="h-7 min-w-0 px-0.5"
763767
onClick={() => changePage(Math.min(totalPages, effectivePage + 1))}
764768
disabled={effectivePage >= totalPages}
765-
aria-label={t('compose.pagination.next', { defaultValue: 'Next compose page' })}
769+
aria-label={t('compose.pagination.next', { defaultValue: 'Next compose page' })}
766770
>
767771
<ChevronRight className="h-3.5 w-3.5" />
768772
</Button>
@@ -773,7 +777,9 @@ export function ComposeTab({
773777
variant="outline"
774778
size="icon"
775779
className="h-8 w-8"
776-
aria-label={t('compose.settings.button', { defaultValue: 'Compose display settings' })}
780+
aria-label={t('compose.settings.button', {
781+
defaultValue: 'Compose display settings',
782+
})}
777783
title={t('compose.settings.button', { defaultValue: 'Compose display settings' })}
778784
>
779785
<Settings2 className="h-4 w-4" />
@@ -784,16 +790,16 @@ export function ComposeTab({
784790
value={String(effectivePageSize)}
785791
onValueChange={value => changePageSize(Number(value) as 25 | 50 | 100)}
786792
>
787-
<DropdownMenuRadioItem value="25">
788-
{t('compose.settings.perPage', { count: 25, defaultValue: '{{count}} / page' })}
789-
</DropdownMenuRadioItem>
790-
<DropdownMenuRadioItem value="50">
791-
{t('compose.settings.perPage', { count: 50, defaultValue: '{{count}} / page' })}
792-
</DropdownMenuRadioItem>
793-
<DropdownMenuRadioItem value="100">
794-
{t('compose.settings.perPage', { count: 100, defaultValue: '{{count}} / page' })}
795-
</DropdownMenuRadioItem>
796-
</DropdownMenuRadioGroup>
793+
<DropdownMenuRadioItem value="25">
794+
{t('compose.settings.perPage', { count: 25, defaultValue: '{{count}} / page' })}
795+
</DropdownMenuRadioItem>
796+
<DropdownMenuRadioItem value="50">
797+
{t('compose.settings.perPage', { count: 50, defaultValue: '{{count}} / page' })}
798+
</DropdownMenuRadioItem>
799+
<DropdownMenuRadioItem value="100">
800+
{t('compose.settings.perPage', { count: 100, defaultValue: '{{count}} / page' })}
801+
</DropdownMenuRadioItem>
802+
</DropdownMenuRadioGroup>
797803
</DropdownMenuContent>
798804
</DropdownMenu>
799805
</div>
@@ -834,12 +840,12 @@ export function ComposeTab({
834840
{(hasProjectContainerLoading || operationLoading) && !embeddedInWorkspace && (
835841
<div className="flex shrink-0 flex-wrap items-center gap-2 rounded-lg border border-dashed bg-muted/10 px-3 py-2">
836842
{hasProjectContainerLoading ? (
837-
<Badge variant="outline">
838-
{t('compose.loading.projectContainers', {
839-
defaultValue: 'Loading project containers...',
840-
})}
841-
</Badge>
842-
) : null}
843+
<Badge variant="outline">
844+
{t('compose.loading.projectContainers', {
845+
defaultValue: 'Loading project containers...',
846+
})}
847+
</Badge>
848+
) : null}
843849
{operationLoading && operationRequest ? (
844850
<Badge variant="outline" className="inline-flex items-center gap-1">
845851
<Loader2 className="h-3 w-3 animate-spin" />
@@ -856,7 +862,10 @@ export function ComposeTab({
856862
<TableRow>
857863
<TableHead className="min-w-[220px] pl-4 pr-2">
858864
<div className="flex items-center">
859-
<SortHead label={t('compose.columns.project', { defaultValue: 'Project' })} keyName="project" />
865+
<SortHead
866+
label={t('compose.columns.project', { defaultValue: 'Project' })}
867+
keyName="project"
868+
/>
860869
</div>
861870
</TableHead>
862871
<TableHead className="min-w-[140px]">
@@ -875,10 +884,14 @@ export function ComposeTab({
875884
statusFilter !== 'all' &&
876885
'bg-primary/10 text-primary hover:bg-primary/15 hover:text-primary'
877886
)}
878-
aria-label={t('compose.filters.statusAria', { defaultValue: 'Filter compose status' })}
887+
aria-label={t('compose.filters.statusAria', {
888+
defaultValue: 'Filter compose status',
889+
})}
879890
title={
880891
statusFilter === 'all'
881-
? t('compose.filters.statusAria', { defaultValue: 'Filter compose status' })
892+
? t('compose.filters.statusAria', {
893+
defaultValue: 'Filter compose status',
894+
})
882895
: t('compose.filters.statusTitle', {
883896
value: statusFilter,
884897
defaultValue: 'Compose status: {{value}}',
@@ -1207,7 +1220,9 @@ export function ComposeTab({
12071220
<div className="space-y-4 rounded-lg border bg-background p-4 shadow-sm">
12081221
<div>
12091222
<div className="mb-2 text-xs font-medium text-muted-foreground">
1210-
{t('compose.expanded.servicesTitle', { defaultValue: 'Compose Services' })}
1223+
{t('compose.expanded.servicesTitle', {
1224+
defaultValue: 'Compose Services',
1225+
})}
12111226
</div>
12121227
{projectPsLoading[project.Name] ? (
12131228
<div className="text-xs text-muted-foreground">
@@ -1221,10 +1236,14 @@ export function ComposeTab({
12211236
<thead className="bg-muted/30 text-muted-foreground">
12221237
<tr>
12231238
<th className="px-3 py-2 text-left font-medium">
1224-
{t('compose.expanded.service', { defaultValue: 'Service' })}
1239+
{t('compose.expanded.service', {
1240+
defaultValue: 'Service',
1241+
})}
12251242
</th>
12261243
<th className="px-3 py-2 text-left font-medium">
1227-
{t('compose.expanded.container', { defaultValue: 'Container' })}
1244+
{t('compose.expanded.container', {
1245+
defaultValue: 'Container',
1246+
})}
12281247
</th>
12291248
<th className="px-3 py-2 text-left font-medium">
12301249
{t('compose.expanded.state', { defaultValue: 'State' })}
@@ -1402,7 +1421,9 @@ export function ComposeTab({
14021421
}
14031422
emptyText={
14041423
operationFailed
1405-
? t('compose.operation.failedEmpty', { defaultValue: '(operation failed without output)' })
1424+
? t('compose.operation.failedEmpty', {
1425+
defaultValue: '(operation failed without output)',
1426+
})
14061427
: t('compose.operation.completedEmpty', {
14071428
defaultValue: '(operation completed with no output)',
14081429
})
@@ -1413,7 +1434,9 @@ export function ComposeTab({
14131434
: 'compose-operation'
14141435
}
14151436
downloadExtension="log"
1416-
copySuccessText={t('compose.operation.copySuccess', { defaultValue: 'Operation output copied' })}
1437+
copySuccessText={t('compose.operation.copySuccess', {
1438+
defaultValue: 'Operation output copied',
1439+
})}
14171440
copyFailureText={t('compose.operation.copyFailure', {
14181441
defaultValue: 'Failed to copy operation output',
14191442
})}

web/src/components/docker/ContainersTab.labels.test.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ vi.mock('@/lib/pb', () => ({
1717
vi.mock('react-i18next', () => ({
1818
useTranslation: () => ({
1919
t: (key: string, options?: Record<string, unknown>) => {
20-
if (options?.defaultValue_other && typeof options?.count === 'number' && options.count !== 1) {
20+
if (
21+
options?.defaultValue_other &&
22+
typeof options?.count === 'number' &&
23+
options.count !== 1
24+
) {
2125
return String(options.defaultValue_other).replace('{{count}}', String(options.count))
2226
}
2327
if (options?.defaultValue_one && options?.count === 1) {

web/src/components/docker/ContainersTab.test.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,13 @@ vi.mock('react-i18next', () => ({
8080
}
8181
if (key === 'containers.volumeCount') {
8282
const count = Number(values?.count ?? 0)
83-
const template = count === 1 ? translations['containers.volumeCount_one'] : translations['containers.volumeCount_other']
84-
return template.replace(/\{\{(\w+)\}\}/g, (_, token: string) => String(values?.[token] ?? ''))
83+
const template =
84+
count === 1
85+
? translations['containers.volumeCount_one']
86+
: translations['containers.volumeCount_other']
87+
return template.replace(/\{\{(\w+)\}\}/g, (_, token: string) =>
88+
String(values?.[token] ?? '')
89+
)
8590
}
8691
const template =
8792
translations[key] ||

0 commit comments

Comments
 (0)