45 lines
1.5 KiB
HTML
45 lines
1.5 KiB
HTML
<div class="project-details-wrapper">
|
|
<div class="main-header">
|
|
<h1>{{ project?.name || 'nt6' }}</h1>
|
|
<div class="actions">
|
|
<button mat-flat-button color="primary" (click)="deploy()">▶ DEPLOY</button>
|
|
<button mat-flat-button (click)="stop()">■ STOP</button>
|
|
<button mat-flat-button color="warn" (click)="confirmDelete()">🗑 DELETE PROJECT</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section-divider">
|
|
<mat-icon>layers</mat-icon>
|
|
<h2>CONTAINERS</h2>
|
|
</div>
|
|
|
|
<div class="containers-grid">
|
|
@for (container of containers; track container.name) {
|
|
<mat-card class="container-card">
|
|
<mat-card-content class="card-layout">
|
|
<div class="card-left">
|
|
<span class="c-name">{{ container.name }}</span>
|
|
<span class="c-image">{{ container.image }}</span>
|
|
</div>
|
|
<div class="card-right">
|
|
<div class="state-dot" [class.running]="container.state === 'running'"></div>
|
|
<span class="uptime">{{ container.status }}</span>
|
|
</div>
|
|
</mat-card-content>
|
|
</mat-card>
|
|
}
|
|
</div>
|
|
|
|
<div class="content-section-terminal">
|
|
<div class="terminal-header">
|
|
<h3>>_ DOCKER COMPOSE OUTPUT</h3>
|
|
<button mat-icon-button (click)="logs = []"><mat-icon>delete_sweep</mat-icon></button>
|
|
</div>
|
|
<div class="terminal-window" #consoleScroll>
|
|
@for (line of logs; track $index) {
|
|
<div class="log-line" [innerHTML]="formatLogLine(line)"></div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|