Refactor the application following Sonarqube recommendations, a Many-to-Many editor, Master Grid enhancements, GenDoc functionality, a new Import type, fixes, and features all over ... incredible.

Many-to-many Editor

Many-to-Many Editor

Master Grid

Gets some fixes and enhancements as we use and test it in the Many-to-Many editor

  • call querySelector only once
  • get entity name using a specific function instead of retrieving the whole object
  • process business action parameters in conditions
  • support for empty master record
  • support special INDIRECTRELATION field for many to many relations that are indirect (two or more levels)
  • better first load detection

GenDoc

This functionality keeps growing!! I'm amazed

  • GDDocTitle context variable for name expression generation
  • GenDoc_AddTemplateName global variable to add template name to the generated file name or not
  • support for soft-page-break inside table cells
  • inject document folder IDs to relate with newly generated GenDoc templates
  • delete unused variables and reduce duplications
  • OnlyOffice
    • send and relate OOSave document with all folders in the workflow task
    • encode OnlyOffice window title as HTML instead of JS
    • respect the user when editing from OnlyOffice

Import

We can now import JSON files!

Features and Implementor/Developer enhancements

  • Pills enhancements: close on select option, filter input for large lists
  • export query and parameter values as class properties in condition query in case they are needed
  • permit array index based on field in run_query_list
  • Database Utils: appendMissingFromClausesToQuery and truncateJoinClause
  • PDF Utils: getNumberPages
  • scroll to picklist on detail view click in GlobalVariable module
  • sort Report charts if we can: there is only one sort column
  • option to hide Alphabetical Search (NOALPHABETICALSEARCH) in the code
  • filter assigned user list based on a condition query business map and the global variable Application_User_FilterCondition
  • Workflow exists function now permits searching for records with an existing value in a field in any module using extended syntax Module.field e.g. exists('Contacts.email', 'some@email.tld', 0)
  • LDS NoAccess illustration component

LDS No Access

EvolutivoFW Standard Code Formatting, Security, Optimizations, and Tests

  • EvolutivoFW Standard Formatting (a lot)
  • Documentation: code and wiki.
  • Refactor and Optimize code
    • SonarQube recommendations. This month we made a BIG effort. Read why in the insights section.
    • php:S6600 Remove the parentheses from return call
    • php:S125 Remove this commented out code
    • php:S1117 Local variables should not have the same name as class fields
    • reduce duplicate code
    • substitute variables for their value, reduce SQL columns, reduce query_result, simplify debug message, direct returns
    • eliminate open cubed from the license
    • delete obsolete unused directories: Clock and test
    • avoid one check which is usually false in the Popup
    • eliminate the usage of deprecated vtyiicpng_getWSEntityId
  • PHP 8.4 testing and fixes
  • CI: exclude tablesort and some settings files
  • add libraries: Slickgrid and halaxa/json-machine
  • set Portal URL to httpS
  • Unit Tests: keeps getting more and more assertions. We increment the code coverage measure in one point!

Global Variables

  • GenDoc_AddTemplateName add template name to the generated file name or not
  • Application_User_FilterCondition Condition Query map that defines a where condition and parameters to filter the available users in the assigned user picklist. Use fully qualified field names.

Others

  • show LDS Desert and NoAccess when no data is found in the List View
  • style the Workflow expression editor to keep the same proportion of header and footer
  • set default values when converting Business Action array to link object
  • Master Detail business map now returns fieldid for corebos.related fields
  • Inventory Master Detail now uses columnname instead of fieldname and supports all InventoryDetails related modules
  • fix Colorizer remove label settings
  • fix View Permission Configuration Editor path
  • render correctly columns and entity name of records in DMS
  • show the navigation widget in the Documents module
  • merge FAQ record when sending email
  • correctly set Global Variable record owner to an active user when ROLE is selected
  • some fixes in vertical menu mode
  • use Number.isNaN instead of deprecated comparison in Mobile javascript
  • Path Widget enhancements:
    • refactor the logic and protection against fatal errors
    • show path full width
  • Popup:
    • advanced search button missing
    • better condition for raw SQL in popup
  • UIType101 same popup and behavior as uitype10
  • set Users home page values when duplicating
  • Workflow
    • correct way to load workflow task class to get help
    • Push Notification inbucket log message
    • set all properties for duplicating workflow task
    • set the user of generated document if coming from OO integration
    • avoid repeating text in document generation name
    • increment workflow template field specification length
  • Translations
    • Contact/Calendar: cleanup unused translation strings
    • Workflow: do not translate log messages
    • hardcoded strings in Home

Insights

We updated Sonarqube this month and that changed our performance indicators. Besides Sonarqube changing some calculations, we reviewed the rules we were applying. We deactivated some deprecated rules and added some new ones. This made me fall into the gamification trap and spend a lot of time this month looking at those indicators to put them back in line. With the new rules, our indicators are similar to before and we can start working and comparing again.

October Insights

October November
Sonarqube October Sonarqube November

Thanks for reading.

Previous Post Next Post