ads tracking

This commit is contained in:
Stefan Lange-Hegermann
2025-11-05 11:13:40 +01:00
parent 5fcc33529a
commit ced06f9eb6
198 changed files with 21205 additions and 262 deletions

View File

@@ -592,6 +592,16 @@ struct SystemOverviewView: View {
}
}
private var totalAverageLoadPower: Double {
loads.reduce(0) { result, load in
let power = max(load.power, 0)
guard power > 0 else { return result }
let dutyCycleFraction = max(min(load.dutyCyclePercent, 100), 0) / 100
let usageFraction = max(min(load.dailyUsageHours, 24), 0) / 24
return result + power * dutyCycleFraction * usageFraction
}
}
private var totalCapacity: Double {
batteries.reduce(0) { result, battery in
result + battery.capacityAmpHours
@@ -714,9 +724,11 @@ struct SystemOverviewView: View {
}
private var completedBOMItemCount: Int {
settledLoads.reduce(into: Set<String>()) { partialResult, load in
load.bomCompletedItemIDs.forEach { partialResult.insert($0) }
}.count
settledLoads.reduce(0) { result, load in
let uniqueItems = Set(load.bomCompletedItemIDs)
let cappedCount = min(uniqueItems.count, Self.bomItemsPerLoad)
return result + cappedCount
}
}
private var bomItemsCount: Int {
@@ -794,8 +806,8 @@ struct SystemOverviewView: View {
}
private var estimatedRuntimeHours: Double? {
guard totalPower > 0, totalUsableEnergy > 0 else { return nil }
let hours = totalUsableEnergy / totalPower
guard totalAverageLoadPower > 0, totalUsableEnergy > 0 else { return nil }
let hours = totalUsableEnergy / totalAverageLoadPower
return hours.isFinite && hours > 0 ? hours : nil
}