Skip to content

Releases: laravel-enso/enso

2.15.1

Choose a tag to compare

@aocneanu aocneanu released this 24 Jan 15:49

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
  • 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.json and vendor.js to index.blade.php to 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.js
    • package.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 the enso:upgrade command)

v2.15.0

Choose a tag to compare

@aocneanu aocneanu released this 21 Jan 17:34

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_position from the table / form
  • reorganizes the company form
  • restricts the mandatary to the list of associated people
  • creates the adminstration.companies.people structure
  • limits the company selection when using the CompanySelectController for users that do not belong to AdminGroup
  • reuses the PersonSelectController for company people
  • updates the people() relation in Company.php
  • removes the deprecated contactFormTemplate from companies.php config 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 accessories in the Edit.vue page
  • updates the routes
  • replaces ContactTest with CompanyPeopleTest
Core
  • updates the Upgrade command to take care of 3.3.* => ^3.4 upgrades
  • refactors the role change authorization in UserController
  • adds the AdminGroupId constant to the UserGroup model
  • adds the belongsToAdminGroup() helper to the User model
  • 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 _params on submit
  • fixes modal visibility in an edge case
People
  • adds PersonPolicy
  • adds appellative & position to PersonSelectControllers's query attributes
  • drops the gender column and adds a gender() helper that determines the gender by the title value; Adds a isMandatary() helper
  • adds a company() relation to the Person model
  • makes the form tabbed; adds company_id and position to the table / form
  • updates the PersonFactory
  • updates the implementation of accessories in the Edit.vue page
  • updates the tests
Select
  • fetches the option list when clicking on the No options label
  • adds cursor:pointer to the .select-value class
  • 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 tabs to emit the selected event 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 CompanyFactory and PersonFactory and UserSeeder with 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

Choose a tag to compare

@aocneanu aocneanu released this 19 Jan 06:10

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 compact prop to vue-filter
  • adds translations for the tutorial navigation buttons

Note

The Documentation is up to date now

v2.14.0

Choose a tag to compare

@aocneanu aocneanu released this 15 Jan 09:08

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 auth layout
  • adds a shortNumber filter ( {{ 1000 | shortNumber }} // 1k)
  • globally adds the font-awesome-layers component under the name of fal
  • both the dataimport and companies packages are now required by core and are no longer optional
DataExport
  • adds type, entries, status and created_by columns to the table
  • uses the CreatedBy trait
  • 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 before and after hooks 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-uploader component that can be placed anywhere in the applications for local imports
Helpers
  • enhances the Obj class. 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 return null for 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\SeniorityEnum for an example
FormBuilder
  • adds the tabs property to the form template root. If provided, it will require a tab property 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-from and enso-form that can be accessed via $refs:
    • computed:
      • data - represents the whole object
      • customFields - represents custom fields array
      • errors - represents the errors object
    • methods
      • formData() - returns the params that are sent to the server on POST / PATCH
      • field(field) - returns the field object for a given label
      • param(param) - returns the specified param from the optional params object
      • routeParam(param) - returns the route param from the routeParams object
      • fetch() - form's fetch method for getting the template
VueComponents
  • removes the deprecated MorpableContainer
  • adds a new enso-tabs component. The old tabs component is visually limited to the Bulma available options. enso-tabs has less props and displays the custom tabs used in the Files menu, the accesories component and in vue-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.timeout and for the queues.connections.yourConnection.retry_after
  • improves the builder logic and reusability
  • optimizes the Builder for date / enum / translatable computing
  • renamed the translation template param to translatable
  • the (delete) modal accepts shift-enter as a keyboard shortcut for the commit action
  • changes the way actions are processed. Now, in the CustomAction@process class / method only one $row at 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.php file
    Broadcast::channel('operations.{userId}', function ($user, $operationId) {
        return (int) $user->id === (int) $operationId;
    });
  • in your config/queue.php file make sure that you set retry_after to a higher value for the imports / exports connection (we are using 1800)
  • update the configuration files with the newly introduced options:
    • config/enso/imports.php with vendor/laravel-enso/dataimport/src/config/imports.php
    • config/enso/datatable.php with vendor/laravel-enso/vuedatatable/src/config/datatable.php
  • configure your config/horizon.php to 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 translation to translatable
  • sync phpunit.xml with the one from the main repo