From f91d8467a4edc4bfb36554520fe15bc17a4d6143 Mon Sep 17 00:00:00 2001 From: masumulu28 Date: Fri, 22 Mar 2024 03:55:31 +0300 Subject: [PATCH 01/10] add: ConfigureAngularLibraryAfterMicroserviceServiceCreatedAsync method and use in NewCommand.Execute method --- .../Volo/Abp/Cli/Commands/NewCommand.cs | 2 + .../Commands/ProjectCreationCommandBase.cs | 67 ++++++++++++++++--- 2 files changed, 59 insertions(+), 10 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs index 9745d3c23f..ce106626bf 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs @@ -111,6 +111,8 @@ public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransien await RunGraphBuildForMicroserviceServiceTemplate(projectArgs); await CreateInitialMigrationsAsync(projectArgs); + await ConfigureAngularLibraryAfterMicroserviceServiceCreatedAsync(projectArgs, template); + var skipInstallLibs = commandLineArgs.Options.ContainsKey(Options.SkipInstallingLibs.Long) || commandLineArgs.Options.ContainsKey(Options.SkipInstallingLibs.Short); if (!skipInstallLibs) { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index b433926c67..00339bf7cf 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -43,7 +43,7 @@ public abstract class ProjectCreationCommandBase public ThemePackageAdder ThemePackageAdder { get; } public AngularThemeConfigurer AngularThemeConfigurer { get; } - + public CliVersionService CliVersionService { get; } public ProjectCreationCommandBase( @@ -436,15 +436,15 @@ public abstract class ProjectCreationCommandBase var isModuleTemplate = ModuleTemplateBase.IsModuleTemplate(projectArgs.TemplateName); var isWebassembly = projectArgs.UiFramework == UiFramework.Blazor; - - var message = isWebassembly || isModuleTemplate - ? "Generating bundles for Blazor Wasm" + + var message = isWebassembly || isModuleTemplate + ? "Generating bundles for Blazor Wasm" : "Generating bundles for MAUI Blazor"; - + var projectType = isWebassembly || isModuleTemplate - ? BundlingConsts.WebAssembly + ? BundlingConsts.WebAssembly : BundlingConsts.MauiBlazor; - + Logger.LogInformation(message + "..."); await EventBus.PublishAsync(new ProjectCreationProgressEvent @@ -454,7 +454,7 @@ public abstract class ProjectCreationCommandBase var searchPattern = isWebassembly ? "*.Blazor.csproj" : "*.MauiBlazor.csproj"; var path = projectArgs.OutputFolder; - + if (isModuleTemplate) { path = Path.Combine(path, "host"); @@ -471,7 +471,7 @@ public abstract class ProjectCreationCommandBase await _bundlingService.BundleAsync(directory, true, projectType); } - + protected virtual bool ShouldRunBundleCommand(ProjectBuildArgs projectArgs) { if ((AppTemplateBase.IsAppTemplate(projectArgs.TemplateName) || AppNoLayersTemplateBase.IsAppNoLayersTemplate(projectArgs.TemplateName)) @@ -711,7 +711,7 @@ public abstract class ProjectCreationCommandBase protected virtual ThemeStyle? GetThemeStyleOrNull(CommandLineArgs commandLineArgs, Theme theme) { - if(theme != Theme.LeptonX) + if (theme != Theme.LeptonX) { return null; } @@ -749,6 +749,53 @@ public abstract class ProjectCreationCommandBase } } + protected virtual async Task ConfigureAngularLibraryAfterMicroserviceServiceCreatedAsync(ProjectBuildArgs projectArgs, string template) + { + if (!MicroserviceServiceTemplateBase.IsMicroserviceServiceTemplate(projectArgs.TemplateName)) + { + return; + } + + var projectRootpath = Directory.GetCurrentDirectory(); + var projectUiFramework = FindMicroserviceSolutionUiFramework(projectRootpath); + + if (projectUiFramework != UiFramework.Angular) + { + return; + } + + Logger.LogInformation("Setting up the angular library..."); + + var libraryName = projectArgs.SolutionName.ProjectName.ToKebabCase(); + + var hostAppPath = Path.Combine(projectRootpath, "apps", "angular"); + var angularLibraryPath = Path.Combine(hostAppPath, "projects", libraryName); + + await GenerateAngularLibraryForNewMicroserviceAsync(libraryName, hostAppPath); + + try + { + Directory.Delete(angularLibraryPath, true); + await MoveLibraryToHostAppAsync(projectArgs.OutputFolder, libraryName, angularLibraryPath); + } + catch (Exception e) + { + Logger.LogError(e.Message); + } + } + + protected virtual async Task GenerateAngularLibraryForNewMicroserviceAsync(string libraryName, string workingDirectory) + { + var result = CmdHelper.RunCmdAndGetOutput($"npx ng g library {libraryName}", workingDirectory); + return await Task.FromResult(result); + } + + protected virtual async Task MoveLibraryToHostAppAsync(string outputFolder, string libraryName, string angularLibraryPath) + { + var currentAngularLibPath = Path.Combine(outputFolder, "angular", libraryName); + Directory.Move(currentAngularLibPath, angularLibraryPath); + } + public static class Options { public static class Template From d6e9c6a003b9fab96588f643c99c0b5d4e89b426 Mon Sep 17 00:00:00 2001 From: masumulu28 Date: Fri, 22 Mar 2024 04:03:13 +0300 Subject: [PATCH 02/10] Rename variables name --- .../Abp/Cli/Commands/ProjectCreationCommandBase.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index 00339bf7cf..15556c8394 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -756,10 +756,10 @@ public abstract class ProjectCreationCommandBase return; } - var projectRootpath = Directory.GetCurrentDirectory(); - var projectUiFramework = FindMicroserviceSolutionUiFramework(projectRootpath); + var rootPath = Directory.GetCurrentDirectory(); + var uiFramework = FindMicroserviceSolutionUiFramework(rootPath); - if (projectUiFramework != UiFramework.Angular) + if (uiFramework != UiFramework.Angular) { return; } @@ -768,10 +768,10 @@ public abstract class ProjectCreationCommandBase var libraryName = projectArgs.SolutionName.ProjectName.ToKebabCase(); - var hostAppPath = Path.Combine(projectRootpath, "apps", "angular"); - var angularLibraryPath = Path.Combine(hostAppPath, "projects", libraryName); + var angularAppPath = Path.Combine(rootPath, "apps", "angular"); + var angularLibraryPath = Path.Combine(angularAppPath, "projects", libraryName); - await GenerateAngularLibraryForNewMicroserviceAsync(libraryName, hostAppPath); + await GenerateAngularLibraryForNewMicroserviceAsync(libraryName, angularAppPath); try { From 206d3f6722b53248508d8a7fe9b4cec558fe6694 Mon Sep 17 00:00:00 2001 From: masumulu28 Date: Tue, 26 Mar 2024 01:16:17 +0300 Subject: [PATCH 03/10] Change library creation with @abp/ng.schematics:create-lib command --- .../Volo/Abp/Cli/Commands/NewCommand.cs | 2 +- .../Commands/ProjectCreationCommandBase.cs | 47 ++++++++++--------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs index ce106626bf..a8c9994340 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs @@ -111,7 +111,7 @@ public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransien await RunGraphBuildForMicroserviceServiceTemplate(projectArgs); await CreateInitialMigrationsAsync(projectArgs); - await ConfigureAngularLibraryAfterMicroserviceServiceCreatedAsync(projectArgs, template); + await ConfigureAngularAfterMicroserviceServiceCreatedAsync(projectArgs, template); var skipInstallLibs = commandLineArgs.Options.ContainsKey(Options.SkipInstallingLibs.Long) || commandLineArgs.Options.ContainsKey(Options.SkipInstallingLibs.Short); if (!skipInstallLibs) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index 15556c8394..cd4c80ac23 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -1,13 +1,12 @@ using System; using System.IO; +using System.Text; using System.Linq; using System.Threading.Tasks; using ICSharpCode.SharpZipLib.Core; using ICSharpCode.SharpZipLib.Zip; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; -using NuGet.Versioning; -using NUglify.Helpers; using Volo.Abp.Cli.ProjectModification; using Volo.Abp.Cli.Args; using Volo.Abp.Cli.Bundling; @@ -749,7 +748,7 @@ public abstract class ProjectCreationCommandBase } } - protected virtual async Task ConfigureAngularLibraryAfterMicroserviceServiceCreatedAsync(ProjectBuildArgs projectArgs, string template) + protected virtual async Task ConfigureAngularAfterMicroserviceServiceCreatedAsync(ProjectBuildArgs projectArgs, string template) { if (!MicroserviceServiceTemplateBase.IsMicroserviceServiceTemplate(projectArgs.TemplateName)) { @@ -767,33 +766,39 @@ public abstract class ProjectCreationCommandBase Logger.LogInformation("Setting up the angular library..."); var libraryName = projectArgs.SolutionName.ProjectName.ToKebabCase(); - var angularAppPath = Path.Combine(rootPath, "apps", "angular"); - var angularLibraryPath = Path.Combine(angularAppPath, "projects", libraryName); - await GenerateAngularLibraryForNewMicroserviceAsync(libraryName, angularAppPath); + var result = await CreateAngularLibraryAsync(libraryName, angularAppPath); + + Logger.LogInformation(result); + } - try + protected virtual async Task CreateAngularLibraryAsync( + string libraryName, + string workingDirectory, + bool isSecondaryEndpoint = false, + bool isModuleTemplate = true, + bool isOverride = true) + { + //TODO: Can we improve this validations ? + if (string.IsNullOrWhiteSpace(libraryName)) { - Directory.Delete(angularLibraryPath, true); - await MoveLibraryToHostAppAsync(projectArgs.OutputFolder, libraryName, angularLibraryPath); + throw new CliUsageException("Angular library name can not be empty"); } - catch (Exception e) + + if (string.IsNullOrWhiteSpace(workingDirectory)) { - Logger.LogError(e.Message); + throw new CliUsageException("Angular project path can not be empty"); } - } - protected virtual async Task GenerateAngularLibraryForNewMicroserviceAsync(string libraryName, string workingDirectory) - { - var result = CmdHelper.RunCmdAndGetOutput($"npx ng g library {libraryName}", workingDirectory); - return await Task.FromResult(result); - } + var commandBuilder = new StringBuilder($"npx ng g @abp/ng.schematics:create-lib --package-name {libraryName}"); - protected virtual async Task MoveLibraryToHostAppAsync(string outputFolder, string libraryName, string angularLibraryPath) - { - var currentAngularLibPath = Path.Combine(outputFolder, "angular", libraryName); - Directory.Move(currentAngularLibPath, angularLibraryPath); + commandBuilder.Append($" --is-secondary-entrypoint {(isSecondaryEndpoint ? "true" : "false")} "); + commandBuilder.Append($" --is-module-template {(isModuleTemplate ? "true" : "false")} "); + commandBuilder.Append($" --override {(isOverride ? "true" : "false")} "); + + var result = CmdHelper.RunCmdAndGetOutput(commandBuilder.ToString(), workingDirectory); + return await Task.FromResult(result); } public static class Options From c4692d9afa04dd1cbc97e9b2cc6765c1e14d7fb6 Mon Sep 17 00:00:00 2001 From: masumulu28 Date: Tue, 26 Mar 2024 01:53:27 +0300 Subject: [PATCH 04/10] Refactor commandBuilder to use boolean values instead of string comparison --- .../Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index cd4c80ac23..db3710b257 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -793,9 +793,9 @@ public abstract class ProjectCreationCommandBase var commandBuilder = new StringBuilder($"npx ng g @abp/ng.schematics:create-lib --package-name {libraryName}"); - commandBuilder.Append($" --is-secondary-entrypoint {(isSecondaryEndpoint ? "true" : "false")} "); - commandBuilder.Append($" --is-module-template {(isModuleTemplate ? "true" : "false")} "); - commandBuilder.Append($" --override {(isOverride ? "true" : "false")} "); + commandBuilder.Append($" --is-secondary-entrypoint {isSecondaryEndpoint.ToString().ToLower()}"); + commandBuilder.Append($" --is-module-template {isModuleTemplate.ToString().ToLower()}"); + commandBuilder.Append($" --override {isOverride.ToString().ToLower()}"); var result = CmdHelper.RunCmdAndGetOutput(commandBuilder.ToString(), workingDirectory); return await Task.FromResult(result); From d4d838d253abb2c1c8cd690d453c0efdce3acd3c Mon Sep 17 00:00:00 2001 From: masumulu28 Date: Tue, 26 Mar 2024 18:25:41 +0300 Subject: [PATCH 05/10] update creat-lib command's template --- .../src/lib/__libraryName@kebab__-routing.module.ts.template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/create-lib/files-package/__libraryName@kebab__/src/lib/__libraryName@kebab__-routing.module.ts.template b/npm/ng-packs/packages/schematics/src/commands/create-lib/files-package/__libraryName@kebab__/src/lib/__libraryName@kebab__-routing.module.ts.template index 4b9517b211..8c9afe6aa2 100644 --- a/npm/ng-packs/packages/schematics/src/commands/create-lib/files-package/__libraryName@kebab__/src/lib/__libraryName@kebab__-routing.module.ts.template +++ b/npm/ng-packs/packages/schematics/src/commands/create-lib/files-package/__libraryName@kebab__/src/lib/__libraryName@kebab__-routing.module.ts.template @@ -1,12 +1,12 @@ import { NgModule } from '@angular/core'; -import { DynamicLayoutComponent } from '@abp/ng.core'; +import { RouterOutletComponent } from '@abp/ng.core'; import { Routes, RouterModule } from '@angular/router'; const routes: Routes = [ { path: '', pathMatch: 'full', - component: DynamicLayoutComponent, + component: RouterOutletComponent, children: [], }, ]; From dbf8621a7b06e4d8e4dbbe50cca53cc63bb7c10a Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 27 Mar 2024 14:25:33 +0800 Subject: [PATCH 06/10] Update openiddict to 5.4.0 Close https://github.com/abpframework/abp/issues/19427 --- Directory.Packages.props | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index e2ea3dc099..26dfca3862 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -115,11 +115,11 @@ - - - - - + + + + + From 84cfb045feeea68c7990f9417a015908239aeb6d Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 27 Mar 2024 19:33:46 +0800 Subject: [PATCH 07/10] Make message support multiple lines. --- .../src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor b/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor index 9951e616e2..629317aea6 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor @@ -15,7 +15,7 @@ } - + @Message From 97fa754aa476762e6b2cf06c3b8f9059c74e0582 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 27 Mar 2024 21:39:50 +0800 Subject: [PATCH 08/10] Add Visible parameter to TableColumn --- .../Web/Extensibility/TableColumns/TableColumn.cs | 2 ++ .../Components/AbpExtensibleDataGrid.razor | 12 +++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs index efd1d9320b..89cdb33729 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs @@ -24,6 +24,8 @@ public class TableColumn public Func? ValueConverter { get; set; } public bool Sortable { get; set; } + + public bool Visible { get; set; } = true; public TableColumn() { diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor b/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor index b38f4afaa9..ed9c532e49 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor @@ -74,7 +74,7 @@ { @if (column.ValueConverter == null) { - + @RenderCustomTableColumnComponent(column.Component, context) @@ -82,7 +82,7 @@ } else { - + @RenderCustomTableColumnComponent(column.Component, context) @@ -100,14 +100,16 @@ Caption="@column.Title" Sortable="@column.Sortable" DisplayFormat="@column.DisplayFormat" - DisplayFormatProvider="@column.DisplayFormatProvider"/> + DisplayFormatProvider="@column.DisplayFormatProvider" + Displayable="column.Visible"/> } else { + Sortable="@column.Sortable" + Displayable="column.Visible"> @(GetConvertedFieldValue(context, column)) @@ -116,7 +118,7 @@ } else { - + @{ var entity = context as IHasExtraProperties; From 2362df478fb77eb8f6d5719e2509d5ff0079a451 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 27 Mar 2024 21:41:34 +0800 Subject: [PATCH 09/10] Update Data-Table-Column-Extensions.md --- docs/en/UI/Blazor/Data-Table-Column-Extensions.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/UI/Blazor/Data-Table-Column-Extensions.md b/docs/en/UI/Blazor/Data-Table-Column-Extensions.md index ebb2f27cbf..f61ba49457 100644 --- a/docs/en/UI/Blazor/Data-Table-Column-Extensions.md +++ b/docs/en/UI/Blazor/Data-Table-Column-Extensions.md @@ -73,6 +73,7 @@ This section explains how to customize data table columns using the properties i * `Sortable`: A boolean field indicating whether the column is sortable or not. * `DisplayFormat`: You can specify a custom format for the column. * `DisplayFormatProvider` : You can provide a custom `IFormatProvider` for the column. Default value is `CultureInfo.CurrentCulture`. +* `Visible`: A boolean field indicating whether the column is visible or not. ## Rendering Custom Components In The Data Table Columns From f7e3ecef9a1c3fe81ae819f5ddf9e72648bc118f Mon Sep 17 00:00:00 2001 From: honurbu Date: Wed, 27 Mar 2024 18:34:21 +0300 Subject: [PATCH 10/10] Update en.json --- .../AbpIoLocalization/Admin/Localization/Resources/en.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json index ab5e61a31f..6027658d6d 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json @@ -617,6 +617,9 @@ "Permission:Testimonials": "Testimonials", "SelectCompanySizePlaceholder": "Company Size", "SelectExperienceYearPlaceholder": "Experience year", - "SelectCountryPlaceholder": "Country" + "SelectCountryPlaceholder": "Country", + "DeleteImageConfirmationMessage": "Are you sure you want to delete the image for \"{0}\"?", + "DeleteImageSuccessMessage": "Image successfully deleted", + "DeleteImage": "Delete Image" } } \ No newline at end of file