Esempio n. 1
0
        public StatisticsWin(IBaseWindow baseWin, List <GEDCOMRecord> selectedRecords)
        {
            InitializeComponent();

            tbExcelExport.Image = UIHelper.LoadResourceImage("Resources.btn_excel.gif");

            fGraph      = new ZGraphControl();
            fGraph.Dock = DockStyle.Right;
            fGraph.Size = new Size(400, 200);

            Splitter spl = new Splitter();

            spl.Dock     = DockStyle.Right;
            spl.Size     = new Size(4, 290);
            spl.MinExtra = 100;
            spl.MinSize  = 100;
            Panel1.Controls.Add(fGraph);
            Panel1.Controls.Add(spl);

            fListStats = UIHelper.CreateListView(Panel1);
            fListStats.AddColumn("-", 250, false);
            fListStats.AddColumn("-", 150, false);

            Panel1.Controls.SetChildIndex(fListStats, 0);
            Panel1.Controls.SetChildIndex(spl, 2);
            Panel1.Controls.SetChildIndex(fGraph, 3);
            Panel1.Controls.SetChildIndex(ToolBar1, 4);

            fController = new StatisticsWinController(this, selectedRecords);
            fController.Init(baseWin);

            fCurrentMode = StatsMode.smAncestors;

            SetLang();
        }
Esempio n. 2
0
        public StatisticsWin(IBaseWindow baseWin, List <GEDCOMRecord> selectedRecords)
        {
            InitializeComponent();

            fGraph = new ZGraphControl();

            fListStats = new GKListView();
            fListStats.AddColumn("-", 250, false);
            fListStats.AddColumn("-", 150, false);

            Splitter spl = new Splitter();

            spl.Panel1                 = fListStats;
            spl.Panel2                 = fGraph;
            spl.RelativePosition       = 300;
            spl.Orientation            = Orientation.Horizontal;
            spl.FixedPanel             = SplitterFixedPanel.Panel2;
            panDataPlaceholder.Content = spl;

            fBase            = baseWin;
            fSelectedRecords = selectedRecords;
            fTreeStats       = new TreeStats(fBase.Context, fSelectedRecords);
            fCurrentMode     = StatsMode.smAncestors;

            SetLang();
        }
Esempio n. 3
0
        public StatisticsWin(IBaseWindow baseWin, List <GDMRecord> selectedRecords)
        {
            InitializeComponent();

            tbExcelExport.Image = UIHelper.LoadResourceImage("Resources.btn_excel.gif");

            fGraph = new ZGraphControl();

            fListStats = new GKListView();
            fListStats.AddColumn("-", 250, false);
            fListStats.AddColumn("-", 150, false);

            Splitter spl = new Splitter();

            spl.Panel1                 = fListStats;
            spl.Panel2                 = fGraph;
            spl.RelativePosition       = 300;
            spl.Orientation            = Orientation.Horizontal;
            spl.FixedPanel             = SplitterFixedPanel.Panel2;
            panDataPlaceholder.Content = spl;

            fController = new StatisticsWinController(this, selectedRecords);
            fController.Init(baseWin);

            fCurrentMode = StatsMode.smAncestors;

            SetLang();
        }
Esempio n. 4
0
        private void cbType_SelectedIndexChanged(object sender, EventArgs e)
        {
            fCurrentMode = (StatsMode)cbType.SelectedIndex;
            fController.CalcStats(fCurrentMode);

            fListStats.SortColumn = -1;
            fListStats.Sorting    = SortOrder.None;
        }
Esempio n. 5
0
        private void cbType_SelectedIndexChanged(object sender, EventArgs e)
        {
            GKComboItem item = (GKComboItem)cbType.SelectedItem;

            if (item != null)
            {
                fMode = (StatsMode)item.Tag;
                UpdateCloud();
            }
        }
Esempio n. 6
0
        public WordsCloudWidget(Plugin plugin)
        {
            InitializeComponent();

            fPlugin = plugin;
            fWords  = new List <Word>();

            foreach (CloudType cloudType in CloudTypes)
            {
                cbType.Items.Add(new GKComboItem(cloudType.Name, cloudType.Mode));
            }
            fMode = StatsMode.smNames;

            SetLang();
        }
        public void UpdateStatsTypes()
        {
            ICulture culture = fBase.Context.Culture;

            fView.StatsType.BeginUpdate();
            fView.StatsType.Clear();
            for (StatsMode sm = StatsMode.smAncestors; sm <= StatsMode.smLast; sm++)
            {
                if (sm == StatsMode.smPatronymics && !culture.HasPatronymic())
                {
                    continue;
                }

                GKData.StatsTitleStruct tr = GKData.StatsTitles[(int)sm];
                fView.StatsType.Add(LangMan.LS(tr.Title));
            }
            fView.StatsType.EndUpdate();
        }
Esempio n. 8
0
        private void GetEventField(StatsMode mode, List <StatsItem> values, GDMIndividualRecord iRec, string evtName)
        {
            string         v   = "?";
            GDMCustomEvent evt = iRec.FindEvent(evtName);

            if (evt == null)
            {
                return;
            }

            int dtY = evt.GetChronologicalYear();

            if (dtY == 0 && (mode != StatsMode.smBirthPlaces && mode != StatsMode.smDeathPlaces))
            {
                return;
            }

            switch (mode)
            {
            case StatsMode.smBirthYears:
            case StatsMode.smDeathYears:
                v = Convert.ToString(dtY);
                break;

            case StatsMode.smBirthTenYears:
            case StatsMode.smDeathTenYears:
                v = Convert.ToString(dtY / 10 * 10);
                break;

            case StatsMode.smBirthPlaces:
            case StatsMode.smDeathPlaces:
                if (evt.HasPlace)
                {
                    v = evt.Place.StringValue;
                }
                break;
            }

            CheckVal(values, v);
        }
Esempio n. 9
0
        private void GetIndiName(StatsMode mode, List <StatsItem> values, GEDCOMIndividualRecord iRec)
        {
            string v     = "";
            var    parts = GKUtils.GetNameParts(iRec);

            switch (mode)
            {
            case StatsMode.smSurnames:
                v = fContext.Culture.NormalizeSurname(parts.Surname, iRec.Sex == GEDCOMSex.svFemale);
                break;

            case StatsMode.smNames:
                v = parts.Name;
                break;

            case StatsMode.smPatronymics:
                v = parts.Patronymic;
                break;
            }

            CheckVal(values, v);
        }
Esempio n. 10
0
        private void UpdateStatsTypes()
        {
            ICulture culture = fBase.Context.Culture;

            //cmStatTypes.Items.Clear();
            cbType.Items.Clear();
            for (StatsMode sm = StatsMode.smAncestors; sm <= StatsMode.smLast; sm++)
            {
                if (sm == StatsMode.smPatronymics && !culture.HasPatronymic())
                {
                    continue;
                }

                GKData.StatsTitleStruct tr = GKData.StatsTitles[(int)sm];

                /*var menuItem = new MenuItemEx(LangMan.LS(tr.Title));
                 * menuItem.Click += miStatType_Click;
                 * menuItem.Tag = sm;
                 * cmStatTypes.Items.Add(menuItem);*/

                cbType.Items.Add(new GKComboItem(LangMan.LS(tr.Title), sm));
            }
        }
        public void CalcStats(StatsMode mode)
        {
            fCurrentMode = mode;

            fView.ListStats.SetColumnCaption(0, LangMan.LS(GKData.StatsTitles[(int)mode].Cap));
            fView.ListStats.SetColumnCaption(1, LangMan.LS(LSID.LSID_Value));

            fView.ListStats.BeginUpdate();
            fView.ListStats.ClearItems();
            try {
                fCurrentValues = new List <StatsItem>();
                fTreeStats.GetSpecStats(mode, fCurrentValues);

                foreach (StatsItem lv in fCurrentValues)
                {
                    fView.ListStats.AddItem(null, lv.Caption, lv.GetDisplayString());
                }
            } finally {
                fView.ListStats.EndUpdate();
            }

            fChartTitle = LangMan.LS(GKData.StatsTitles[(int)mode].Title);

            switch (mode)
            {
            case StatsMode.smAge:
                fChartXTitle = LangMan.LS(LSID.LSID_Age);
                fChartYTitle = LangMan.LS(LSID.LSID_People);
                fView.Graph.PrepareArray(fChartTitle, fChartXTitle, fChartYTitle, ChartStyle.Point, true, fCurrentValues);
                break;

            case StatsMode.smLifeExpectancy:
                fChartXTitle = LangMan.LS(LSID.LSID_LifeExpectancy);
                fChartYTitle = LangMan.LS(LSID.LSID_People);
                fView.Graph.PrepareArray(fChartTitle, fChartXTitle, fChartYTitle, ChartStyle.Point, true, fCurrentValues);
                break;

            case StatsMode.smBirthYears:
            case StatsMode.smBirthTenYears:
            case StatsMode.smDeathYears:
            case StatsMode.smDeathTenYears:
            {
                switch (mode)
                {
                case StatsMode.smBirthYears:
                case StatsMode.smDeathYears:
                    fChartXTitle = LangMan.LS(LSID.LSID_Years);
                    break;

                case StatsMode.smBirthTenYears:
                case StatsMode.smDeathTenYears:
                    fChartXTitle = LangMan.LS(LSID.LSID_Decennial);
                    break;
                }

                switch (mode)
                {
                case StatsMode.smBirthYears:
                case StatsMode.smBirthTenYears:
                    fChartYTitle = LangMan.LS(LSID.LSID_HowBirthes);
                    break;

                case StatsMode.smDeathYears:
                case StatsMode.smDeathTenYears:
                    fChartYTitle = LangMan.LS(LSID.LSID_HowDeads);
                    break;
                }

                fView.Graph.PrepareArray(fChartTitle, fChartXTitle, fChartYTitle, ChartStyle.Point, true, fCurrentValues);
                break;
            }

            case StatsMode.smChildsDistribution:
                fChartXTitle = LangMan.LS(LSID.LSID_Childs);
                fChartYTitle = LangMan.LS(LSID.LSID_Parents);
                fView.Graph.PrepareArray(fChartTitle, fChartXTitle, fChartYTitle, ChartStyle.Bar, true, fCurrentValues);
                break;

            case StatsMode.smCertaintyIndex:
                fChartXTitle = LangMan.LS(LSID.LSID_CertaintyIndex);
                fChartYTitle = LangMan.LS(LSID.LSID_People);
                fView.Graph.PrepareArray(fChartTitle, fChartXTitle, fChartYTitle, ChartStyle.Bar, true, fCurrentValues);
                break;

            case StatsMode.smBirthByMonth:
                fChartXTitle = LangMan.LS(LSID.LSID_Month);
                fChartYTitle = LangMan.LS(LSID.LSID_People);
                fView.Graph.PrepareArray(fChartTitle, fChartXTitle, fChartYTitle, ChartStyle.Bar, true, fCurrentValues);
                break;

            case StatsMode.smDemography:
                fChartXTitle = LangMan.LS(LSID.LSID_LifeExpectancy);
                fChartYTitle = LangMan.LS(LSID.LSID_People);
                fView.Graph.PrepareArray(fChartTitle, fChartXTitle, fChartYTitle, ChartStyle.ClusterBar, true, fCurrentValues);
                break;

            default:
                fView.Graph.Clear();
                break;
            }
        }
Esempio n. 12
0
 public CloudType(string name, StatsMode mode)
 {
     Name = name;
     Mode = mode;
 }
Esempio n. 13
0
        public void GetSpecStats(StatsMode mode, List <StatsItem> values)
        {
            if (values == null)
            {
                throw new ArgumentNullException("values");
            }

            if (mode < StatsMode.smDescGenerations)
            {
                GKUtils.InitExtCounts(fTree, -1);
            }

            // special buffers for difficult calculations with averaged ages
            Dictionary <string, List <int> > xvals = new Dictionary <string, List <int> >();

            int num = fTree.RecordsCount;

            for (int i = 0; i < num; i++)
            {
                GEDCOMRecord rec = fTree[i];

                if (rec.RecordType == GEDCOMRecordType.rtIndividual && mode != StatsMode.smSpousesDiff && fSelectedRecords.Contains(rec))
                {
                    GEDCOMIndividualRecord iRec = rec as GEDCOMIndividualRecord;

                    if (mode != StatsMode.smAAF_1 && mode != StatsMode.smAAF_2)
                    {
                        GetSimplePersonStat(mode, values, iRec);
                    }
                    else
                    {
                        GEDCOMIndividualRecord iChild = GKUtils.GetFirstborn(iRec);
                        int fba = GKUtils.GetFirstbornAge(iRec, iChild);
                        if (fba > 0 && iChild != null)
                        {
                            string     key;
                            List <int> valsList;

                            switch (mode)
                            {
                            case StatsMode.smAAF_1:
                                int dty1 = iRec.GetChronologicalYear("BIRT");
                                if (dty1 != 0)
                                {
                                    key = MathHelper.Trunc(dty1 / 10 * 10).ToString();

                                    if (!xvals.TryGetValue(key, out valsList))
                                    {
                                        valsList = new List <int>();
                                        xvals.Add(key, valsList);
                                    }
                                    valsList.Add(fba);
                                }

                                break;

                            case StatsMode.smAAF_2:
                                int dty2 = iChild.GetChronologicalYear("BIRT");
                                if (dty2 != 0)
                                {
                                    key = MathHelper.Trunc(dty2 / 10 * 10).ToString();

                                    if (!xvals.TryGetValue(key, out valsList))
                                    {
                                        valsList = new List <int>();
                                        xvals.Add(key, valsList);
                                    }
                                    valsList.Add(fba);
                                }

                                break;
                            }
                        }
                    }
                }
                else if (rec.RecordType == GEDCOMRecordType.rtFamily && mode == StatsMode.smSpousesDiff)
                {
                    GEDCOMFamilyRecord fRec = rec as GEDCOMFamilyRecord;

                    int diff = GKUtils.GetSpousesDiff(fRec);
                    if (diff != -1)
                    {
                        values.Add(new StatsItem(GKUtils.GetFamilyString(fRec), diff));
                    }
                }
            }

            if (mode == StatsMode.smAAF_1 || mode == StatsMode.smAAF_2)
            {
                foreach (KeyValuePair <string, List <int> > kvp in xvals)
                {
                    List <int> valsList = kvp.Value;
                    int        count    = valsList.Count;

                    int avg;
                    if (count == 0)
                    {
                        avg = 0;
                    }
                    else
                    {
                        double sum = 0;
                        for (int i = 0; i < count; i++)
                        {
                            sum += valsList[i];
                        }
                        avg = (int)Math.Round(sum / count);
                    }

                    values.Add(new StatsItem(kvp.Key, avg));
                }
            }
        }
Esempio n. 14
0
        private void GetSimplePersonStat(StatsMode mode, List <StatsItem> values, GEDCOMIndividualRecord iRec)
        {
            string iName = GKUtils.GetNameString(iRec, true, false);

            switch (mode)
            {
            case StatsMode.smAncestors:
                values.Add(new StatsItem(iName, GKUtils.GetAncestorsCount(iRec) - 1));
                break;

            case StatsMode.smDescendants:
                values.Add(new StatsItem(iName, GKUtils.GetDescendantsCount(iRec) - 1));
                break;

            case StatsMode.smDescGenerations:
                values.Add(new StatsItem(iName, GKUtils.GetDescGenerations(iRec)));
                break;

            case StatsMode.smChildsCount:
                values.Add(new StatsItem(iName, iRec.GetTotalChildsCount()));
                break;

            case StatsMode.smFirstbornAge:
                values.Add(new StatsItem(iName, GKUtils.GetFirstbornAge(iRec, GKUtils.GetFirstborn(iRec))));
                break;

            case StatsMode.smMarriages:
                values.Add(new StatsItem(iName, GKUtils.GetMarriagesCount(iRec)));
                break;

            case StatsMode.smMarriageAge:
                values.Add(new StatsItem(iName, GKUtils.GetMarriageAge(iRec)));
                break;

            case StatsMode.smSurnames:
            case StatsMode.smNames:
            case StatsMode.smPatronymics:
                GetIndiName(mode, values, iRec);
                break;

            case StatsMode.smAge:
                CheckVal(values, GKUtils.GetAgeStr(iRec, -1));
                break;

            case StatsMode.smLifeExpectancy:
                CheckVal(values, GKUtils.GetLifeExpectancyStr(iRec));
                break;

            case StatsMode.smBirthYears:
            case StatsMode.smBirthTenYears:
            case StatsMode.smBirthPlaces:
                GetEventField(mode, values, iRec, "BIRT");
                break;

            case StatsMode.smDeathYears:
            case StatsMode.smDeathTenYears:
            case StatsMode.smDeathPlaces:
                GetEventField(mode, values, iRec, "DEAT");
                break;

            case StatsMode.smChildsDistribution:
                CheckVal(values, iRec.GetTotalChildsCount().ToString());
                break;

            case StatsMode.smResidences:
                CheckVal(values, GKUtils.GetResidencePlace(iRec, false));
                break;

            case StatsMode.smOccupation:
                CheckVal(values, GKUtils.GetAttributeValue(iRec, "OCCU"));
                break;

            case StatsMode.smReligious:
                CheckVal(values, GKUtils.GetAttributeValue(iRec, "RELI"));
                break;

            case StatsMode.smNational:
                CheckVal(values, GKUtils.GetAttributeValue(iRec, "NATI"));
                break;

            case StatsMode.smEducation:
                CheckVal(values, GKUtils.GetAttributeValue(iRec, "EDUC"));
                break;

            case StatsMode.smCaste:
                CheckVal(values, GKUtils.GetAttributeValue(iRec, "CAST"));
                break;

            case StatsMode.smHobby:
                CheckVal(values, GKUtils.GetAttributeValue(iRec, "_HOBBY"));
                break;

            case StatsMode.smAward:
                CheckVal(values, GKUtils.GetAttributeValue(iRec, "_AWARD"));
                break;

            case StatsMode.smMili:
                CheckVal(values, GKUtils.GetAttributeValue(iRec, "_MILI"));
                break;

            case StatsMode.smMiliInd:
                CheckVal(values, GKUtils.GetAttributeValue(iRec, "_MILI_IND"));
                break;

            case StatsMode.smMiliDis:
                CheckVal(values, GKUtils.GetAttributeValue(iRec, "_MILI_DIS"));
                break;

            case StatsMode.smMiliRank:
                CheckVal(values, GKUtils.GetAttributeValue(iRec, "_MILI_RANK"));
                break;

            case StatsMode.smCertaintyIndex:
                CheckVal(values, string.Format("{0:0.00}", iRec.GetCertaintyAssessment()));
                break;

            case StatsMode.smBirthByMonth:
                GEDCOMCustomEvent ev = iRec.FindEvent("BIRT");
                if (ev != null)
                {
                    var dtx = ev.Date.Value as GEDCOMDate;
                    if (dtx != null)
                    {
                        int month = dtx.GetMonthNumber();
                        if (month > 0)
                        {
                            CheckVal(values, month.ToString());
                        }
                    }
                }
                break;

            case StatsMode.smDemography:
            {
                int lifeExp = GKUtils.GetLifeExpectancy(iRec);
                if (lifeExp > -1)
                {
                    string v = Convert.ToString(lifeExp / 5 * 5);
                    CheckVal(values, v, iRec.Sex);
                }
                break;
            }
            }
        }
Esempio n. 15
0
 private void cbType_SelectedIndexChanged(object sender, EventArgs e)
 {
     fCurrentMode = (StatsMode)cbType.SelectedIndex;
     CalcStats(fCurrentMode);
 }
Esempio n. 16
0
        private void CalcStats(StatsMode mode)
        {
            fListStats.SortColumn      = 0;
            fListStats.Columns[0].Text = LangMan.LS(GKData.StatsTitles[(int)mode].Cap);
            fListStats.Columns[1].Text = LangMan.LS(LSID.LSID_Value);

            fListStats.Sorting    = SortOrder.None;
            fListStats.SortColumn = -1;
            fListStats.BeginUpdate();
            fListStats.Items.Clear();

            List <StatsItem> vals = new List <StatsItem>();

            try
            {
                fTreeStats.GetSpecStats(mode, vals);
                fCurrentValues = vals;

                ListViewItem[] items = new ListViewItem[vals.Count];

                int i = 0;
                foreach (StatsItem lv in vals)
                {
                    ListViewItem item = new ListViewItem(lv.Caption);

                    string stVal = lv.GetDisplayString();
                    item.SubItems.Add(stVal);

                    items[i] = item;
                    i++;
                }

                fListStats.Items.AddRange(items);
            }
            finally
            {
                fListStats.EndUpdate();
            }

            fChartTitle = LangMan.LS(GKData.StatsTitles[(int)mode].Title);

            switch (mode)
            {
            case StatsMode.smAge:
                fChartXTitle = LangMan.LS(LSID.LSID_Age);
                fChartYTitle = LangMan.LS(LSID.LSID_People);
                PrepareArray(ChartStyle.Point, true);
                break;

            case StatsMode.smLifeExpectancy:
                fChartXTitle = LangMan.LS(LSID.LSID_LifeExpectancy);
                fChartYTitle = LangMan.LS(LSID.LSID_People);
                PrepareArray(ChartStyle.Point, true);
                break;

            case StatsMode.smBirthYears:
            case StatsMode.smBirthTenYears:
            case StatsMode.smDeathYears:
            case StatsMode.smDeathTenYears: {
                switch (mode)
                {
                case StatsMode.smBirthYears:
                case StatsMode.smDeathYears:
                    fChartXTitle = LangMan.LS(LSID.LSID_Years);
                    break;

                case StatsMode.smBirthTenYears:
                case StatsMode.smDeathTenYears:
                    fChartXTitle = LangMan.LS(LSID.LSID_Decennial);
                    break;
                }

                switch (mode)
                {
                case StatsMode.smBirthYears:
                case StatsMode.smBirthTenYears:
                    fChartYTitle = LangMan.LS(LSID.LSID_HowBirthes);
                    break;

                case StatsMode.smDeathYears:
                case StatsMode.smDeathTenYears:
                    fChartYTitle = LangMan.LS(LSID.LSID_HowDeads);
                    break;
                }

                PrepareArray(ChartStyle.Point, true);
                break;
            }

            case StatsMode.smChildsDistribution:
                fChartXTitle = LangMan.LS(LSID.LSID_Childs);
                fChartYTitle = LangMan.LS(LSID.LSID_Parents);
                PrepareArray(ChartStyle.Bar, true);
                break;

            case StatsMode.smCertaintyIndex:
                fChartXTitle = LangMan.LS(LSID.LSID_CertaintyIndex);
                fChartYTitle = LangMan.LS(LSID.LSID_People);
                PrepareArray(ChartStyle.Bar, true);
                break;

            case StatsMode.smBirthByMonth:
                fChartXTitle = LangMan.LS(LSID.LSID_Month);
                fChartYTitle = LangMan.LS(LSID.LSID_People);
                PrepareArray(ChartStyle.Bar, true);
                break;

            case StatsMode.smDemography:
                fChartXTitle = LangMan.LS(LSID.LSID_LifeExpectancy);
                fChartYTitle = LangMan.LS(LSID.LSID_People);
                PrepareArray(ChartStyle.ClusterBar, true, vals);
                break;

            default:
                fGraph.Clear();
                break;
            }
        }