2024-05-31 10:04:43 -07:00
|
|
|
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
|
|
|
|
|
2024-05-31 10:47:06 -07:00
|
|
|
let columnCount = 2
|
|
|
|
var columns: [GridItem] {
|
|
|
|
Array(repeatElement(GridItem(.flexible()), count: columnCount))
|
|
|
|
}
|
2024-05-31 10:04:43 -07:00
|
|
|
var body: some View {
|
2024-05-31 11:23:36 -07:00
|
|
|
HStack(spacing: 5) {
|
|
|
|
VStack (spacing: 5) {
|
2024-05-31 10:04:43 -07:00
|
|
|
|
2024-06-03 15:26:56 -07:00
|
|
|
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]))
|
|
|
|
}
|
2024-05-31 10:04:43 -07:00
|
|
|
}
|
|
|
|
|
2024-05-31 11:23:36 -07:00
|
|
|
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))
|
|
|
|
}
|
2024-05-31 10:04:43 -07:00
|
|
|
|
2024-05-31 11:23:36 -07:00
|
|
|
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))
|
|
|
|
}
|
|
|
|
}
|
2024-05-31 10:04:43 -07:00
|
|
|
|
2024-06-07 08:24:33 -07:00
|
|
|
VStack(spacing: 5) {
|
|
|
|
|
|
|
|
let fr = allRibbons[0]
|
|
|
|
let currentPos = (fr.currentLevel - fr.minLevel) %% totalLevels
|
|
|
|
let text = "current pos: \(currentPos)"
|
|
|
|
|
|
|
|
Text(text)
|
|
|
|
.foregroundColor(Color(UIColor(red: 0.76, green: 0.76, blue: 0.76, alpha: 1.00)))
|
|
|
|
.font(Font.custom("AveriaSerifLibre-Regular", size: fontSize))
|
|
|
|
ForEach(RibbonMap(ribbons: allRibbons), id: \.self) { ribbon in
|
|
|
|
RibbonDebug(ribbonDebug: ribbon)
|
|
|
|
}
|
2024-05-31 10:04:43 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
func RibbonMap(ribbons: [Ribbon]) -> [[String]] {
|
|
|
|
var retStrings = [[String]]()
|
|
|
|
for r in ribbons {
|
|
|
|
var debugString = RibbonDebugPrint(ribbon:r)
|
|
|
|
retStrings.append(debugString)
|
|
|
|
}
|
2024-06-07 08:24:33 -07:00
|
|
|
|
|
|
|
let sortedStats = retStrings.sorted {
|
|
|
|
Int($0[0])! > Int($1[0])!
|
|
|
|
}
|
|
|
|
|
|
|
|
return sortedStats
|
2024-05-31 10:04:43 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
func RibbonDebugPrint(ribbon: Ribbon) -> [String] {
|
|
|
|
var ribbonStats = [String]()
|
2024-06-07 08:24:33 -07:00
|
|
|
let undoPos = (ribbon.undoLevel - ribbon.minLevel) %% totalLevels
|
|
|
|
ribbonStats.append("\(undoPos)")
|
2024-05-31 10:04:43 -07:00
|
|
|
ribbonStats.append("id: \(ribbon.id) ")
|
|
|
|
ribbonStats.append("scrollOffset: \(ribbon.scrollOffset)")
|
|
|
|
ribbonStats.append("scrollId: \(ribbon.scrollId)")
|
2024-06-07 08:24:33 -07:00
|
|
|
|
|
|
|
// ribbonStats.append("undoLevel: \(ribbon.undoLevel)")
|
|
|
|
// ribbonStats.append("currentLevel: \(ribbon.currentLevel)")
|
|
|
|
// ribbonStats.append("minLevel: \(ribbon.minLevel)")
|
|
|
|
// ribbonStats.append("maxLevel: \(ribbon.maxLevel)")
|
2024-05-31 10:04:43 -07:00
|
|
|
return ribbonStats
|
|
|
|
}
|
|
|
|
|
|
|
|
struct RibbonDebug: View {
|
2024-06-03 15:26:56 -07:00
|
|
|
var ribbonDebug: [String]
|
2024-05-31 10:04:43 -07:00
|
|
|
|
|
|
|
var body: some View {
|
|
|
|
|
|
|
|
VStack {
|
|
|
|
VStack {
|
|
|
|
// let ribbonStats = RibbonDebugPrint(ribbon: ribbon)
|
|
|
|
ForEach(ribbonDebug, id: \.self) {
|
|
|
|
Text($0)
|
|
|
|
.foregroundColor(Color(UIColor(red: 0.76, green: 0.76, blue: 0.76, alpha: 1.00)))
|
|
|
|
.font(Font.custom("AveriaSerifLibre-Regular", size: fontSize))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|