ads tracking
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user