private void LoadReportSettings() { if (_reportID < 0) { return; } try { ReportData reportData = new ReportData(UserSession.LoginUser); reportData.LoadReportData(_reportID, UserSession.LoginUser.UserID); if (reportData.IsEmpty) { return; } TSUtils.LoadGridSettings(gridReport, reportData[0].ReportData); if (_isCustom && reportData[0].QueryObject.Trim() != "") { filterControl.ReportConditions = (ReportConditions)DataUtils.StringToObject(reportData[0].QueryObject); filterControl.ReportConditions.LoginUser = UserSession.LoginUser; } try { gridReport.MasterTableView.Columns.FindByUniqueName("ButtonOpen").HeaderStyle.Width = new Unit(32, UnitType.Pixel); } catch (Exception) { } } catch (Exception) { } }
/// <summary> /// Transforme le type en type Typescript. /// </summary> /// <param name="property">La propriété dont on cherche le type.</param> /// <returns>Le type en sortie.</returns> private string CSharpToTSType(ModelProperty property) { if (property.Name == "Code") { return($"{property.Class.Name}Code"); } else if (property.Name.EndsWith("Code", StringComparison.Ordinal)) { return(property.Name.ToFirstUpper()); } return(TSUtils.CSharpToTSType(property)); }
private void SaveReportSettings() { if (_reportID < 0 || !IsPostBack || filterControl.ReportID != _reportID) { return; } try { string data = TSUtils.ReadGridSettings(gridReport); if (_isCustom) { ReportData.SaveReportData(UserSession.LoginUser, _reportID, UserSession.LoginUser.UserID, data, DataUtils.ObjectToString(filterControl.ReportConditions)); } else { ReportData.SaveReportData(UserSession.LoginUser, _reportID, UserSession.LoginUser.UserID, data, ""); } } catch (Exception ex) { } }
/// <summary> /// Génère les définitions Typescript. /// </summary> /// <param name="rootNamespace">Namespace de l'application.</param> /// <param name="parameters">Paramètres.</param> /// <param name="modelRootList">La liste des modèles.</param> public static void Generate(string rootNamespace, JavascriptParameters parameters, ICollection <ModelRoot> modelRootList) { if (parameters.ModelOutputDirectory == null) { return; } var nameSpaceMap = new Dictionary <string, List <ModelClass> >(); foreach (var model in modelRootList) { foreach (var modelNameSpace in model.Namespaces.Values) { var namespaceName = TSUtils.ToNamespace(modelNameSpace.Name); if (!nameSpaceMap.ContainsKey(namespaceName)) { nameSpaceMap.Add(namespaceName, new List <ModelClass>()); } nameSpaceMap[namespaceName].AddRange(modelNameSpace.ClassList); } } foreach (var entry in nameSpaceMap) { var staticLists = new List <ModelClass>(); foreach (var model in entry.Value) { if (!model.IsStatique) { if (!parameters.IsGenerateEntities && model.DataContract.IsPersistent) { continue; } var fileName = model.Name.ToDashCase(); Console.Out.WriteLine($"Generating Typescript file: {fileName}.ts ..."); fileName = $"{parameters.ModelOutputDirectory}/{entry.Key.ToDashCase(false)}/{fileName}.ts"; var fileInfo = new FileInfo(fileName); var isNewFile = !fileInfo.Exists; var directoryInfo = fileInfo.Directory; if (!directoryInfo.Exists) { Directory.CreateDirectory(directoryInfo.FullName); } var template = new TypescriptTemplate { RootNamespace = rootNamespace, Model = model }; var result = template.TransformText(); File.WriteAllText(fileName, result, new UTF8Encoding(encoderShouldEmitUTF8Identifier: false)); } else { staticLists.Add(model); } } if (staticLists.Any()) { Console.Out.WriteLine($"Generating Typescript file: references.ts ..."); var fileName = $"{parameters.ModelOutputDirectory}/{entry.Key.ToDashCase(false)}/references.ts"; var fileInfo = new FileInfo(fileName); var isNewFile = !fileInfo.Exists; var directoryInfo = fileInfo.Directory; if (!directoryInfo.Exists) { Directory.CreateDirectory(directoryInfo.FullName); } var template = new ReferenceTemplate { References = staticLists.OrderBy(r => r.Name) }; var result = template.TransformText(); File.WriteAllText(fileName, result, new UTF8Encoding(encoderShouldEmitUTF8Identifier: false)); } } }
/// <summary> /// 获得当前请求的URL中double类型参数值 /// </summary> /// <param name="paramName">参数的名称</param> /// <param name="defaultValue">缺省的值</param> /// <returns></returns> public double GetDoubleValue(string paramName, double defaultValue) { return(TSUtils.GetSafeDouble(this.paramsCollection[paramName], defaultValue)); }
/// <summary> /// 获得当前请求的URL中float类型参数值 /// </summary> /// <param name="paramName">参数的名称</param> /// <param name="defaultValue">缺省的值</param> /// <returns></returns> public float GetFloatValue(string paramName, float defaultValue) { return(TSUtils.GetSafeFloat(this.paramsCollection[paramName], defaultValue)); }
/// <summary> /// 获得当前请求的URL中int类型参数值 /// </summary> /// <param name="paramName">参数的名称</param> /// <param name="defaultValue">缺省的值</param> /// <returns></returns> public long GetLongValue(string paramName, long defaultValue) { return(TSUtils.GetSafeLong(this.paramsCollection[paramName], defaultValue)); }
/// <summary> /// 获得当前请求的URL中int类型参数值 /// </summary> /// <param name="paramName">参数的名称</param> /// <param name="defaultValue">缺省的值</param> /// <returns></returns> public int GetIntValue(string paramName, int defaultValue) { return(TSUtils.GetSafeInt(this.paramsCollection[paramName], defaultValue)); }
/// <summary> /// 获得当前请求的URL中bool类型参数值 /// </summary> /// <param name="paramName">参数的名称</param> /// <param name="defaultValue">缺省的值</param> /// <returns></returns> public bool GetBoolValue(string paramName, bool defaultValue) { return(TSUtils.GetSafeBool(this.paramsCollection[paramName], defaultValue)); }
/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { Write("/*\r\n Ce fichier a été généré automatiquement.\r\n Toute modification sera per" + "due.\r\n*/\r\n\r\nimport {EntityToType, StoreNode} from \"focus4/entity\";\r\nimport {"); Write(string.Join(", ", GetDomainList())); Write("} from \"../../domains\";\r\n"); var imports = GetImportList(); foreach (var import in imports) { Write("\r\nimport {"); Write(import.import); Write("} from \""); Write(import.path); Write("\";"); } if (imports.Any()) { Write("\r\n"); } Write("\r\nexport type "); Write(Model.Name); Write(" = EntityToType<typeof "); Write(Model.Name); Write("Entity>;\r\nexport type "); Write(Model.Name); Write("Node = StoreNode<typeof "); Write(Model.Name); Write("Entity>;\r\n\r\nexport const "); Write(Model.Name); Write("Entity = {\r\n name: \""); Write(Model.Name.ToFirstLower()); Write("\",\r\n fields: {\r\n"); if (Model.ParentClass != null) { Write(" ..."); Write(Model.ParentClass.Name); Write("Entity.fields,\r\n"); } foreach (var property in Model.PropertyList) { Write(" "); Write(property.Name.ToFirstLower()); Write(": {\r\n type: "); if (IsArray(property)) { Write("\"list\" as \"list\""); } else if (property.IsFromComposition) { Write("\"object\" as \"object\""); } else { Write("\"field\" as \"field\""); } Write(",\r\n "); if (GetDomain(property) != null) { Write(" name: \""); Write(property.Name.ToFirstLower()); Write("\",\r\n fieldType: {} as "); Write(TSUtils.CSharpToTSType(property)); Write(",\r\n domain: "); Write(GetDomain(property)); Write(",\r\n isRequired: "); Write((property.DataMember.IsRequired && (!property.IsPrimaryKey || property.DataType != "int?")).ToString().ToFirstLower()); Write(",\r\n label: \""); Write(TSUtils.ToNamespace(Model.Namespace.Name)); Write("."); Write(Model.Name.ToFirstLower()); Write("."); Write(property.Name.ToFirstLower()); Write("\"\r\n "); } else { Write(" entity: "); Write(GetReferencedType(property)); Write("Entity\r\n "); } Write("}"); if (property != Model.PropertyList.Last()) { Write(","); } Write("\r\n"); } Write(" }\r\n};\r\n"); if (Model.IsReference) { Write("\r\nexport const "); Write(Model.Name.ToFirstLower()); Write(" = {type: {} as "); Write(Model.Name); Write(", valueKey: \""); Write(Model.PrimaryKey.First().Name.ToFirstLower()); Write("\", labelKey: \""); Write(Model.DefaultProperty?.ToFirstLower() ?? "libelle"); Write("\"};\r\n"); } return(GenerationEnvironment.ToString()); }
private static DataTable GetReportDataTable(Report report) { using (SqlConnection connection = new SqlConnection(UserSession.LoginUser.ConnectionString)) { // Pull repoprt data in preparation to apply column order and sort. ReportData reportData = new ReportData(UserSession.LoginUser); reportData.LoadReportData(report.ReportID, UserSession.LoginUser.UserID); Pair[] columnOrder = null; if (!reportData.IsEmpty) { LosFormatter formatter = new LosFormatter(); StringReader reader = new StringReader(reportData[0].ReportData); object[] gridSettings = (object[])formatter.Deserialize(reader); columnOrder = (Pair[])gridSettings[2]; if (string.IsNullOrEmpty(reportData[0].OrderByClause)) { // here is where we need to get the order by clause and initialize the report data. // this most be in the first version of the code. string sortColumn = null; string sortDirection = null; TSUtils.GetSortColumnAndDirection((ArrayList)gridSettings[1], ref sortColumn, ref sortDirection); if (sortColumn != null) { string sortArgumentSuffix = null; if (string.Compare(sortDirection, "Descending", StringComparison.OrdinalIgnoreCase) == 0) { sortArgumentSuffix = " DESC"; } else { sortArgumentSuffix = " ASC"; } reportData[0].OrderByClause = sortColumn + sortArgumentSuffix; reportData[0].Collection.Save(); } } } // Get Table string query = report.GetSqlWithOrderByClause(false, null); query = query.Replace("SELECT ", "SELECT TOP 100 "); SqlCommand command = new SqlCommand(query, connection); Report.CreateParameters(UserSession.LoginUser, command, UserSession.LoginUser.UserID); SqlDataAdapter adapter = new SqlDataAdapter(command); DataTable table = new DataTable(); connection.Open(); try { adapter.Fill(table); } catch (Exception ex) { try { adapter.SelectCommand.CommandText = report.GetSqlOld(false); adapter.Fill(table); } catch (Exception ex2) { ex.Data["Query"] = query; ExceptionLogs.LogException(UserSession.LoginUser, ex2, "Dashboard"); } } // columnNames used to apply column order. string[] columnNames = new string[table.Columns.Count]; for (int i = 0; i < table.Columns.Count; i++) { table.Columns[i].ColumnName = table.Columns[i].ColumnName.Replace(' ', '_'); columnNames[i] = table.Columns[i].ColumnName; } // Apply column order. if (columnOrder != null) { int standardReportAdjuster = 0; int columnOrderAdjuster = 2; if (columnOrder.Length > table.Columns.Count) { standardReportAdjuster = 1; columnOrderAdjuster = 3; } for (int i = 0; i < table.Columns.Count; i++) { table.Columns[columnNames[i]].SetOrdinal((int)columnOrder[i + standardReportAdjuster].First - columnOrderAdjuster); } } return(table); } }
/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { Write("/*\r\n Ce fichier a été généré automatiquement.\r\n Toute modification sera per" + "due.\r\n*/\r\n\r\nimport {fetch} from \""); Write(ServerPath); Write("\";\r\n"); if (GetImportList().Any()) { Write("\r\n"); } foreach (var import in GetImportList()) { Write("import {"); Write(import.import); Write("} from \""); Write(import.path); Write("\";\r\n"); } foreach (var service in Services) { Write("\r\n/**\r\n * "); Write(service.Documentation.Summary); Write("\r\n"); foreach (var param in service.Documentation.Parameters) { Write(" * @param "); Write(param.Item1); Write(" "); Write(param.Item2); Write("\r\n"); } Write(" * @param options Fetch options.\r\n */\r\nexport function "); Write(service.Name.ToFirstLower()); Write("("); foreach (var parameter in service.Parameters) { Write(parameter.Name); Write(parameter.IsOptional ? "?" : ""); Write(": "); Write(TSUtils.CSharpToTSType(parameter.Type)); if (parameter.Name != service.Parameters.Last().Name) { Write(", "); } } if (service.Parameters.Count() > 0) { Write(", "); } Write("options: RequestInit = {}): Promise<"); Write(TSUtils.CSharpToTSType(service.ReturnType)); Write("> {\r\n return fetch(\""); Write(service.Verb); Write("\", `./"); Write(Regex.Replace(service.Route.Replace("{", "${"), ":([a-z]+)", string.Empty)); Write("`, {"); if (service.BodyParameter != null) { Write("body: "); Write(service.BodyParameter.Name); } if (service.BodyParameter != null && service.QueryParameters.Any()) { Write(", "); } if (service.QueryParameters.Any()) { Write("query: {"); foreach (var qParam in service.QueryParameters) { Write(qParam.Name); if (qParam.Name != service.QueryParameters.Last().Name) { Write(", "); } } Write("}"); } Write("}, options);\r\n}\r\n"); } return(GenerationEnvironment.ToString()); }