Schließen-Knopf, Reihenfolge der Tabs in der Detailansicht angepasst.
This commit is contained in:
BIN
Binary file not shown.
@@ -3,8 +3,8 @@ import SwiftUI
|
|||||||
struct StackDetailView: View {
|
struct StackDetailView: View {
|
||||||
let initialStack: Stack
|
let initialStack: Stack
|
||||||
let service: DockgeService
|
let service: DockgeService
|
||||||
|
let onDismiss: () -> Void
|
||||||
|
|
||||||
@Environment(\.dismiss) private var dismiss
|
|
||||||
@State private var stack: Stack
|
@State private var stack: Stack
|
||||||
@State private var selectedTab = 0
|
@State private var selectedTab = 0
|
||||||
@State private var isEditing = false
|
@State private var isEditing = false
|
||||||
@@ -15,9 +15,10 @@ struct StackDetailView: View {
|
|||||||
@State private var actionError: String?
|
@State private var actionError: String?
|
||||||
@State private var showDeleteConfirmation = false
|
@State private var showDeleteConfirmation = false
|
||||||
|
|
||||||
init(initialStack: Stack, service: DockgeService) {
|
init(initialStack: Stack, service: DockgeService, onDismiss: @escaping () -> Void) {
|
||||||
self.initialStack = initialStack
|
self.initialStack = initialStack
|
||||||
self.service = service
|
self.service = service
|
||||||
|
self.onDismiss = onDismiss
|
||||||
_stack = State(initialValue: initialStack)
|
_stack = State(initialValue: initialStack)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,9 +82,9 @@ private struct FloppyDiskShape: Shape {
|
|||||||
|
|
||||||
// Tabs
|
// Tabs
|
||||||
Picker("Tab", selection: $selectedTab) {
|
Picker("Tab", selection: $selectedTab) {
|
||||||
Text("Services").tag(0)
|
Text("Compose").tag(0)
|
||||||
Text("Compose").tag(1)
|
Text("Env").tag(1)
|
||||||
Text("Env").tag(2)
|
Text("Services").tag(2)
|
||||||
Text("Logs").tag(3)
|
Text("Logs").tag(3)
|
||||||
}
|
}
|
||||||
.pickerStyle(.segmented)
|
.pickerStyle(.segmented)
|
||||||
@@ -107,12 +108,12 @@ private struct FloppyDiskShape: Shape {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
ToolbarItem(placement: .navigationBarLeading) {
|
ToolbarItem(placement: .navigationBarLeading) {
|
||||||
Button { dismiss() } label: {
|
Button { onDismiss() } label: {
|
||||||
Image(systemName: "xmark")
|
Image(systemName: "xmark")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ToolbarItemGroup(placement: .navigationBarTrailing) {
|
ToolbarItemGroup(placement: .navigationBarTrailing) {
|
||||||
if selectedTab == 1 || selectedTab == 2 {
|
if selectedTab == 0 || selectedTab == 1 {
|
||||||
if isEditing {
|
if isEditing {
|
||||||
Button {
|
Button {
|
||||||
Task { await deployChanges() }
|
Task { await deployChanges() }
|
||||||
@@ -153,7 +154,7 @@ private struct FloppyDiskShape: Shape {
|
|||||||
Button("Delete Stack", role: .destructive) {
|
Button("Delete Stack", role: .destructive) {
|
||||||
Task {
|
Task {
|
||||||
let error = await service.deleteStack(stack.name, endpoint: stack.endpoint)
|
let error = await service.deleteStack(stack.name, endpoint: stack.endpoint)
|
||||||
if error == nil { dismiss() }
|
if error == nil { onDismiss() }
|
||||||
if let msg = error { actionError = msg }
|
if let msg = error { actionError = msg }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -246,11 +247,11 @@ private struct FloppyDiskShape: Shape {
|
|||||||
private var tabContent: some View {
|
private var tabContent: some View {
|
||||||
switch selectedTab {
|
switch selectedTab {
|
||||||
case 0:
|
case 0:
|
||||||
ServicesTabView(stackName: stack.name, endpoint: stack.endpoint, service: service)
|
|
||||||
case 1:
|
|
||||||
ComposeTabView(yaml: $editYAML, isEditing: isEditing, onSave: saveChanges)
|
ComposeTabView(yaml: $editYAML, isEditing: isEditing, onSave: saveChanges)
|
||||||
case 2:
|
case 1:
|
||||||
EnvTabView(env: $editENV, isEditing: isEditing)
|
EnvTabView(env: $editENV, isEditing: isEditing)
|
||||||
|
case 2:
|
||||||
|
ServicesTabView(stackName: stack.name, endpoint: stack.endpoint, service: service)
|
||||||
case 3:
|
case 3:
|
||||||
LogsTabView(stackName: stack.name, endpoint: stack.endpoint, service: service)
|
LogsTabView(stackName: stack.name, endpoint: stack.endpoint, service: service)
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ struct StacksView: View {
|
|||||||
}
|
}
|
||||||
.sheet(item: $selectedStack) { stack in
|
.sheet(item: $selectedStack) { stack in
|
||||||
if let service = appState.dockgeService {
|
if let service = appState.dockgeService {
|
||||||
StackDetailView(initialStack: stack, service: service)
|
StackDetailView(initialStack: stack, service: service) { selectedStack = nil }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.sheet(isPresented: $showCreateSheet) {
|
.sheet(isPresented: $showCreateSheet) {
|
||||||
|
|||||||
Reference in New Issue
Block a user