Activities of "Sturla"

Create a template that can be used for super cheep hosting on Azure Static Web were it can use Azure Functions to authenticate and get static data from Sqlite (or in memory read from file?).

I for example want to switch from my Ghost.org blog to that and just for my personal blog and want to use abp.io CMS Blogging capabilities.

For this I only need to log in (password can be static in the Azure Functions and the blog could come from Sqlite

Please add Guid into the dropdown for creating a property

If I remember correctly it wasn´t there because there was some issue with Blazor but now it works fine.

Now I just update the .json file with a Guid

but it has the consequences that the value isn´t shown in edit mode..

Let Suite respect the partial keyword so we can at least create our own partial classes where our code is safe from being overridden by the tool.

Now it just deletes everything and overrides the whole class so the Suite generation fails because the partial keyword is removed.

If Suite can´t be less intrusive (pasting new code over everything) and just update the code I would personally I would like for you to implement partial design for the AppService, Managers and repository classes where people are mostly changing and updating code.

Suite is just a one-time-creation tool and that is hindering its full potentials and usefulness!

Add One-to-Many functionality to Suite (its not there today) and add something about it in the documentation please!

I even created a question on the topic to get an answer, Please make creating One-to-many relationship in Suite work!

I tried to replicate the issue from a new 7.3.2 project but that didn´t work (there is no error) so it must be related to something being missed from the migration (I only used the update button)

Steps:

  1. Create a 7.2.2 project
    1. Application template
    2. Blazor Server
    3. Lepton-X
    4. Maui
    5. PostgreSQL
    6. Separate tenant schema
    7. Add entities (see below)
    8. Run update with update button in Suite

ScrapingContent.json

{
  "Id": "4ad61650-48d0-4212-80e1-a18b8762397a",
  "Name": "ScrapingContent",
  "OriginalName": "ScrapingContent",
  "NamePlural": "ScrapingContents",
  "DatabaseTableName": "ScrapingContents",
  "Namespace": "ScrapingContents",
  "BaseClass": "AuditedEntity",
  "MenuIcon": "file-alt",
  "PrimaryKeyType": "Guid",
  "IsMultiTenant": false,
  "CheckConcurrency": true,
  "ShouldCreateUserInterface": true,
  "ShouldCreateBackend": true,
  "ShouldExportExcel": true,
  "ShouldAddMigration": true,
  "ShouldUpdateDatabase": false,
  "CreateTests": true,
  "Properties": [
    {
      "Id": "d8fdc266-5d2f-4a81-8da5-e361cf427a8f",
      "Name": "Html",
      "Type": "string",
      "EnumType": "",
      "EnumNamespace": "",
      "EnumAngularImport": "shared/enums",
      "EnumFilePath": null,
      "DefaultValue": null,
      "IsNullable": false,
      "IsRequired": false,
      "IsTextArea": false,
      "MinLength": null,
      "MaxLength": null,
      "SortOrder": 0,
      "SortType": 0,
      "Regex": "",
      "EmailValidation": false,
      "ShowOnList": true,
      "ShowOnCreateModal": true,
      "ShowOnEditModal": true,
      "ReadonlyOnEditModal": false,
      "EnumValues": null,
      "IsSelected": true,
      "OrdinalIndex": 0
    },
    {
      "Id": "ffda4627-bf56-4e0d-8bb4-37ece256656d",
      "Name": "DateScraped",
      "Type": "DateTime",
      "EnumType": "",
      "EnumNamespace": "",
      "EnumAngularImport": "shared/enums",
      "EnumFilePath": null,
      "DefaultValue": null,
      "IsNullable": false,
      "IsRequired": false,
      "IsTextArea": false,
      "MinLength": null,
      "MaxLength": null,
      "SortOrder": 0,
      "SortType": 0,
      "Regex": "",
      "EmailValidation": false,
      "ShowOnList": true,
      "ShowOnCreateModal": true,
      "ShowOnEditModal": true,
      "ReadonlyOnEditModal": true,
      "EnumValues": null,
      "IsSelected": true,
      "OrdinalIndex": 0
    }
  ],
  "NavigationProperties": [
    {
      "EntityNameWithDuplicationNumber": "ScrapingUrl",
      "EntitySetNameWithDuplicationNumber": "ScrapingUrls",
      "ReferencePropertyName": "ScrapingUrl",
      "UiPickType": "Dropdown",
      "IsRequired": true,
      "Name": "ScrapingUrlId",
      "DisplayProperty": "Name",
      "Namespace": "TestNotWorking.ScrapingUrls",
      "EntityName": "ScrapingUrl",
      "EntitySetName": "ScrapingUrls",
      "DtoNamespace": "TestNotWorking.ScrapingUrls",
      "DtoEntityName": "ScrapingUrlDto",
      "Type": "Guid"
    }
  ],
  "NavigationConnections": [],
  "PhysicalFileName": "ScrapingContent.json"
}

ScrapingUrl.json

{
  "Id": "7b77295e-508a-4b0e-9d7e-e7caf2088cce",
  "Name": "ScrapingUrl",
  "OriginalName": "ScrapingUrl",
  "NamePlural": "ScrapingUrls",
  "DatabaseTableName": "ScrapingUrls",
  "Namespace": "ScrapingUrls",
  "BaseClass": "AuditedEntity",
  "MenuIcon": "file-alt",
  "PrimaryKeyType": "Guid",
  "IsMultiTenant": false,
  "CheckConcurrency": true,
  "ShouldCreateUserInterface": true,
  "ShouldCreateBackend": true,
  "ShouldExportExcel": false,
  "ShouldAddMigration": true,
  "ShouldUpdateDatabase": false,
  "CreateTests": true,
  "Properties": [
    {
      "Id": "b459187f-9946-4c43-b804-21f6637b16b4",
      "Name": "Name",
      "Type": "string",
      "EnumType": "",
      "EnumNamespace": "",
      "EnumAngularImport": "shared/enums",
      "EnumFilePath": null,
      "DefaultValue": null,
      "IsNullable": false,
      "IsRequired": false,
      "IsTextArea": false,
      "MinLength": null,
      "MaxLength": 52,
      "SortOrder": 0,
      "SortType": 0,
      "Regex": "",
      "EmailValidation": false,
      "ShowOnList": true,
      "ShowOnCreateModal": true,
      "ShowOnEditModal": true,
      "ReadonlyOnEditModal": false,
      "EnumValues": null,
      "IsSelected": true,
      "OrdinalIndex": 0
    },
    {
      "Id": "0f10d82b-e7b3-4b64-aba6-af46b2df5f03",
      "Name": "Url",
      "Type": "string",
      "EnumType": "",
      "EnumNamespace": "",
      "EnumAngularImport": "shared/enums",
      "EnumFilePath": null,
      "DefaultValue": null,
      "IsNullable": false,
      "IsRequired": false,
      "IsTextArea": false,
      "MinLength": null,
      "MaxLength": 1024,
      "SortOrder": 0,
      "SortType": 0,
      "Regex": "",
      "EmailValidation": false,
      "ShowOnList": true,
      "ShowOnCreateModal": true,
      "ShowOnEditModal": true,
      "ReadonlyOnEditModal": false,
      "EnumValues": null,
      "IsSelected": true,
      "OrdinalIndex": 0
    },
    {
      "Id": "d1752e3a-2d18-45a2-91ac-5b1d0f5505f5",
      "Name": "IsActive",
      "Type": "bool",
      "EnumType": "",
      "EnumNamespace": "",
      "EnumAngularImport": "shared/enums",
      "EnumFilePath": null,
      "DefaultValue": "true",
      "IsNullable": false,
      "IsRequired": false,
      "IsTextArea": false,
      "MinLength": null,
      "MaxLength": null,
      "SortOrder": 0,
      "SortType": 0,
      "Regex": "",
      "EmailValidation": false,
      "ShowOnList": true,
      "ShowOnCreateModal": true,
      "ShowOnEditModal": true,
      "ReadonlyOnEditModal": false,
      "EnumValues": null,
      "IsSelected": true,
      "OrdinalIndex": 0
    },
    {
      "Id": "38718158-9a68-4251-acda-898e4e4eb3ca",
      "Name": "LastError",
      "Type": "string",
      "EnumType": "",
      "EnumNamespace": "",
      "EnumAngularImport": "shared/enums",
      "EnumFilePath": null,
      "DefaultValue": null,
      "IsNullable": false,
      "IsRequired": false,
      "IsTextArea": true,
      "MinLength": null,
      "MaxLength": 1024,
      "SortOrder": 0,
      "SortType": 0,
      "Regex": "",
      "EmailValidation": false,
      "ShowOnList": true,
      "ShowOnCreateModal": true,
      "ShowOnEditModal": true,
      "ReadonlyOnEditModal": false,
      "EnumValues": null,
      "IsSelected": true,
      "OrdinalIndex": 0
    }
  ],
  "NavigationProperties": [],
  "NavigationConnections": [],
  "PhysicalFileName": "ScrapingUrl.json"
}

There is btw another error in regarding "required" and that is that if you mark a property as required the tests will also fail!

I did this with suite and Blazor Server and it updates the package references in my Blazor project to a strange preview version of these two packages below. Try updating these to this

  <ItemGroup>
    <PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX" Version="2.3.*-*" />
    <PackageReference Include="Volo.Abp.AspNetCore.Components.Server.LeptonXTheme" Version="2.3.*-*" />
  </ItemGroup>

Please add to Suite creation information about each project in the UI. Is the project "tired, Blazor Server, PostgreSQL etc. This will make it easier to create a the same type of project to compare and update the code. And its just smart to have this information in the Suite to begin with for many other reasons.

And add a button in the dropdown, "create new version" that creates the same type of project using the same entities but with the newest version, this makes it easier to get a new version of the code to compare when updating between versions.

Add .editorconfig to all project/solution templates and update the code accordingly to have more consistency of code.

Like if I add this .editorconfig file, from David McCarter, to a brand new project I get over 70 errors, 400 warnings and 2200 suggestions...

There are probably lot in there that could be suppressed and not be used in this codebase but wouldn´t it be great to have some standard and help users from the start?

Update It's even much worse than that... because try to create a new vanilla solution and add some domain item and let it create code and there are default warnings in every single project.

So if I wanted to add <TreatWarningsAsErrors>true</TreatWarningsAsErrors> to the projects I would have to do lots of extra work cleaning up these warnings (that are now error) every time I add something with Suite.

Don´t you agree that for a framework this should not be like that?

Yes that´s correct. I chose probably the only symbol that didn´t work.

But it would be great to know how to enable the env´s and I would even go so far to say that they should be enabled by default...

Showing 41 to 50 of 174 entries
Made with ❤️ on ABP v9.0.0-preview Updated on September 20, 2024, 08:30