Releases: laravel-enso/enso
Release list
2.15.1
In this version we focused on greatly improving the assets compiling process. With the new configuration build times dropped by ~ 75% for production.
Changes
General
- improves webpack.mix.js
- enables use of multiple cores
- disables processCssUrls
- enables vender extraction
- includes manifest.js and vendor.js in index.blade.php to support vendor extraction
- updates in all the js file (with the new linter / rules)
Core
- moves UserGroup pages to the publishing list
- adds AR and PT languages support in local date-fns i18n
- adds
manifest.jsonandvendor.jstoindex.blade.phpto make use of webpack's vendor extraction
Charts
- renames
get()=>fetch()in<chart-card>
Addresses, Comments, Documents, Discussions, CompanyPeople
- renames
get()=>fetch()in<*-card>wrapper
Bugs
- fixes
<address-card>refresh (get=>fetch)
Upgrade instructions
- update in
composer.json:"laravel-enso/core": "3.6.*" - run composer update
- delete your local
node_modules,yarn.lock,package-lock.json - update the following local files with the ones from the main repo
webpack.mix.js.eslintrc.jspackage.json.babelrc
- run
yarn - compile
- run in tinker the following command:
LaravelEnso\PermissionManager\app\Models\Permission::where('name', 'LIKE', 'administration.companies.contacts.%')->delete();(it was a typo in theenso:upgradecommand)
v2.15.0
Changes
This version aimed to allow direct association of users to companies via persons.
This will provide a good structure for creating users that will belong to different organisations (clients for instance)
and the related restrictions when accessing application's resources.
The old contacts structure is deprecated. The associated people are now called company people.
An upgrade command is provided that takes care of all the database structural updates and transforms the old
contacts / mandataries to company people.
Addresses, Comments, Discussions, Documents
- refactors the count update tracking
Companies
- removes deprecated command
- removes the deprecated contact request validation (including customization)
- removes
mandatary_positionfrom the table / form - reorganizes the company form
- restricts the
mandataryto the list of associated people - creates the
adminstration.companies.peoplestructure - limits the company selection when using the
CompanySelectControllerfor users that do not belong toAdminGroup - reuses the
PersonSelectControllerfor company people - updates the
people()relation inCompany.php - removes the deprecated
contactFormTemplatefromcompanies.phpconfig file - updates the
CompanyFactory - removes the deprecated
ContactFactory - replaces the deprecated
/resources/js/components/enso/contacts/components with/resources/js/components/enso/companies/ - updates the implementation of
accessoriesin theEdit.vuepage - updates the routes
- replaces
ContactTestwithCompanyPeopleTest
Core
- updates the
Upgradecommand to take care of 3.3.* => ^3.4 upgrades - refactors the role change authorization in
UserController - adds the
AdminGroupIdconstant to theUserGroupmodel - adds the
belongsToAdminGroup()helper to theUsermodel - refines the user delete error messages
- updates the
UserSeeder - fixes a bug when having more than 2 level nested menus
Discussions
- fixes discussion delete
DataImport
- fixes cell sanitization
- fixes header normalization
- fixes tests
FormBuilder
- adds selected tab name to
_paramson submit - fixes modal visibility in an edge case
People
- adds
PersonPolicy - adds
appellative&positiontoPersonSelectControllers's query attributes - drops the
gendercolumn and adds agender()helper that determines the gender by thetitlevalue; Adds aisMandatary()helper - adds a
company()relation to thePersonmodel - makes the form tabbed; adds
company_idandpositionto the table / form - updates the
PersonFactory - updates the implementation of
accessoriesin theEdit.vuepage - updates the tests
Select
- fetches the option list when clicking on the
No optionslabel - adds
cursor:pointerto the.select-valueclass - makes the request object (optional) available for the select controllers
StructureManager
- updates the stubs for select controllers and form pages
TrackWho
- adds return type to relations. This will help when requesting the relations in contracts
VueComponents
- refactors
accessories; now it can use any kind of accessory - updates
tabsto emit theselectedevent when mounted
Upgrade instructions - estimated time per project ~ 5min
- update in
composer.json: "laravel-enso/core": "3.5.*" - run
composer update - run
php artisan migrate - run
php artisan enso:upgrade - update
CompanyFactoryandPersonFactoryandUserSeederwith the ones from the packages - remove
ContactFactory - remove
/resources/js/components/enso/contacts/
Note:
If you customized the company / person form / table / pages you will have to manually update them accordingly...
v2.14.1
Bug Fixes
- fixes header normalization in Data Import
- fixes the role configurator
- adds the missing searchOperator from datatable config that was breaking the table search
- fixes tabs position in formbuilder to properly display select's dropdown
- updates structure manager's from create / edit stubs for
enso-form - removes a redundant test in Searchable that was causing problems on certain env's
- prevents form submisison when used in a form for
file.vue
Improvements
- adds an exception on export when another export is running for the same user / table
- adds a
compactprop tovue-filter - adds translations for the tutorial navigation buttons
Note
The Documentation is up to date now
v2.14.0
Changes:
This is one of the biggest releases until now, with changes such as the complete rewrite of the Data Import package, the rewrite and improvement of the DataTable Export functionality, enhancements and new functionality for the VueForm and much more.
The improvements brought to the DataTable Export and the DataImport now allow the export of practically unlimited records from a datatable, as well as the import of xlsx files limited only by your ability to create them and the limitations of the file format.
That's not all though, as the new mechanisms also become much much more efficient due to the parallelization of the operations. This is made possible by leveraging Laravel's queueing facilities and impressive load balancing.
Together with the refreshed web socketed operations' progress reporting we now have hugely powerful, high throughput solutions for I/O operations.
This is yet another step towards our vision for Enso and rest assured, there is more to come.
Core
- adds IO structure for monitoring background export/import operations progress in real-time (needs websockets). It will soon be refactored and extracted to its own separate package
- fixes the global search on medium screen sized devices
- refactors the request management helpers
- adds params support for translations, thanks to @jlsjonas
- fixes translation for the
authlayout - adds a
shortNumberfilter ({{ 1000 | shortNumber }} // 1k) - globally adds the
font-awesome-layerscomponent under the name offal - both the
dataimportandcompaniespackages are now required bycoreand are no longer optional
DataExport
- adds
type,entries,statusandcreated_bycolumns to the table - uses the
CreatedBytrait - integrates with the new background operations management system (IO) for real time progress in the FE
DataImport
- completely redesigned the package and import philosophy. Adds support for a virtually infinite number of rows that can imported in the same import with very low memory consumption, by splitting the import file in chunks and processing them in queued jobs
- adds queue management
- generates a downloadable xlsx rejected rows summary if there are import validation errors. The summary has the same structure as the import file with an extra column (on each sheet) that will describe all the validation errors for each row. This will streamline the import operations when dealing with large files
- improves local (dev's) import and validation classes
- adds
beforeandafterhooks which are available in the importing process - integrates with the new background operations management system (IO) for real time progress in the FE
- comes with a new
import-uploadercomponent that can be placed anywhere in the applications for local imports
Helpers
- enhances the
Objclass. Now it can receive any object or associative array, including Laravel collections, and even Models with loaded relations. - changed the
Obj@get($key)method to returnnullfor an unset$key, instead of throwing an exception - enhances the Enum by reordering the data source priority. Take a look at
LaravelEnso\Examples\app\Enums\SeniorityEnumfor an example
FormBuilder
- adds the
tabsproperty to the form template root. If provided, it will require atabproperty for each section, which will represent the tab's label. The sections will be grouped in tabs using their given labels - the delete modal has the commit button focused by default
- exposes a series of getters/helpers from
vue-fromandenso-formthat can be accessed via$refs:- computed:
data- represents the whole objectcustomFields- represents custom fields arrayerrors- represents the errors object
- methods
formData()- returns the params that are sent to the server on POST / PATCHfield(field)- returns the field object for a given labelparam(param)- returns the specified param from the optionalparamsobjectrouteParam(param)- returns the route param from therouteParamsobjectfetch()- form's fetch method for getting the template
- computed:
VueComponents
- removes the deprecated
MorpableContainer - adds a new
enso-tabscomponent. The oldtabscomponent is visually limited to the Bulma available options.enso-tabshas less props and displays the custom tabs used in the Files menu, theaccesoriescomponent and invue-form(new!) - adds compact mode to
accesories
VueDatatable
- adds practically unlimited excel export functionality by greatly improving the table fetcher. The whole process is done in the background and uses a small amount of memory. You should consider using appropriate values for the configuration options
enso.datatable.exports.timeoutand for thequeues.connections.yourConnection.retry_after - improves the builder logic and reusability
- optimizes the Builder for date / enum / translatable computing
- renamed the
translationtemplate param totranslatable - the (delete) modal accepts
shift-enteras a keyboard shortcut for the commit action - changes the way actions are processed. Now, in the
CustomAction@processclass / method only one$rowat a time will be available - adds options for customizing the export & notification queues
- integrates with the new background operations management system (IO) for real time progress in the FE
Upgrade instructions - estimated time per project ~ 10-15min
- update in
composer.json: "laravel-enso/core": "3.4.*" - from
composer.json, remove the packages:- "laravel-enso/companies"
- "laravel-enso/dataimport"
- run
composer update - run
php artisan migrate - run
yarn upgrade - run
yarn run dev - run
php artisan enso:upgrade - add the new route in your
routes/channels.phpfileBroadcast::channel('operations.{userId}', function ($user, $operationId) { return (int) $user->id === (int) $operationId; });
- in your
config/queue.phpfile make sure that you setretry_afterto a higher value for the imports / exports connection (we are using 1800) - update the configuration files with the newly introduced options:
config/enso/imports.phpwithvendor/laravel-enso/dataimport/src/config/imports.phpconfig/enso/datatable.phpwithvendor/laravel-enso/vuedatatable/src/config/datatable.php
- configure your
config/horizon.phpto make sure that you have the appropriate queues for both local and production envs. You can use the config from this repo as an example. - refactor your import classes and validators to match the new structure
- if necessary, in your table templates, rename the attribute
translationtotranslatable - sync
phpunit.xmlwith the one from the main repo