ChangeColumnGUID() public method

public ChangeColumnGUID ( string guid ) : void
guid string
return void
Esempio n. 1
0
        void changeElementGUID(ReportElement element, string newGUID, ReportView view)
        {
            string initialLabel = element.DisplayNameEl;

            element.ChangeColumnGUID(newGUID);
            view.ReplaceInParameterValues("nvd3_chart_title", "%" + initialLabel + "%", "%" + element.DisplayNameEl + "%");
            view.ReplaceInParameterValues("chartjs_title", "%" + initialLabel + "%", "%" + element.DisplayNameEl + "%");
            view.ReplaceInParameterValues("plotly_title", "%" + initialLabel + "%", "%" + element.DisplayNameEl + "%");
        }
Esempio n. 2
0
        public ReportExecution Navigate(string navigation, Report rootReport)
        {
            string reportPath = HttpUtility.ParseQueryString(navigation).Get("rpa");
            string destLabel = "", srcRestriction = "", srcGUID = "";
            Report newReport = null;

            if (Navigations.Count(i => i.Value.Execution.RootReport == rootReport) == 1)
            {
                //For the first navigation, we update the JS file in the result to show up the button
                string html = File.ReadAllText(rootReport.ResultFilePath);
                html = html.Replace("var hasNavigation = false;/*SRKW do not modify*/", "var hasNavigation = true;");
                rootReport.ResultFilePath = Helpers.FileHelper.GetUniqueFileName(rootReport.ResultFilePath);
                File.WriteAllText(rootReport.ResultFilePath, html, System.Text.Encoding.UTF8);
                rootReport.IsNavigating  = true;
                rootReport.HasNavigation = true;

                Navigations.First(i => i.Value.Execution.RootReport == rootReport).Value.Link.Href = !string.IsNullOrEmpty(rootReport.WebUrl) ? rootReport.WebTempUrl + Path.GetFileName(rootReport.ResultFilePath) : rootReport.ResultFilePath;
            }

            if (!string.IsNullOrEmpty(reportPath))
            {
                //Sub-Report
                string path = reportPath.Replace(Repository.SealRepositoryKeyword, rootReport.Repository.RepositoryPath);
                newReport = Report.LoadFromFile(path, rootReport.Repository);

                int index = 1;
                while (true)
                {
                    string res = HttpUtility.ParseQueryString(navigation).Get("res" + index.ToString());
                    string val = HttpUtility.ParseQueryString(navigation).Get("val" + index.ToString());
                    if (string.IsNullOrEmpty(res) || string.IsNullOrEmpty(val))
                    {
                        break;
                    }
                    foreach (var model in newReport.Models)
                    {
                        foreach (var restriction in model.Restrictions.Where(i => i.MetaColumnGUID == res && i.Prompt != PromptType.None))
                        {
                            restriction.SetNavigationValue(val);
                            srcRestriction = restriction.GeNavigationDisplayValue();
                        }
                    }
                    index++;
                }
                //Get display value
                string dis = HttpUtility.ParseQueryString(navigation).Get("dis");
                if (!string.IsNullOrEmpty(dis))
                {
                    srcRestriction = HttpUtility.ParseQueryString(navigation).Get("dis");
                }
            }
            else
            {
                //Drill
                string executionGuid = HttpUtility.ParseQueryString(navigation).Get("exe");
                if (!Navigations.ContainsKey(executionGuid))
                {
                    throw new Exception("Missing execution GUID");
                }
                newReport = Navigations[executionGuid].Execution.Report.Clone();
                newReport.ExecutionGUID = Guid.NewGuid().ToString();
                string src = HttpUtility.ParseQueryString(navigation).Get("src");
                string dst = HttpUtility.ParseQueryString(navigation).Get("dst");
                string val = HttpUtility.ParseQueryString(navigation).Get("val");
                newReport.DrillParents.Add(src);

                foreach (var model in newReport.Models)
                {
                    ReportElement element = model.Elements.FirstOrDefault(i => i.MetaColumnGUID == src);
                    //Has already restriction ? if down check src, if up check dest
                    bool hasAlreadyRestriction = model.Restrictions.Exists(i => i.MetaColumnGUID == (val != null ? src : dst));
                    if (element != null || hasAlreadyRestriction)
                    {
                        if (element != null)
                        {
                            string initialLabel = element.DisplayNameEl;
                            element.ChangeColumnGUID(dst);
                            destLabel = element.DisplayNameElTranslated;
                            newReport.ExecutionView.ReplaceInParameterValues("chart_nvd3_title", "%" + initialLabel + "%", "%" + element.DisplayNameEl + "%");
                        }

                        if (val != null)
                        {
                            //Drill Down: Add restriction
                            ReportRestriction restriction = ReportRestriction.CreateReportRestriction();
                            restriction.Source         = model.Source;
                            restriction.Model          = model;
                            restriction.MetaColumnGUID = src;
                            restriction.SetDefaults();
                            restriction.Operator = Operator.Equal;
                            restriction.SetNavigationValue(val);
                            model.Restrictions.Add(restriction);
                            if (!string.IsNullOrEmpty(model.Restriction))
                            {
                                model.Restriction = string.Format("({0}) AND ", model.Restriction);
                            }
                            model.Restriction += ReportRestriction.kStartRestrictionChar + restriction.GUID + ReportRestriction.kStopRestrictionChar;

                            srcRestriction = restriction.GeNavigationDisplayValue();
                            srcGUID        = restriction.MetaColumnGUID;
                        }
                        else
                        {
                            //Drill Down: Remove restrictions
                            var restrictions = model.Restrictions.Where(i => i.MetaColumnGUID == dst).ToList();
                            foreach (var restr in restrictions)
                            {
                                model.Restrictions.Remove(restr);
                                model.Restriction = model.Restriction.Replace(ReportRestriction.kStartRestrictionChar + restr.GUID + ReportRestriction.kStopRestrictionChar, "1=1");
                            }
                        }
                    }
                }
            }

            newReport.WebUrl        = rootReport.WebUrl;
            newReport.IsNavigating  = true;
            newReport.HasNavigation = true;

            if (!string.IsNullOrEmpty(srcRestriction))
            {
                newReport.DisplayName = string.Format("{0} > {1}", newReport.ExecutionName, srcRestriction);
            }
            else
            {
                newReport.DisplayName = string.Format("{0} < {1}", newReport.ExecutionName, destLabel);
            }

            return(new ReportExecution()
            {
                Report = newReport, RootReport = rootReport
            });
        }