コード例 #1
0
    // ToDo: Add tables datasource support, currently supports only queires
    public CodeGenerationSection GenerateListForm(StoreForm form, StoreCodeGeneratorContext ctx)
    {
        var result = new CodeGenerationSection()
        {
            FileName = form.Name + ".cs"
        };
        var sb         = new StringBuilder();
        var schema     = ctx.Schemas[form.Schema];
        var dataSource = form.Datasource.Replace(ObjectBuilderConstants.DS_QUERY_START, "");
        var query      = ctx.Queries[dataSource];
        var usingList  = new List <string>();

        usingList.Add(schema.Namespace);
        usingList.Add(query.Namespace);
        usingList = usingList.Distinct().ToList();

        sb.AppendLine(@$ "using Platz.SqlForms;");

        foreach (var u in usingList)
        {
            sb.AppendLine(@$ "using {u};");
        }

        sb.AppendLine();
        sb.AppendLine(@$ "namespace {form.Namespace};");

        sb.Append(@$ "
コード例 #2
0
    //private readonly IProjectLoader _loader;

    //public FormCodeGenerator(IProjectLoader projectLoader)
    //{
    //    _loader = projectLoader;
    //}
    public CodeGenerationSection GenerateListFormRazorPage(StoreForm form, StoreCodeGeneratorContext ctx)
    {
        var result = new CodeGenerationSection()
        {
            FileName = form.Name + ".razor.cs"
        };
        var sb    = new StringBuilder();
        var psb   = new StringBuilder();
        var fpsb  = new StringBuilder();
        var comma = "";

        foreach (var p in form.PageParameters)
        {
            string pt = "";

            switch (p.DataType)
            {
            case "int":
                pt = ":int";
                break;
            }

            psb.Append($"/{{{p.Name}{pt}}}");
            fpsb.Append($"{comma}{p.Name}");
            comma = ", ";
        }

        sb.AppendLine(@$ "@page " "/{form.RoutingPath}{psb.ToString()}" "");

        sb.AppendLine(@$ "@using Platz.SqlForms");

        sb.AppendLine(@$ "@using {form.Namespace}");
        sb.AppendLine();

        if (!string.IsNullOrWhiteSpace(form.Caption))
        {
            sb.AppendLine(@$ "<h1>{form.Caption}</h1>");
            sb.AppendLine();
        }

        // Header
        if (!string.IsNullOrWhiteSpace(form.PageHeaderForm))
        {
            var readOnly = "";

            if (form.PageHeaderFormReadOnly)
            {
                readOnly = @"ReadOnly=""true"" ";
            }

            sb.AppendLine($@"<FormDynamicEditComponent TForm=""{form.PageHeaderForm}"" FormParameters=""GetHeaderParameters()"" {readOnly}/> ");
        }

        var serviceParams = string.Join(", ", form.PageParameters.Select(p => p.Name));

        sb.AppendLine($@"<FormDataServiceListComponent TForm=""{form.Name}"" ServiceParameters=""@(new object[] {{ {serviceParams} }})"" /> ");

        sb.AppendLine(@"
@code {");

        foreach (var p in form.PageParameters)
        {
            sb.AppendLine(@$ "    [Parameter]");
            sb.AppendLine(@$ "    public {p.DataType} {p.Name} {{ get; set; }}");
        }

        // Header Parameters
        if (!string.IsNullOrWhiteSpace(form.PageHeaderForm))
        {
            sb.AppendLine();
            sb.AppendLine($@"    private FormParameter[] GetHeaderParameters()");
            sb.AppendLine($@"    {{");
            sb.AppendLine($@"        return new FormParameter[]");
            sb.AppendLine($@"        {{");

            var headerForm = ctx.Forms[form.PageHeaderForm];

            foreach (var headerParameter in headerForm.PageParameters)
            {
                var parameter = form.PageParameters.First(p => p.HeaderFormParameterMapping == headerParameter.Name);
                sb.AppendLine(@$ "           new FormParameter(" "{parameter.Name}" ", {parameter.Name}),");
            }

            sb.AppendLine($@"        }}");
            sb.AppendLine($@"    }}");
        }

        sb.AppendLine(@"}");

        result.Code = sb.ToString();
        return(result);
    }