Пример #1
0
        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);
            }
        }
Пример #2
0
        private void InitObjects()
        {
            Preferences.Init();
            _mapData = new Maps();
            _family  = new FamilyMembers(_mapData);
            _stats   = new FamilyStats(_family);

            this.currentMember = Preferences.RootUser;
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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();
        }