v4.0.0
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 atIEntityRepository
andIDataDictionaryRepository
- Added
AsyncEventHandler
andasync
overloads to all events
Events
- Added
IGridEventHandler
, works likeIFormEventHandler
but forJJGridView
events
Dependency Injection
- Is now fully used in the entire project
- Removed the static service locator, you no longer need
app.UseJJMasterData
at yourProgram.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
andIBooleanExpressionProvider
, 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>
andIComponentFactory<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
andIBooleanExpressionProvider
FormElement
- Added
BIT
DataType support (true
orfalse
) - 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
andResponse.End
calls to improve performance
FormElementDataItem
- Removed
ReplaceTextOnGrid
please useGridBehavior
enum
Log
- Removed static
Log
please useILogger
Cryptography
- Removed static
Cript
please useIEncryptionService
orJJMasterDataEncryptionService
- 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 usesMicrosoft.Data.SqlClient
instead ofSystem.Data.SqlClient
Components
- Renamed
JJBaseView
andJJBaseControl
toComponentBase
andControlBase
respectically - Removed components constructors, for example, instead of
new JJFormView("MyElement")
useawait IFormElementComponentFactory<JJFormView>.CreateAsync("MyElement")
JJFormView
no longer inherits fromJJGridView
, compatibility methods and properties added, but they are obsolete.JJFormLog
renamed toJJAuditLogView
JJFormUpload
renamed toJJUploadView
- Many database and IO operations are now
async
and return aTask
instead ofvoid
Events
- Removed
Action
fromActionEventArgs
please useActionName
- Renamed
IFormEvent
toIFormEventHandler
- Removed
IFormEventAttribute
please useIFormEventHandler.ElementName
to allow dynamic event handlin
Component Rendering
- Removed
GetHtml
please useGetResultAsync
andSendResult
IDataDictionaryRepository
GetMetadata
toGetFormElementAsync
Namespaces
JJMasterData.ReceitaFederal*
toJJMasterData.Brasil*
JJMasterData.Commons.Criptography.*
toJJMasterData.Commons.Security.*
JJMasterData.Core.Web.Components.*
toJJMasterData.Core.UI.Components.*
JJMasterData.Core.FormEvents.*
toJJMasterData.Core.Events*
JJMasterData.Core.DataDictionary.*
toJJMasterData.Core.DataDictionary.Models
andJJMasterData.Core.DataDictionary.Repository