public static void FilterActivityStats(List <ActivityStatsHeader <ActivityStatsData> > p_list) { foreach (ActivityStatsHeader <ActivityStatsData> header in p_list) { ActivityStatsHeader <ActivityStatsData> headerHolder = ActivityStatsHeader <ActivityStatsData> .CopyData(header); header.Clear(); foreach (ActivityStatsData cell in headerHolder) { if (!header.Contains(cell.ActType)) { header.Add(cell); } else { ActivityStatsData filtered = header.GetAny(cell.ActType); filtered.Steps += cell.Steps; filtered.Distance += cell.Distance; filtered.Calories += cell.Calories; filtered.Altitude += cell.Altitude; } } // update data for sub slider foreach (ActivityStatsData cell in header) { cell.UpdateData(); } } }
/**************************************************************** * Helpers **/ public static List <ActivityStatsHeader <ActivityStatsData> > ListFrom(List <ActivityStatsData> p_activities) { List <ActivityStatsHeader <ActivityStatsData> > list = new List <ActivityStatsHeader <ActivityStatsData> >(); // string = (DAY OF WEEK)_(DATE) | ActivityStatsHeader::DateString Dictionary <string, ActivityStatsHeader <ActivityStatsData> > mapData = new Dictionary <string, ActivityStatsHeader <ActivityStatsData> >(); foreach (ActivityStatsData cellData in p_activities) { DateTime epoch = KreyosUtils.ToDateTime((long)cellData.EpochTime); string dateKey = KreyosUtils.DateString(epoch); if (!mapData.ContainsKey(dateKey)) { ActivityStatsHeader <ActivityStatsData> headerData = new ActivityStatsHeader <ActivityStatsData>((uint)cellData.EpochTime); mapData.Add(dateKey, headerData); list.Add(headerData); } mapData[dateKey].Add(cellData); mapData[dateKey].UpdateTotalValues(); Debug.WriteLine("MainPage::ListFrom epoch:" + epoch + " dateKey:" + dateKey + " count:" + list.Count + " headCount:" + mapData[dateKey].Count + " unix:" + (long)cellData.EpochTime); } return(list); }
public static ActivityStatsHeader <T> CopyData(ActivityStatsHeader <T> p_list) { ActivityStatsHeader <T> dup = new ActivityStatsHeader <T>(p_list.UnixTime); foreach (T cell in p_list) { dup.Add(cell); } return(dup); }