private string FormatPage(FrontTypeInfo typeInfo) { var componentName = GetComponentName(typeInfo); var header = @"import { LitElement, html, property, customElement } from ""lit-element""" + "\n" + "import { InitPage } from './initPage';\n" + $"@customElement('{componentName}')" + "\n" + $"class {typeInfo.Name}Component extends LitElement" + "{\n"; var footer = "}\n"; var props = string.Join("", typeInfo.FieldInfos.Select(x => "@property({type : " + GetPropertyType(x.FieldType) + "}) " + $"{x.Name}: {ConvertTypeToTypeScript(x.FieldType)}" + "\n") ); var connected = "connectedCallback() { \n" + " super.connectedCallback()\n" + $" new InitPage().Fill('/api/' + location.pathname, this);\n" + "}\n"; var render = "render() { return html`" + componentName + "`; }"; return(header + props /*+ connected*/ + render + footer); }
private string GetTemplateFilenameWithoutExtension(FrontTypeInfo typeInfo) { /* * if (typeInfo.Name.StartsWith("Users")) * return System.IO.Path.Combine("users", typeInfo.Name + "Component"); * if (typeInfo.Name.StartsWith("Vendeur")) * return System.IO.Path.Combine("vendeur", typeInfo.Name + "Component"); */ return(System.IO.Path.Combine(typeInfo.Name + "Component")); }
public IEnumerable <Type> GetNeededTypes(FrontTypeInfo pageTypeInfo) { return(pageTypeInfo.FormMemberInfos .SelectMany(f => new Type[] { f.MessageType, f.ResponseType }) .Concat(pageTypeInfo.FieldInfos .Where(f => f.FieldType != typeof(string) && f.FieldType != typeof(string[])) .Select(f => f.FieldType) .ToList() ) .Distinct() .ToList()); }
public FrontTypeInfo GetPageTypeInfo(Type pageType) { var pageResponseType = GetPageResponseType(pageType); var typeInfo = new FrontTypeInfo(); typeInfo.Name = pageType.Name; typeInfo.IsPage = true; typeInfo.PageUrl = GetPageParameterizedUrl(pageType); typeInfo.FieldInfos = GetFields(pageResponseType); typeInfo.LinkMemberInfos = GetLinks(pageResponseType); typeInfo.FormMemberInfos = GetForms(pageResponseType); return(typeInfo); }
private string FormatMessage(FrontTypeInfo type) { var r = $"class {type.Name} " + "{\n"; foreach (var m in type.FieldInfos) { r += $" {m.Name}: {m.FieldType.Name};\n"; } foreach (var m in type.LinkMemberInfos) { r += $" {m.Name}: string;\n"; } r += "}\n\n"; return(r); }
private string FormatPage(FrontTypeInfo type) { var r = $"abstract class {type.Name} extends Page " + "{\n"; r += $" PageUrl:string = '{type.PageUrl}';\n"; foreach (var m in type.FieldInfos) { r += $" {m.Name}: {m.FieldType.Name};\n"; } foreach (var m in type.LinkMemberInfos) { r += $" {m.Name}: string;\n"; } foreach (var m in type.FormMemberInfos) { r += $" {m.Name}: Form<{m.MessageType.Name}, {m.ResponseType.Name}>;\n"; } r += "}\n\n"; return(r); }
public string FormatType(FrontTypeInfo type) { return(type.IsPage ? FormatPage(type) : FormatMessage(type)); }
private string GetComponentName(FrontTypeInfo typeInfo) { var name = typeInfo.Name; return(name.Replace("_", "-").ToLowerInvariant()); }