public ActionResult Index(string path) { string query = this.Request?.Url?.Query.Or(""); string sourcePath = "/dashboard/reports/source/" + path + query; var locator = new ReportLocator(); path = locator.GetPathToDisk(this.Tenant, path); var parameters = ParameterHelper.GetParameters(this.Request?.QueryString); var parser = new ReportParser(path, this.Tenant, parameters); var report = parser.Get(); var dbParams = new List <DataSourceParameter>(); if (report.DataSources != null) { foreach (var dataSource in report.DataSources) { foreach (var parameter in dataSource.Parameters) { if (dbParams.Any(x => x.Name.ToLower() == parameter.Name.Replace("@", "").ToLower())) { continue; } if (parameter.HasMetaValue) { continue; } parameter.Name = parameter.Name.Replace("@", ""); var fromQueryString = report.Parameters.FirstOrDefault(x => x.Name.ToLower().Equals(parameter.Name.ToLower())); if (fromQueryString != null) { parameter.DefaultValue = DataSourceParameterHelper.CastValue(fromQueryString.Value, parameter.Type); } if (string.IsNullOrWhiteSpace(parameter.FieldLabel)) { parameter.FieldLabel = parameter.Name; } dbParams.Add(parameter); } } } var model = new ParameterMeta { ReportSourcePath = sourcePath, Parameters = dbParams, ReportTitle = report.Title }; return(this.View("~/Areas/Frapid.Reports/Views/Index.cshtml", model)); }
public static ParameterMeta GetDefinition(string path, string query, string tenant, HttpRequestBase request) { string sourcePath = "/dashboard/reports/source/" + path + query; var locator = new ReportLocator(); path = locator.GetPathToDisk(tenant, path); var parameters = ParameterHelper.GetParameters(request?.QueryString); var parser = new ReportParser(path, tenant, parameters); var report = parser.Get(); var dbParams = new List <DataSourceParameter>(); if (report.DataSources != null) { foreach (var dataSource in report.DataSources) { foreach (var parameter in dataSource.Parameters) { if (dbParams.Any(x => x.Name.ToLower() == parameter.Name.Replace("@", "").ToLower())) { continue; } if (parameter.HasMetaValue) { continue; } parameter.Name = parameter.Name.Replace("@", ""); var fromQueryString = report.Parameters.FirstOrDefault(x => x.Name.ToLower().Equals(parameter.Name.ToLower())); if (fromQueryString != null) { parameter.DefaultValue = DataSourceParameterHelper.CastValue(fromQueryString.Value, parameter.Type); } if (string.IsNullOrWhiteSpace(parameter.FieldLabel)) { parameter.FieldLabel = parameter.Name; } dbParams.Add(parameter); } } } var model = new ParameterMeta { ReportSourcePath = sourcePath, Parameters = dbParams, ReportTitle = report.Title }; return(model); }
private object GetDefaultValue(Report report, XmlNode node, string type) { string value = this.ReadAttributeValue(node, "DefaultValue"); if (string.IsNullOrWhiteSpace(value)) { return(null); } value = ExpressionHelper.ParseExpression(report.Tenant, value, report.DataSources, ParameterHelper.GetPraParameterInfo(report)); return(DataSourceParameterHelper.CastValue(value, type)); }
private static object GetParameterValue(string name, string type, ParameterInfo info) { var paramter = info.Parameters.FirstOrDefault(x => x.Name.ToLower().Equals(name.Replace("@", "").ToLower())); if (paramter != null) { return(DataSourceParameterHelper.CastValue(paramter.Value, type)); } foreach (var dataSourceParameter in info.DataSourceParameters) { if (dataSourceParameter.Name.ToLower().Equals(name.ToLower())) { if (dataSourceParameter.DefaultValue != null) { return(dataSourceParameter.DefaultValue); } } } return(null); }
private object GetAttributeValue(XmlNode node, string name, string type = "string") { string value = this.ReadAttributeValue(node, name); return(DataSourceParameterHelper.CastValue(value, type)); }