import GRDB import GRDBQuery import Foundation import SwiftUI var fontSize = CGFloat(12) struct StatsPanel: View { @ObservedObject var paneConnector: PaneConnector @Query(RibbonRequest(dir: .prev, groupId: 1)) private var backRibbon: [Ribbon] @Query(RibbonRequest(dir: .next, groupId: 1)) private var nextRibbon: [Ribbon] @Query(RibbonRequest(groupId: 1)) private var allRibbons: [Ribbon] @Query(SelectedRibbonRequest()) private var selectedRibbon: [Ribbon] @Environment(\.appDatabase) private var appDatabase let columnCount = 2 var columns: [GridItem] { Array(repeatElement(GridItem(.flexible()), count: columnCount)) } var body: some View { HStack(spacing: 5) { VStack (spacing: 5) { if backRibbon.count > 0 { VStack { Text("back Ribbon") .foregroundColor(Color(UIColor(red: 0.76, green: 0.76, blue: 0.76, alpha: 1.00))) .font(Font.custom("AveriaSerifLibre-Regular", size: fontSize)) RibbonDebug(ribbonDebug: RibbonDebugPrint(ribbon: backRibbon[0])) } } VStack { Text("next Ribbon") .foregroundColor(Color(UIColor(red: 0.76, green: 0.76, blue: 0.76, alpha: 1.00))) .font(Font.custom("AveriaSerifLibre-Regular", size: fontSize)) if nextRibbon.count > 0 { RibbonDebug(ribbonDebug: RibbonDebugPrint(ribbon: nextRibbon[0])) } } VStack { Text("selected Ribbon") .foregroundColor(Color(UIColor(red: 0.76, green: 0.76, blue: 0.76, alpha: 1.00))) .font(Font.custom("AveriaSerifLibre-Regular", size: fontSize)) RibbonDebug(ribbonDebug: RibbonDebugPrint(ribbon: selectedRibbon[0])) } VStack { Text("pc offset: \(paneConnector.currentOffset)") .foregroundColor(Color(UIColor(red: 0.76, green: 0.76, blue: 0.76, alpha: 1.00))) .font(Font.custom("AveriaSerifLibre-Regular", size: fontSize)) } VStack { Text("pc id: \(paneConnector.currentId)") .foregroundColor(Color(UIColor(red: 0.76, green: 0.76, blue: 0.76, alpha: 1.00))) .font(Font.custom("AveriaSerifLibre-Regular", size: fontSize)) } } VStack (spacing: 5) { ForEach(RibbonMap(ribbons: allRibbons), id: \.self) { ribbon in Print("quack3: \(ribbon)") RibbonDebug(ribbonDebug: ribbon) } } } } } func RibbonMap(ribbons: [Ribbon]) -> [[String]] { var retStrings = [[String]]() for r in ribbons { var debugString = RibbonDebugPrint(ribbon:r) retStrings.append(debugString) } return retStrings } func RibbonDebugPrint(ribbon: Ribbon) -> [String] { var ribbonStats = [String]() ribbonStats.append("id: \(ribbon.id) ") ribbonStats.append("scrollOffset: \(ribbon.scrollOffset)") ribbonStats.append("scrollId: \(ribbon.scrollId)") ribbonStats.append("undoLevel: \(ribbon.undoLevel)") ribbonStats.append("currentLevel: \(ribbon.currentLevel)") ribbonStats.append("minLevel: \(ribbon.minLevel)") ribbonStats.append("maxLevel: \(ribbon.maxLevel)") return ribbonStats } struct RibbonDebug: View { var ribbonDebug: [String] var body: some View { VStack { VStack { // let ribbonStats = RibbonDebugPrint(ribbon: ribbon) Print("quack2: \(ribbonDebug)") ForEach(ribbonDebug, id: \.self) { Print("quack2 : \($0)") Text($0) .foregroundColor(Color(UIColor(red: 0.76, green: 0.76, blue: 0.76, alpha: 1.00))) .font(Font.custom("AveriaSerifLibre-Regular", size: fontSize)) } } } } }