Show front percent for switches with no fronter

Closes #113.
This commit is contained in:
Ske
2019-07-15 21:51:41 +02:00
parent 05f7ead62e
commit b6ba24d171
2 changed files with 25 additions and 5 deletions

View File

@@ -314,11 +314,19 @@ namespace PluralKit {
return outList;
}
public async Task<IDictionary<PKMember, Duration>> GetPerMemberSwitchDuration(PKSystem system, Instant periodStart,
public struct PerMemberSwitchDuration
{
public Dictionary<PKMember, Duration> MemberSwitchDurations;
public Duration NoFronterDuration;
}
public async Task<PerMemberSwitchDuration> GetPerMemberSwitchDuration(PKSystem system, Instant periodStart,
Instant periodEnd)
{
var dict = new Dictionary<PKMember, Duration>();
var noFronterDuration = Duration.Zero;
// Sum up all switch durations for each member
// switches with multiple members will result in the duration to add up to more than the actual period range
foreach (var sw in await GetTruncatedSwitchList(system, periodStart, periodEnd))
@@ -328,9 +336,15 @@ namespace PluralKit {
if (!dict.ContainsKey(member)) dict.Add(member, sw.TimespanWithinRange);
else dict[member] += sw.TimespanWithinRange;
}
if (sw.Members.Count == 0) noFronterDuration += sw.TimespanWithinRange;
}
return dict;
return new PerMemberSwitchDuration
{
MemberSwitchDurations = dict,
NoFronterDuration = noFronterDuration
};
}
}
}