private void DragDropHandler(ComponentPartsSchema currentDragComponent)
{
+ var dragOverComponent = DragDropStateService.GetLastDragOverComponent(PageCascading.AppId, PageCascading.PageId);
// 组件来源于 ComponentPanel,新增
if (currentDragComponent.DesignState.IsDroppedFromComponentPanel)
{
- DragItem_Add(ContainerComponent, currentDragComponent, DragDropStateService.GetLastDragOverComponent(PageCascading.AppId, PageCascading.PageId));
+ DragItem_Add(ContainerComponent, currentDragComponent, dragOverComponent);
}
else // 组件在 DesignPanel 内部拖拽
{
@@ -130,11 +131,11 @@
Console.WriteLine($"isSameContainer: {isSameContainer}");
if (isSameContainer) //同一个 DropItemContainer 内拖拽,排序
{
- DropItem_Sorting(ContainerComponent, currentDragComponent, DragDropStateService.GetLastDragOverComponent(PageCascading.AppId, PageCascading.PageId));
+ DropItem_Sorting(ContainerComponent, currentDragComponent, dragOverComponent);
}
else //跨 DropItemContainer 拖拽
{
- DragItem_Move(ContainerComponent, currentDragComponent, DragDropStateService.GetLastDragOverComponent(PageCascading.AppId, PageCascading.PageId));
+ DragItem_Move(ContainerComponent, currentDragComponent, dragOverComponent);
}
}
diff --git a/src/DesignEngine/H.LowCode.DesignEngine/DesignPanel/DropItemContainer.razor.css b/src/DesignEngine/H.LowCode.DesignEngine.Abstraction/DragDropComponents/DropItemContainer.razor.css
similarity index 100%
rename from src/DesignEngine/H.LowCode.DesignEngine/DesignPanel/DropItemContainer.razor.css
rename to src/DesignEngine/H.LowCode.DesignEngine.Abstraction/DragDropComponents/DropItemContainer.razor.css
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Abstraction/H.LowCode.DesignEngine.Abstraction.csproj b/src/DesignEngine/H.LowCode.DesignEngine.Abstraction/H.LowCode.DesignEngine.Abstraction.csproj
index ead828823e6ab386cfe945ca66e8453637b32b09..94876eccae00f97ee51dbdbcc7cd80b5c045e3c0 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.Abstraction/H.LowCode.DesignEngine.Abstraction.csproj
+++ b/src/DesignEngine/H.LowCode.DesignEngine.Abstraction/H.LowCode.DesignEngine.Abstraction.csproj
@@ -1,7 +1,6 @@
-
@@ -9,13 +8,14 @@
+
-
+
diff --git a/src/DesignEngine/H.LowCode.DesignEngine/Services/DragDropStateService.cs b/src/DesignEngine/H.LowCode.DesignEngine.Abstraction/Services/DragDropStateService.cs
similarity index 98%
rename from src/DesignEngine/H.LowCode.DesignEngine/Services/DragDropStateService.cs
rename to src/DesignEngine/H.LowCode.DesignEngine.Abstraction/Services/DragDropStateService.cs
index 870f1219344b06eb2c1d1d43cde758e1d0b5ad22..cf2e257d28d2c72bf6c7c013bb7d215a129d538c 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine/Services/DragDropStateService.cs
+++ b/src/DesignEngine/H.LowCode.DesignEngine.Abstraction/Services/DragDropStateService.cs
@@ -1,12 +1,11 @@
-using H.LowCode.MetaSchema;
-using H.LowCode.MetaSchema.DesignEngine;
+using H.LowCode.MetaSchema.DesignEngine;
-namespace H.LowCode.DesignEngine;
+namespace H.LowCode.DesignEngine.Abstraction;
///
/// 拖拽状态服务
///
-internal class DragDropStateService
+public class DragDropStateService
{
#region 拖拽对象状态管理
private IDictionary
schemaStates = new Dictionary();
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Abstraction/_Imports.razor b/src/DesignEngine/H.LowCode.DesignEngine.Abstraction/_Imports.razor
index 360e1ab650915a16dc998b4462bc46fd4bf457e3..ce4a3016f89803da5e7ad0ec256ba43d9281bd36 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.Abstraction/_Imports.razor
+++ b/src/DesignEngine/H.LowCode.DesignEngine.Abstraction/_Imports.razor
@@ -3,4 +3,5 @@
@using H.LowCode.ComponentBase
@using H.LowCode.MetaSchema
@using H.LowCode.MetaSchema.DesignEngine
+@using H.Util.Blazor
@using H.Util.Ids
\ No newline at end of file
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Application.Contracts/AppServices/IPageAppService.cs b/src/DesignEngine/H.LowCode.DesignEngine.Application.Contracts/AppServices/IPageAppService.cs
index 58abd92dd7e8e058026d3d4470a3fd512d9f569d..15a063aed91200c2633503128b6cd5adcd937435 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.Application.Contracts/AppServices/IPageAppService.cs
+++ b/src/DesignEngine/H.LowCode.DesignEngine.Application.Contracts/AppServices/IPageAppService.cs
@@ -10,6 +10,8 @@ public interface IPageAppService : IApplicationService
Task GetByIdAsync(string appId, string pageId);
+ Task GetByIdWithDefineAsync(string appId, string pageId);
+
Task SaveAsync(PagePartsSchema pageSchema);
Task DeleteAsync(string appId, string pageId);
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Application.Contracts/H.LowCode.DesignEngine.Application.Contracts.csproj b/src/DesignEngine/H.LowCode.DesignEngine.Application.Contracts/H.LowCode.DesignEngine.Application.Contracts.csproj
index 063ac568c05f7cb766259e05699d753be8d9e738..2709ce2c6ac4adc56ff019aea7829dc1677593e7 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.Application.Contracts/H.LowCode.DesignEngine.Application.Contracts.csproj
+++ b/src/DesignEngine/H.LowCode.DesignEngine.Application.Contracts/H.LowCode.DesignEngine.Application.Contracts.csproj
@@ -1,13 +1,12 @@
-
-
+
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Application/AppServices/PageAppService.cs b/src/DesignEngine/H.LowCode.DesignEngine.Application/AppServices/PageAppService.cs
index 3a1ca8dbbadc3eab322423e8219e7ca9450ac45a..d1958a0c7cb0242ab53824f9c4d28b0feb942755 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.Application/AppServices/PageAppService.cs
+++ b/src/DesignEngine/H.LowCode.DesignEngine.Application/AppServices/PageAppService.cs
@@ -14,6 +14,7 @@ namespace H.LowCode.DesignEngine.Application;
public class PageAppService : ApplicationService, IPageAppService
{
private IPageDomainService _domainService => LazyServiceProvider.GetRequiredService();
+ private IComponentPartsAppService _componentPartsAppService => LazyServiceProvider.GetRequiredService();
public async Task> GetListAsync(string appId)
{
@@ -25,6 +26,25 @@ public class PageAppService : ApplicationService, IPageAppService
return await _domainService.GetByIdAsync(appId, pageId);
}
+ ///
+ /// 获取页面 Schema, 并合并组件定义中的属性
+ ///
+ ///
+ ///
+ ///
+ public async Task GetByIdWithDefineAsync(string appId, string pageId)
+ {
+ var pageSchema = await _domainService.GetByIdAsync(appId, pageId);
+
+ //合并组件定义中的属性
+ foreach (var component in pageSchema.Components)
+ {
+ await MergeComponentPartsDefineRecursive(component);
+ }
+
+ return pageSchema;
+ }
+
public async Task SaveAsync(PagePartsSchema pageSchema)
{
ArgumentNullException.ThrowIfNull(pageSchema);
@@ -39,4 +59,27 @@ public class PageAppService : ApplicationService, IPageAppService
await _domainService.DeleteAsync(appId, pageId);
return true;
}
+
+ ///
+ /// 递归合并组件定义中的属性
+ ///
+ ///
+ ///
+ private async Task MergeComponentPartsDefineRecursive(ComponentPartsSchema component)
+ {
+ //组件定义 Schema
+ var componentPartsDefine = await _componentPartsAppService.GetByIdAsync(component.LibraryId,
+ component.ComponentId);
+
+ //组件实例与组件定义合并,保证历史组件实例升级到最新组件特性
+ component.MergeComponentPartsDefine(componentPartsDefine);
+
+ if (component.Childrens != null && component.Childrens.Count > 0)
+ {
+ foreach (var child in component.Childrens)
+ {
+ await MergeComponentPartsDefineRecursive(child);
+ }
+ }
+ }
}
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Application/H.LowCode.DesignEngine.Application.csproj b/src/DesignEngine/H.LowCode.DesignEngine.Application/H.LowCode.DesignEngine.Application.csproj
index 5fb8d9744cde85fdc385e8feb94eec85435305fe..536867b825a0ccba8b96030dedf7e52792ec7b7a 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.Application/H.LowCode.DesignEngine.Application.csproj
+++ b/src/DesignEngine/H.LowCode.DesignEngine.Application/H.LowCode.DesignEngine.Application.csproj
@@ -1,7 +1,6 @@
-
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Domain/DataDomainServices/FormDataDomainService.cs b/src/DesignEngine/H.LowCode.DesignEngine.Domain/DataDomainServices/FormDataDomainService.cs
index c15b8adf579a987afb7db3e89074893e2c23b5f3..951ea4c308a3ef0ba60d2e6a4dc70f60be2f1724 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.Domain/DataDomainServices/FormDataDomainService.cs
+++ b/src/DesignEngine/H.LowCode.DesignEngine.Domain/DataDomainServices/FormDataDomainService.cs
@@ -23,14 +23,18 @@ public class FormDataDomainService : DomainService, IFormDataDomainService
string entityName = formPageSchema.DataSource.DataSourceValue;
- if (string.IsNullOrEmpty(id) || string.Equals(id, "empty"))
+ if (string.IsNullOrEmpty(id))
{
var defaultEntity = new FormEntity()
{
Name = entityName,
- Fields = formPageSchema.Components
- .Where(t => t.IsContainer == false)
- .ToDictionary(key => key.Name, val => val.Fragment.GetDefaultValue())
+ Fields = formPageSchema.Components.Where(t => t.IsContainer == false)
+ .Select(t => new FormFieldEntity()
+ {
+ Name = t.Name,
+ TypeName = t.Fragment.ValueType,
+ Value = t.Fragment.GetDefaultValue()
+ }).ToList()
};
return defaultEntity;
}
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Domain/H.LowCode.DesignEngine.Domain.csproj b/src/DesignEngine/H.LowCode.DesignEngine.Domain/H.LowCode.DesignEngine.Domain.csproj
index c5e8d2cf0282ef884792913b6506ffbdfbe3ec0a..ea6a366f056a7fb3ab84adc71f614ba0d8c0ed6f 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.Domain/H.LowCode.DesignEngine.Domain.csproj
+++ b/src/DesignEngine/H.LowCode.DesignEngine.Domain/H.LowCode.DesignEngine.Domain.csproj
@@ -10,7 +10,7 @@
-
+
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/EntityFrameworkCore/DesignEngineDbContext.cs b/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/EntityFrameworkCore/DesignEngineDbContext.cs
index 98cd6118373b8b52a830c54532e87bf07a0c8db3..adba260cb223bdd9f59c6aadabb004abfdc57e10 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/EntityFrameworkCore/DesignEngineDbContext.cs
+++ b/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/EntityFrameworkCore/DesignEngineDbContext.cs
@@ -33,7 +33,7 @@ public class DesignEngineDbContext : DbContext
foreach (var field in formEntity.Fields)
{
- var propertyInfoName = entityType.GetProperty(field.Key);
+ var propertyInfoName = entityType.GetProperty(field.Name);
propertyInfoName.SetValue(entity, field.Value);
}
@@ -49,7 +49,7 @@ public class DesignEngineDbContext : DbContext
foreach (var field in formEntity.Fields)
{
- var propertyInfoName = entityType.GetProperty(field.Key);
+ var propertyInfoName = entityType.GetProperty(field.Name);
propertyInfoName.SetValue(entity, field.Value);
}
@@ -69,7 +69,14 @@ public class DesignEngineDbContext : DbContext
foreach (var property in entityType.GetProperties())
{
var propertyValue = property.GetValue(entity);
- formEntity.Fields[property.Name] = propertyValue;
+
+ var field = new FormFieldEntity()
+ {
+ Name = property.Name,
+ TypeName = property.PropertyType.FullName,
+ Value = propertyValue
+ };
+ formEntity.Fields.Add(field);
}
return formEntity;
}
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/H.LowCode.DesignEngine.EntityFrameworkCore.csproj b/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/H.LowCode.DesignEngine.EntityFrameworkCore.csproj
index 9b67ac292f042f1c0186d7d903ef9a00b72af17a..dcfb689852b9bfda9c7ed5f5dcfd9b0534e3a4fc 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/H.LowCode.DesignEngine.EntityFrameworkCore.csproj
+++ b/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/H.LowCode.DesignEngine.EntityFrameworkCore.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Host.Client/DesignEngineHostClientModule.cs b/src/DesignEngine/H.LowCode.DesignEngine.Host.Client/DesignEngineHostClientModule.cs
index c45920fbdb5873b42ad5622e8960cd7c4be50a45..8302e346e8897c7eb5a253fb78eaec7b904e1fff 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.Host.Client/DesignEngineHostClientModule.cs
+++ b/src/DesignEngine/H.LowCode.DesignEngine.Host.Client/DesignEngineHostClientModule.cs
@@ -1,11 +1,9 @@
using H.LowCode.ComponentBase;
-using H.LowCode.Components.AntBlazor;
-using H.LowCode.Components.Extension;
+using H.LowCode.Components.Defaults;
using H.LowCode.DesignEngine.Application.Contracts;
using H.LowCode.MyApp;
using H.LowCode.PartsDesignEngine;
using H.LowCode.Workbench;
-using H.Util.Blazor;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Volo.Abp.Autofac.WebAssembly;
using Volo.Abp.Http.Client;
@@ -26,9 +24,10 @@ namespace H.LowCode.DesignEngine.Host.Client;
typeof(DesignEngineModule),
typeof(MyAppModule),
typeof(PartsDesignEngineModule),
- //ComponentParts
- typeof(DefaultComponentModule),
- typeof(ExtensionComponentModule)
+ //Components
+ typeof(LowCodeDefaultComponentModule),
+ //ComponentBase
+ typeof(LowCodeComponentBaseModule)
)]
public class DesignEngineHostClientModule : AbpModule
{
@@ -41,10 +40,6 @@ public class DesignEngineHostClientModule : AbpModule
ConfigureHttpClient(context, environment);
ConfigureHttpClientProxies(context);
- //状态管理
- context.Services.AddScoped(typeof(ComponentState<>));
- context.Services.AddScoped(typeof(ComponentState<,>));
-
//应用状态
context.Services.AddSingleton(new LowCodeAppState(true));
}
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Host.Client/H.LowCode.DesignEngine.Host.Client.csproj b/src/DesignEngine/H.LowCode.DesignEngine.Host.Client/H.LowCode.DesignEngine.Host.Client.csproj
index e9d8fb54bc884b4f6406543d5d185e42c1e0ef97..da8a127d768e51ae0be5c2990bb7aef0cf00aa1f 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.Host.Client/H.LowCode.DesignEngine.Host.Client.csproj
+++ b/src/DesignEngine/H.LowCode.DesignEngine.Host.Client/H.LowCode.DesignEngine.Host.Client.csproj
@@ -18,8 +18,7 @@
-
-
+
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Host/DesignEngineHostModule.cs b/src/DesignEngine/H.LowCode.DesignEngine.Host/DesignEngineHostModule.cs
index 179b8009d3301398e7e71017edfe9015bf43ffbb..dd3dec457bcf0ccf20c24e2eb69ca02a075a68dc 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.Host/DesignEngineHostModule.cs
+++ b/src/DesignEngine/H.LowCode.DesignEngine.Host/DesignEngineHostModule.cs
@@ -1,18 +1,14 @@
using H.LowCode.ComponentBase;
-using H.LowCode.Components.AntBlazor;
-using H.LowCode.Components.Extension;
+using H.LowCode.Components.Defaults;
using H.LowCode.DesignEngine.Application;
using H.LowCode.DesignEngine.EntityFrameworkCore;
using H.LowCode.DesignEngine.Repository.JsonFile;
using H.LowCode.MyApp;
using H.LowCode.PartsDesignEngine;
using H.LowCode.Workbench;
-using H.Util.Blazor;
-using Microsoft.OpenApi.Models;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Autofac;
using Volo.Abp.Modularity;
-using Volo.Abp.Swashbuckle;
namespace H.LowCode.DesignEngine.Host;
@@ -20,7 +16,6 @@ namespace H.LowCode.DesignEngine.Host;
//abp
typeof(AbpAutofacModule),
typeof(AbpAspNetCoreMvcModule),
- typeof(AbpSwashbuckleModule),
//=====lowcode-server=====//
typeof(DesignEngineApplicationModule),
typeof(DesignEngineEntityFrameworkCoreModule),
@@ -32,20 +27,16 @@ namespace H.LowCode.DesignEngine.Host;
typeof(DesignEngineModule),
typeof(MyAppModule),
typeof(PartsDesignEngineModule),
- //ComponentParts
- typeof(DefaultComponentModule),
- typeof(ExtensionComponentModule)
+ //Components
+ typeof(LowCodeDefaultComponentModule),
+ //ComponentBase
+ typeof(LowCodeComponentBaseModule)
)]
public class DesignEngineHostModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
ConfigureAutoApiControllers();
- ConfigureSwaggerServices(context.Services);
-
- //状态管理
- context.Services.AddScoped(typeof(ComponentState<>));
- context.Services.AddScoped(typeof(ComponentState<,>));
//应用状态
context.Services.AddSingleton(new LowCodeAppState(true));
@@ -59,21 +50,4 @@ public class DesignEngineHostModule : AbpModule
options.ConventionalControllers.Create(typeof(DesignEngineApplicationModule).Assembly);
});
}
-
- private void ConfigureSwaggerServices(IServiceCollection services)
- {
- //动态API swagger 注册
- var env = services.GetHostingEnvironment();
- if (env.IsDevelopment())
- {
- services.AddAbpSwaggerGen(
- options =>
- {
- options.SwaggerDoc("v1", new OpenApiInfo { Title = "DesignEngine", Version = "v1" });
- options.DocInclusionPredicate((docName, description) => true);
- options.CustomSchemaIds(type => type.FullName);
- }
- );
- }
- }
}
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Host/H.LowCode.DesignEngine.Host.csproj b/src/DesignEngine/H.LowCode.DesignEngine.Host/H.LowCode.DesignEngine.Host.csproj
index ec5ed595611ba0fe6a609bc06ed44a6a71df8b3d..1dc8207e95faccaa30f6084519d46616a03bf1cd 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.Host/H.LowCode.DesignEngine.Host.csproj
+++ b/src/DesignEngine/H.LowCode.DesignEngine.Host/H.LowCode.DesignEngine.Host.csproj
@@ -4,9 +4,8 @@
-
-
+
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Host/Program.cs b/src/DesignEngine/H.LowCode.DesignEngine.Host/Program.cs
index a5621416dd81c23db949618f6e4703f1d8c30ff1..7d8761f9f69cf7534be6e9c351de3aa796f35118 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.Host/Program.cs
+++ b/src/DesignEngine/H.LowCode.DesignEngine.Host/Program.cs
@@ -3,6 +3,8 @@ using System.Text.Json;
using H.LowCode.DesignEngine.Host.Components;
using H.Util.Blazor;
using H.LowCode.DesignEngine.Host;
+using Microsoft.AspNetCore.ResponseCompression;
+using System.IO.Compression;
var builder = WebApplication.CreateBuilder(args);
@@ -15,7 +17,16 @@ builder.Services.AddControllers().AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
});
-builder.Services.AddSwaggerGen();
+
+// Ӧѹ
+builder.Services.AddResponseCompression(options =>
+{
+ options.Providers.Add();
+});
+builder.Services.Configure(options =>
+{
+ options.Level = CompressionLevel.Optimal;
+});
#region LowCode
builder.Host.UseAutofac();
@@ -33,8 +44,6 @@ await app.InitializeApplicationAsync();
if (app.Environment.IsDevelopment())
{
app.UseWebAssemblyDebugging();
- app.UseSwagger();
- app.UseSwaggerUI();
}
else
{
@@ -43,6 +52,15 @@ else
app.UseHsts();
}
+app.UseResponseCompression();
+app.UseStaticFiles(new StaticFileOptions
+{
+ OnPrepareResponse = ctx =>
+ {
+ ctx.Context.Response.Headers.Append("Cache-Control", "public,max-age=600");
+ }
+});
+
app.UseHttpsRedirection();
app.MapStaticAssets();
diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Model/H.LowCode.DesignEngine.Model.csproj b/src/DesignEngine/H.LowCode.DesignEngine.Model/H.LowCode.DesignEngine.Model.csproj
index 146671bc97a181265646fb9d598163c9d43d090f..bf01f631036c935f0e1dcaf26a718fc59f4a61db 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine.Model/H.LowCode.DesignEngine.Model.csproj
+++ b/src/DesignEngine/H.LowCode.DesignEngine.Model/H.LowCode.DesignEngine.Model.csproj
@@ -1,9 +1,9 @@
-
+
-
+
diff --git a/src/DesignEngine/H.LowCode.DesignEngine/DesignEngineModule.cs b/src/DesignEngine/H.LowCode.DesignEngine/DesignEngineModule.cs
index c4c46b9b9b3ba2819be65852de1a908461dea3cf..cd842b577fc88c40153d89087cf0dd0d3a08bf2b 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine/DesignEngineModule.cs
+++ b/src/DesignEngine/H.LowCode.DesignEngine/DesignEngineModule.cs
@@ -1,4 +1,5 @@
-using Microsoft.Extensions.DependencyInjection;
+using H.LowCode.DesignEngine.Abstraction;
+using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity;
namespace H.LowCode.DesignEngine;
diff --git a/src/DesignEngine/H.LowCode.DesignEngine/DesignPanel/DesignPanel.razor b/src/DesignEngine/H.LowCode.DesignEngine/DesignPanel/DesignPanel.razor
index 4c1794a51a9a0de7e049ce03996fa0e38d3ae1f8..581abba5e1669793dd98b27c85a10d6d682b9301 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine/DesignPanel/DesignPanel.razor
+++ b/src/DesignEngine/H.LowCode.DesignEngine/DesignPanel/DesignPanel.razor
@@ -3,8 +3,6 @@
@inherits DesignEngineLowCodeComponentBase
@inject DragDropStateService DragDropStateService
-@inject IComponentPartsAppService ComponentPartsAppService
-@inject ComponentState RootComponentState
@if (_rootComponent != null)
{
@@ -20,17 +18,16 @@
[SupplyParameterFromQuery(Name = "pt")]
public int PageType { get; set; }
+ [Parameter]
+ public IList Components { get; set; }
+
private ComponentPartsSchema _rootComponent;
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
- _rootComponent = RootComponentState.GetOrAdd(this, () =>
- {
- return LoadRootComponent();
- });
- //考虑预呈现场景,重新保存 rootComponent
+ _rootComponent = LoadRootComponent();
DragDropStateService.SetRootComponent(PageCascading.AppId, PageCascading.PageId, _rootComponent);
}
@@ -43,40 +40,9 @@
rootComponent.Name = "root";
rootComponent.Refresh = StateHasChanged;
}
- return rootComponent;
- }
- public async Task ReloadAsync(PagePartsSchema pageSchema)
- {
- var rootComponent = DragDropStateService.GetRootComponent(PageCascading.AppId, PageCascading.PageId);
- if (pageSchema != null && rootComponent != null)
- {
- var componentPartsList = new List();
- foreach (var component in pageSchema.Components)
- {
- //组件实例 Schema
- var json = component.ToJson();
- var componentPartsInstance = json.FromJson();
+ rootComponent.Childrens = Components;
- //组件定义 Schema
- var componentPartsDefine = await ComponentPartsAppService.GetByIdAsync(component.LibraryId,
- component.ComponentId);
-
- //组件实例与组件定义合并,保证历史组件实例升级到最新组件特性
- componentPartsInstance.MergeComponentPartsDefine(componentPartsDefine);
- componentPartsList.Add(componentPartsInstance);
- }
- rootComponent.Childrens = componentPartsList;
- }
- StateHasChanged();
- }
-
- ///
- /// 用于 RootComponentState 的 key(每个页面独立缓存)
- ///
- ///
- public override string ToString()
- {
- return $"{base.ToString()}-{PageCascading.AppId}-{PageCascading.PageId}";
+ return rootComponent;
}
}
diff --git a/src/DesignEngine/H.LowCode.DesignEngine/H.LowCode.DesignEngine.csproj b/src/DesignEngine/H.LowCode.DesignEngine/H.LowCode.DesignEngine.csproj
index 90904419f2504d1808a98dc380768babba42e30b..da3fea0b2a1aaf3258c70d3f767c9ea67bba4dca 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine/H.LowCode.DesignEngine.csproj
+++ b/src/DesignEngine/H.LowCode.DesignEngine/H.LowCode.DesignEngine.csproj
@@ -1,7 +1,6 @@
-
@@ -18,7 +17,7 @@
-
+
diff --git a/src/DesignEngine/H.LowCode.DesignEngine/Pages/DesignPage.razor b/src/DesignEngine/H.LowCode.DesignEngine/Pages/DesignPage.razor
index 7275f6820f9a7bdd8db1b9be94e79c2fd9e23157..b3810660d7a7a9ce84447d6c1b862efff177a2a8 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine/Pages/DesignPage.razor
+++ b/src/DesignEngine/H.LowCode.DesignEngine/Pages/DesignPage.razor
@@ -5,6 +5,7 @@
@inject IPageAppService PageAppService
@inject DragDropStateService DragDropStateService
+@inject ComponentState PagePartsSchemaState
@($"{_pageCascadingModel.PageName} - 页面设计器")
@@ -33,7 +34,7 @@
-
+
@@ -51,20 +52,21 @@
[Parameter]
public string PageId { get; set; }
- private DesignPanel _designPanel;
-
private PagePartsSchema _pageSchema;
private PageCascadingModel _pageCascadingModel;
private bool _isNewPage;
protected override async Task OnInitializedAsync()
{
+ await base.OnInitializedAsync();
+
_pageCascadingModel = new() { AppId = AppId, PageId = PageId, PageName = "..." };
- _pageSchema = await LoadPageSchemaAsync();
+ _pageSchema = await PagePartsSchemaState.GetOrAddAsync(this, async () =>
+ {
+ return await LoadPageSchemaAsync();
+ });
SetPageCascadingModel(_pageSchema);
-
- await base.OnInitializedAsync();
}
private async Task LoadPageSchemaAsync()
@@ -79,13 +81,8 @@
return newPage;
}
- var pageSchema = await PageAppService.GetByIdAsync(AppId, PageId);
-
- if (_designPanel != null)
- {
- DragDropStateService.SetPage(AppId, pageSchema);
- await _designPanel.ReloadAsync(pageSchema);
- }
+ var pageSchema = await PageAppService.GetByIdWithDefineAsync(AppId, PageId);
+ DragDropStateService.SetPage(AppId, pageSchema);
return pageSchema;
}
@@ -95,7 +92,7 @@
PagePartsSchema pageSchema = CreatePageSchema();
if (pageSchema.Components.Count == 0)
{
- await Message.Warning("没有任何组件,禁止保存!");
+ await Message.WarningAsync("没有任何组件,禁止保存!");
return;
}
@@ -108,11 +105,11 @@
base.NavigateTo($"/designer/{pageSchema.AppId}/{pageSchema.Id}");
}
- await Message.Success("保存成功");
+ await Message.SuccessAsync("保存成功");
}
else
{
- await Message.Error($"保存失败");
+ await Message.ErrorAsync($"保存失败");
}
}
@@ -130,4 +127,13 @@
_pageCascadingModel.PageName = pageSchema.Name;
_pageCascadingModel.PageLayout = pageSchema.PageProperty.PageLayout;
}
+
+ ///
+ /// 用于 PagePartsSchemaState 的 key(每个页面独立缓存)
+ ///
+ ///
+ public override string ToString()
+ {
+ return $"{base.ToString()}-{AppId}-{PageId}";
+ }
}
\ No newline at end of file
diff --git a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PageSetting.razor b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PageSetting.razor
index d203e0d3496885af4f0def3b0d1f2e218f0ad83d..0e95d5b57999ad13f503a728528608096e96b36f 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PageSetting.razor
+++ b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PageSetting.razor
@@ -5,7 +5,7 @@
{
-
+
一列
两列
三列
@@ -37,6 +37,12 @@
}
}
+
+ 其它
+
+
+
+
}
@code {
@@ -48,8 +54,13 @@
await base.OnInitializedAsync();
}
- private void OnChange(int pageLayout)
+ private void OnLayoutChange(int pageLayout)
{
BlazorEventDispatcher.Publish("designengine.pagesetting.pagelayout.onchange", pageLayout);
}
+
+ private void OnStyleChange(string customStyle)
+ {
+
+ }
}
diff --git a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor
index c7745e57dc528d61076a230ef49fe36ec00b6f5e..0c4bc2995edfbaaab24d964747696cbc4541f9b3 100644
--- a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor
+++ b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor
@@ -22,13 +22,6 @@ else
}
-@* @if(Component.Property.ComponentValueType == ComponentValueTypeEnum.Table) *@
-@* { *@
- @*