Пример #1
0
        /**************************************************************************/

        public void RenderListView(MacroscopeJobMaster JobMaster)
        {
            Dictionary <String, bool> Blocked = JobMaster.GetBlockedByRobotsList();

            if (Blocked.Count == 0)
            {
                return;
            }

            List <ListViewItem> ListViewItems = new List <ListViewItem>(1);

            MacroscopeSinglePercentageProgressForm ProgressForm = new MacroscopeSinglePercentageProgressForm(this.MainForm);
            decimal Count           = 0;
            decimal TotalDocs       = (decimal)Blocked.Count;
            decimal MajorPercentage = ((decimal)100 / TotalDocs) * Count;

            if (MacroscopePreferencesManager.GetShowProgressDialogues())
            {
                ProgressForm.UpdatePercentages(
                    Title: "Preparing Display",
                    Message: "Processing document collection for display:",
                    MajorPercentage: MajorPercentage,
                    ProgressLabelMajor: string.Format("Document {0} / {1}", Count, TotalDocs)
                    );
            }

            foreach (string Url in Blocked.Keys)
            {
                bool IsInternal = JobMaster.GetAllowedHosts().IsInternalUrl(Url);

                this.RenderListView(
                    ListViewItems: ListViewItems,
                    Url: Url,
                    IsBlocked: Blocked[Url],
                    IsInternal: IsInternal
                    );

                Count++;
                MajorPercentage = ((decimal)100 / TotalDocs) * Count;

                ProgressForm.UpdatePercentages(
                    Title: null,
                    Message: null,
                    MajorPercentage: MajorPercentage,
                    ProgressLabelMajor: string.Format("Document {0} / {1}", Count, TotalDocs)
                    );
            }

            this.DisplayListView.Items.AddRange(ListViewItems.ToArray());

            if (MacroscopePreferencesManager.GetShowProgressDialogues())
            {
                ProgressForm.DoClose();
            }

            if (ProgressForm != null)
            {
                ProgressForm.Dispose();
            }
        }
        /**************************************************************************/

        private void RenderTreeViewSummary(MacroscopeDocumentCollection DocCollection)
        {
            MacroscopeJobMaster JobMaster = this.MainForm.GetJobMaster();

            this.tvTreeView.BeginUpdate();

            try
            {
                {
                    SortedDictionary <string, double> DataPoints = new SortedDictionary <string, double>();

                    {
                        TreeNode[] Leaf  = this.tvTreeView.Nodes.Find("UrlsFound", true);
                        int        Count = JobMaster.GetPagesFound();
                        if (Leaf.Length > 0)
                        {
                            Leaf[0].Text = string.Format("Total URLs Found: {0}", Count);
                        }
                        DataPoints.Add("URLs Found", (double)Count);
                    }

                    {
                        TreeNode[] Leaf  = this.tvTreeView.Nodes.Find("UrlsCrawled", true);
                        int        Count = DocCollection.CountDocuments();
                        if (Leaf.Length > 0)
                        {
                            Leaf[0].Text = string.Format("Total URLs Crawled: {0}", Count);
                        }
                        DataPoints.Add("URLs Crawled", (double)Count);
                    }

                    {
                        TreeNode[] Leaf  = this.tvTreeView.Nodes.Find("UrlsInternal", true);
                        ulong      Count = DocCollection.CountUrlsInternal();
                        if (Leaf.Length > 0)
                        {
                            Leaf[0].Text = string.Format("Total Internal URLs: {0}", Count);
                        }
                        DataPoints.Add("Internal URLs", (double)Count);
                    }

                    {
                        TreeNode[] Leaf  = this.tvTreeView.Nodes.Find("UrlsExternal", true);
                        ulong      Count = DocCollection.CountUrlsExternal();
                        if (Leaf.Length > 0)
                        {
                            Leaf[0].Text = string.Format("Total External URLs: {0}", Count);
                        }
                        DataPoints.Add("External URLs", (double)Count);
                    }

                    this.SiteStructurePanelCharts.UpdateSiteSummary(DataPoints: DataPoints);
                }

                {
                    SortedDictionary <string, double> DataPoints = new SortedDictionary <string, double>();
                    decimal Fastest = DocCollection.GetStatsDurationsFastest();
                    decimal Slowest = DocCollection.GetStatsDurationsSlowest();
                    decimal Average = DocCollection.GetStatsDurationAverage();

                    {
                        TreeNode[] Leaf = this.tvTreeView.Nodes.Find("FASTESTPAGERESPONSE", true);
                        if (Leaf.Length > 0)
                        {
                            Leaf[0].Text = string.Format("Fastest Page Response: {0:0.00} secs", Fastest);
                            DataPoints.Add("Fastest Page Response", (double)Fastest);
                        }
                        else
                        {
                            DataPoints.Add("Fastest Page Response", 0);
                        }
                    }

                    {
                        TreeNode[] Leaf = this.tvTreeView.Nodes.Find("SLOWESTPAGERESPONSE", true);
                        if (Leaf.Length > 0)
                        {
                            Leaf[0].Text = string.Format("Slowest Page Response: {0:0.00} secs", Slowest);
                            DataPoints.Add("Slowest Page Response", (double)Slowest);
                        }
                        else
                        {
                            DataPoints.Add("Slowest Page Response", 0);
                        }
                    }

                    {
                        TreeNode[] Leaf = this.tvTreeView.Nodes.Find("AVERAGEPAGEDURATION", true);
                        if (Leaf.Length > 0)
                        {
                            Leaf[0].Text = string.Format("Average Page Duration: {0:0.00} secs", Average);
                            DataPoints.Add("Average Page Duration", (double)Average);
                        }
                        else
                        {
                            DataPoints.Add("Average Page Duration", 0);
                        }
                    }

                    this.SiteStructurePanelCharts.UpdateResponseTimes(DataPoints: DataPoints);
                }

                {
                    TreeNode[] Leaf  = this.tvTreeView.Nodes.Find("UrlsRobotsBlocked", true);
                    int        Count = JobMaster.GetBlockedByRobotsList().Count;
                    if (Leaf.Length > 0)
                    {
                        Leaf[0].Text = string.Format("URLs Blocked by Robots.txt: {0}", Count);
                    }
                }

                {
                    TreeNode[] Leaf  = this.tvTreeView.Nodes.Find("SitemapsFound", true);
                    ulong      Count = DocCollection.CountUrlsSitemaps();
                    if (Leaf.Length > 0)
                    {
                        Leaf[0].Text = string.Format("Sitemaps Found: {0}", Count);
                    }
                }

                {
                    TreeNode[] Leaves = this.tvTreeView.Nodes.Find("FETCH_WARNINGS", true);
                    if (Leaves.Length > 0)
                    {
                        TreeNode Leaf = Leaves[0];
                        if (Leaf != null)
                        {
                            Dictionary <string, int> dicMessages = DocCollection.GetStatsWarningsCount();
                            Leaf.Nodes.Clear();
                            foreach (string MessagesKey in dicMessages.Keys)
                            {
                                Leaf.Nodes.Add(string.Format("{0}: {1}", MessagesKey, dicMessages[MessagesKey]));
                            }
                        }
                    }
                }

                {
                    TreeNode[] Leaves = this.tvTreeView.Nodes.Find("FETCH_ERRORS", true);
                    if (Leaves.Length > 0)
                    {
                        TreeNode Leaf = Leaves[0];
                        if (Leaf != null)
                        {
                            Dictionary <string, int> dicMessages = DocCollection.GetStatsErrorsCount();
                            Leaf.Nodes.Clear();
                            foreach (string MessagesKey in dicMessages.Keys)
                            {
                                Leaf.Nodes.Add(string.Format("{0}: {1}", MessagesKey, dicMessages[MessagesKey]));
                            }
                        }
                    }
                }

                {
                    Dictionary <bool, int> Canonicals = DocCollection.GetStatsCanonicalsCount();
                    {
                        TreeNode[] Leaf = this.tvTreeView.Nodes.Find("CANONICALS_SPECIFIED_SPECIFIED", true);
                        if ((Leaf.Length > 0) && (Canonicals.ContainsKey(true)))
                        {
                            Leaf[0].Text = string.Format("Specified: {0}", Canonicals[true]);
                        }
                        else
                        {
                            Leaf[0].Text = string.Format("Specified: {0}", 0);
                        }
                    }
                    {
                        TreeNode[] Leaf = this.tvTreeView.Nodes.Find("CANONICALS_SPECIFIED_NOT_SPECIFIED", true);
                        if ((Leaf.Length > 0) && (Canonicals.ContainsKey(false)))
                        {
                            Leaf[0].Text = string.Format("Not Specified: {0}", Canonicals[false]);
                        }
                        else
                        {
                            Leaf[0].Text = string.Format("Not Specified: {0}", 0);
                        }
                    }
                }

                {
                    {
                        TreeNode[] Leaves = this.tvTreeView.Nodes.Find("DOCUMENT_TYPES_FOUND_INTERNAL", true);
                        if (Leaves.Length > 0)
                        {
                            TreeNode Leaf = Leaves[0];
                            if (Leaf != null)
                            {
                                Dictionary <string, int> Stats = DocCollection.GetStatsDocumentTypesInternalCount();
                                Leaf.Nodes.Clear();
                                foreach (string ContentKey in Stats.Keys)
                                {
                                    TreeNode LeafNode = Leaf.Nodes.Add(string.Format("{0}: {1}", ContentKey, Stats[ContentKey]));
                                    LeafNode.Tag = "DOCUMENT_TYPES_FOUND_INTERNAL_TYPE"; // For graph selection click
                                }
                            }
                        }
                    }
                    {
                        TreeNode[] Leaves = this.tvTreeView.Nodes.Find("DOCUMENT_TYPES_FOUND_EXTERNAL", true);
                        if (Leaves.Length > 0)
                        {
                            TreeNode Leaf = Leaves[0];
                            if (Leaf != null)
                            {
                                Dictionary <string, int> Stats = DocCollection.GetStatsDocumentTypesExternalCount();
                                Leaf.Nodes.Clear();
                                foreach (string ContentKey in Stats.Keys)
                                {
                                    TreeNode LeafNode = Leaf.Nodes.Add(string.Format("{0}: {1}", ContentKey, Stats[ContentKey]));
                                    LeafNode.Tag = "DOCUMENT_TYPES_FOUND_EXTERNAL_TYPE"; // For graph selection click
                                }
                            }
                        }
                    }
                }

                {
                    SortedDictionary <string, double> DataPoints = new SortedDictionary <string, double>();
                    TreeNode[] Leaves = this.tvTreeView.Nodes.Find("LANGUAGES_SPECIFIED_PAGES", true);
                    if (Leaves.Length > 0)
                    {
                        TreeNode Leaf = Leaves[0];
                        if (Leaf != null)
                        {
                            Dictionary <string, int> dicContents = DocCollection.GetStatsLanguagesPagesCount();
                            Leaf.Nodes.Clear();
                            foreach (string ContentKey in dicContents.Keys)
                            {
                                TreeNode LeafNode = Leaf.Nodes.Add(string.Format("{0}: {1}", ContentKey, dicContents[ContentKey]));
                                LeafNode.Tag = "LANGUAGES_SPECIFIED_PAGES_LANG";
                                DataPoints.Add(ContentKey, (double)dicContents[ContentKey]);
                            }
                        }
                        this.SiteStructurePanelCharts.UpdateLanguagesSpecified(DataPoints: DataPoints);
                    }
                }

                {
                    TreeNode[] Leaves = this.tvTreeView.Nodes.Find("LANGUAGES_DETECTED_TITLES", true);

                    if (Leaves.Length > 0)
                    {
                        TreeNode Leaf = Leaves[0];

                        if (Leaf != null)
                        {
                            Dictionary <string, int> dicContents = DocCollection.GetStatsLanguagesTitlesCount();

                            Leaf.Nodes.Clear();

                            foreach (string ContentKey in dicContents.Keys)
                            {
                                Leaf.Nodes.Add(string.Format("{0}: {1}", ContentKey, dicContents[ContentKey]));
                            }
                        }
                    }
                }

                {
                    TreeNode[] Leaves = this.tvTreeView.Nodes.Find("LANGUAGES_DETECTED_DESCRIPTIONS", true);

                    if (Leaves.Length > 0)
                    {
                        TreeNode Leaf = Leaves[0];

                        if (Leaf != null)
                        {
                            Dictionary <string, int> dicContents = DocCollection.GetStatsLanguagesDescriptionsCount();

                            Leaf.Nodes.Clear();

                            foreach (string ContentKey in dicContents.Keys)
                            {
                                Leaf.Nodes.Add(string.Format("{0}: {1}", ContentKey, dicContents[ContentKey]));
                            }
                        }
                    }
                }

                {
                    TreeNode[] Leaves = this.tvTreeView.Nodes.Find("LANGUAGES_DETECTED_BODYTEXTS", true);

                    if (Leaves.Length > 0)
                    {
                        TreeNode Leaf = Leaves[0];

                        if (Leaf != null)
                        {
                            Dictionary <string, int> dicContents = DocCollection.GetStatsLanguagesBodyTextsCount();

                            Leaf.Nodes.Clear();

                            foreach (string ContentKey in dicContents.Keys)
                            {
                                Leaf.Nodes.Add(string.Format("{0}: {1}", ContentKey, dicContents[ContentKey]));
                            }
                        }
                    }
                }

                {
                    SortedDictionary <string, double> DataPoints = new SortedDictionary <string, double>();

                    TreeNode[] Leaves = this.tvTreeView.Nodes.Find("TEXT_READABILITY", true);

                    if (Leaves.Length > 0)
                    {
                        TreeNode Leaf = Leaves[0];

                        if (Leaf != null)
                        {
                            SortedDictionary <string, int> dicContents = DocCollection.GetStatsReadabilityGradeStringsCount();

                            Leaf.Nodes.Clear();

                            foreach (string ContentKey in dicContents.Keys)
                            {
                                TreeNode LeafLeaf = Leaf.Nodes.Add(string.Format("{0}: {1}", ContentKey, dicContents[ContentKey]));

                                LeafLeaf.Tag = "TEXT_READABILITY_NODE";

                                DataPoints.Add(ContentKey, (double)dicContents[ContentKey]);
                            }
                        }

                        this.SiteStructurePanelCharts.UpdateReadability(DataPoints: DataPoints);
                    }
                }
            }
            catch (Exception ex)
            {
                this.DebugMsg(ex.Message);
                this.DebugMsg(ex.Source);
            }

            this.tvTreeView.EndUpdate();
        }