public void setMarkers(FamilyMembers family, GMapOverlay overlay, int year) { overlay.Markers.Clear(); List <Member> members = family.getLiving(year); for (int i = 0; i < members.Count; i++) { Tuple <double, double> loc = this.lookupLocation(members[i].BirthLocation); if (loc == null) { continue; } GMarkerGoogle marker = new GMarkerGoogle( new PointLatLng(loc.Item1, loc.Item2), GMarkerGoogleType.green ); marker.Tag = members[i]; overlay.Markers.Add(marker); } }
private void InitObjects() { Preferences.Init(); _mapData = new Maps(); _family = new FamilyMembers(_mapData); _stats = new FamilyStats(_family); this.currentMember = Preferences.RootUser; }
public FamilyStats(FamilyMembers family) { this._family = family; this._members = family.Family; this._maxGeneration = _members.Count > 0 ? (int)_members.Select(m => m.Generations.Count > 0 ? m.Generations.Select(g => g.Depth).Max() : -1).Max() + 1 : 0; this._familyCounts = new List <ChartData>(); this._familyCountsExtended = new List <ChartData>(); Member root = _family.getMember(Preferences.RootUser); if (root != null) { getRegionNameCounts(false, ref _familyCounts); getRegionNameCounts(true, ref _familyCountsExtended); } }
public void getCountByGenerationAndLocation(FamilyMembers family, Boolean percent, Boolean extend, ref Chart chart) { chart.Series.Clear(); List <ChartData> results = ( from ChartData d in (extend ? this._familyCountsExtended : this._familyCounts) group d by new { d.xValue, d.series, } into grp select new ChartData { yValue = grp.Sum(g => g.yValue), xValue = grp.Key.xValue, series = grp.Key.series == "" ? "UNKNOWN" : grp.Key.series } ).ToList(); string[] series = ( from r in results group r by r.series into grp orderby grp.Sum(g => g.yValue) select grp.Key ).ToArray(); string[] regionOrder = Preferences.CountryOrder; for (int i = 0; i < regionOrder.Length; i++) { if (series.Contains(regionOrder[i])) { Series s = new Series { Name = regionOrder[i], ChartType = SeriesChartType.StackedArea100, XValueType = ChartValueType.Int32, ToolTip = "(#SERIESNAME, Gen -#VALX, #VALY)" }; if (!percent) { s.ChartType = SeriesChartType.StackedArea; } if (Preferences.CountryColors.ContainsKey(regionOrder[i]) && Preferences.CountryColors[regionOrder[i]] != "") { s.Color = fromHex(Preferences.CountryColors[regionOrder[i]]); } for (int j = 0; j < _maxGeneration; j++) { s.Points.AddXY(j, (from r in results where r.series == regionOrder[i] && r.xValue == j select r.yValue).FirstOrDefault()); } chart.Series.Add(s); } } for (int i = 0; i < series.Length; i++) { if (!regionOrder.Contains(series[i])) { Series s = new Series { Name = series[i], ChartType = SeriesChartType.StackedArea100, XValueType = ChartValueType.Int32, ToolTip = "(#SERIESNAME, Gen -#VALX, #VALY)" };; if (!percent) { s.ChartType = SeriesChartType.StackedArea; } if (Preferences.CountryColors.ContainsKey(series[i]) && Preferences.CountryColors[series[i]] != "") { s.Color = fromHex(Preferences.CountryColors[series[i]]); } for (int j = 0; j < _maxGeneration; j++) { s.Points.AddXY(j, (from r in results where r.series == series[i] && r.xValue == j select r.yValue).FirstOrDefault()); } chart.Series.Add(s); } } chart.ChartAreas[0].AxisX.Maximum = _maxGeneration - 1; chart.ChartAreas[0].RecalculateAxesScale(); chart.Invalidate(); }