Skip to content

v4.0.0

Compare
Choose a tag to compare
@gumbarros gumbarros released this 09 Jan 14:02
· 804 commits to main since this release
4223c38

version

Release Notes ☀️

Relationships

  • The largest feature from this version
  • Now working with 1xn and 1x1 relationships
  • Added FormElementRelationship class
  • You can now define the layout of your relationships
  • You can use any FormElementPanel for your dictionaries

Form Toolbar Actions

  • Added a new category of actions, rendered at the form.
  • If in a relationship, you can use the FormToolbarActionLocation enum to define the location of your action

Removed Metadata class

  • Removed Metadata and related classes
  • The data dictionary is stored at a single JSON using FormElement

Browser tab names

  • You can now tell the difference between your tabs at your browser

Asynchronous programming

  • Added support to async methods at IEntityRepository and IDataDictionaryRepository
  • Added AsyncEventHandler and async overloads to all events

Events

  • Added IGridEventHandler, works like IFormEventHandler but for JJGridView events

Dependency Injection

  • Is now fully used in the entire project
  • Removed the static service locator, you no longer need app.UseJJMasterData at your Program.cs
  • If you want to use a service from JJMasterData, you can inject this following classes:
    UrlRedirectService
    UploadAreaService
    LookupService
    FormValuesService
    FormService
    FieldValuesService
    FieldValidationService
    FieldsService
    FieldFormattingService
    ExpressionsService
    DataItemService
    AuditLogService

DataItemService for example, can be used to retrieve Combobox or Searchbox values without the component.

Expressions

  • Added IAsyncExpressionProvider and IBooleanExpressionProvider, implement your own class to parse expressions

Generated Scripts

  • You can now generate Alter Table scripts for non-existing Data Dictionary fields

Logging

  • File: Added Default, Compact and JSON formatting
  • File & Db: Now run as a HostedService without locking the application

Factories

  • Added IFormElementComponentFactory<T>,IControlFactory<T> and IComponentFactory<T>

Data Dictionaries list

  • New UI at the home
  • Now have a filter for everything filter
  • Info column is now a tooltip when the element info is not null

Expressions

  • Now have a editor
  • You can now implement IAsyncExpressionProvider and IBooleanExpressionProvider

FormElement

  • Added BIT DataType support (true or false )
  • Added Time DataType support
  • Stored Procedures are now optional

Components

  • Added Color Picker component
  • Added switch option to Checkbox

Custom Bootstrap support

  • You can now use the default JJMasterData layout with custom Bootstrap using the JJMasterData:CustomBootstrapPath configuration key

Breaking Changes 💣

Infrastructure

  • Removed Metadata class
  • The DataDictionary table now only contains the F type by now
  • All older FormElement JSON objects from older versions need to be updated by our CLI tool
  • .NET 6/7 projects no longer support SystemWebAdapters and Response.End calls to improve performance

FormElementDataItem

  • Removed ReplaceTextOnGrid please use GridBehavior enum

Log

  • Removed static Log please use ILogger

Cryptography

  • Removed static Cript please use IEncryptionService or JJMasterDataEncryptionService
  • Beware Cript.64 uses DES instead of AES and is unsafe.

DataAccess

  • .NET 6/7: DataAccess without dependency injection no longer supported
  • DataAccess SQLServer provider now uses Microsoft.Data.SqlClient instead of System.Data.SqlClient

Components

  • Renamed JJBaseView and JJBaseControl to ComponentBase and ControlBase respectically
  • Removed components constructors, for example, instead of new JJFormView("MyElement") use await IFormElementComponentFactory<JJFormView>.CreateAsync("MyElement")
  • JJFormView no longer inherits from JJGridView, compatibility methods and properties added, but they are obsolete.
  • JJFormLog renamed to JJAuditLogView
  • JJFormUpload renamed to JJUploadView
  • Many database and IO operations are now async and return a Task instead of void

Events

  • Removed Action from ActionEventArgs please use ActionName
  • Renamed IFormEvent to IFormEventHandler
  • Removed IFormEventAttribute please use IFormEventHandler.ElementName to allow dynamic event handlin

Component Rendering

  • Removed GetHtml please use GetResultAsync and SendResult

IDataDictionaryRepository

  • GetMetadata to GetFormElementAsync

Namespaces

  • JJMasterData.ReceitaFederal* to JJMasterData.Brasil*
  • JJMasterData.Commons.Criptography.* to JJMasterData.Commons.Security.*
  • JJMasterData.Core.Web.Components.* to JJMasterData.Core.UI.Components.*
  • JJMasterData.Core.FormEvents.* to JJMasterData.Core.Events*
  • JJMasterData.Core.DataDictionary.* to JJMasterData.Core.DataDictionary.Models and JJMasterData.Core.DataDictionary.Repository