{environments.length} total
{#if $canAccess('environments', 'create')} {/if}
{#if envLoading && environments.length === 0}

Loading environments...

{:else if environments.length === 0}

No environments found

{:else}
Name Connection Labels Timezone Features Status Docker Hawser Actions {#each environments as env (env.id)} {@const testResult = testResults[env.id]} {@const isTesting = testingEnvs.has(env.id)} {@const hasScannerEnabled = envScannerStatus[env.id]} {@const EnvIcon = getIconComponent(env.icon || 'globe')}
{#if env.connectionType === 'socket' || !env.connectionType} {:else if env.connectionType === 'direct'} {:else if env.connectionType === 'hawser-standard'} {:else if env.connectionType === 'hawser-edge'} {/if} {env.name}
{#if env.connectionType === 'socket' || !env.connectionType} {env.socketPath || '/var/run/docker.sock'} {:else if env.connectionType === 'hawser-edge'} Edge connection (outbound) {:else} {env.protocol || 'http'}://{env.host}:{env.port || 2375} {/if} {#if env.labels && env.labels.length > 0}
{#each env.labels as label} {@const colors = getLabelColors(label)} {label} {/each}
{:else} {/if}
{#if env.timezone}
{env.timezone}
{:else} {/if}
{#if env.updateCheckEnabled} {#if env.updateCheckAutoUpdate} {:else} {/if} {/if} {#if hasScannerEnabled} {/if} {#if env.collectActivity} {/if} {#if env.collectMetrics} {/if} {#if !env.updateCheckEnabled && !hasScannerEnabled && !env.collectActivity && !env.collectMetrics} {/if}
{#if testResult} {#if testResult.success}
{#if isTesting} {:else} {/if} Connected
{:else}
{#if isTesting} {:else} {/if} Failed
{/if} {:else if isTesting}
Testing...
{:else} Not tested {/if}
{#if testResult?.info?.serverVersion} {testResult.info.serverVersion} {:else} {/if} {#if testResult?.hawser?.hawserVersion} {testResult.hawser.hawserVersion} {:else if env.hawserVersion} {env.hawserVersion} {:else} {/if}
{#if $canAccess('environments', 'edit')} {/if} {#if $canAccess('containers', 'remove') && $canAccess('images', 'remove') && $canAccess('volumes', 'remove') && $canAccess('networks', 'remove')} pruneSystem(env.id)} onOpenChange={(open) => confirmPruneEnvId = open ? env.id : null} > {#snippet children({ open })} {/snippet} {/if} {#if $canAccess('environments', 'delete')} deleteEnvironment(env.id)} onOpenChange={(open) => confirmDeleteEnvId = open ? env.id : null} > {#snippet children({ open })} {/snippet} {/if}
{/each}
{/if}