Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BREAKING CHANGE: use Slickgrid-Universal monorepo next major 3.0 #803

Merged
merged 26 commits into from
Jul 19, 2021

Conversation

ghiscoding
Copy link
Owner

@ghiscoding ghiscoding commented Jun 28, 2021

Next Major Version 3.x (WIP)

This will be, for the most part, deleting a lot of code and instead use it from the Slickgrid-Universal lib to have 1 common/core lib. The advantage of that extra lib is that it's built as a monorepo and with that we'll be able to decouple a few Angular-Slickgrid Services (Export to File/Excel, OData, GraphQL, ...). So you will end up with a much smaller bundle since you will be bundling only what you really install and use (without having for example OData/GraphQL that you might never use).

On the migration side, it should be fairly simple following certain steps, the main changes are in regards to the Services that get decoupled, you can take a sneak peak at the changes in the upcoming Migration Guide

ETA 🤞 - Sometime in July or early August 🌞⛱️

Migration Guide

Minimum Requirement Changes

  • Angular-Slickgrid >= 12.1.0
  • ngx-translate >= 13.0.0
  • TypeScript >= 4.3.5
  • RxJS >=7.2.0 (also a major bump)
  • Bootstrap >= 4.5.0 (or any other UI framework like Bulma)
  • IE11 support will be dropped, min target will be ES2018

List of TODOs

  • 1. replace all Formatters with Slickgrid-Universal
  • 2. replace all Grouping Formatters with Slickgrid-Universal
  • 3. replace all Aggregators with Slickgrid-Universal
  • 4. replace all Editors with Slickgrid-Universal
  • 5. replace all Editor Valitors with Slickgrid-Universal
  • 6. replace all Filters with Slickgrid-Universal
  • 7. replace all Filter Conditions with Slickgrid-Universal
  • 8. replace all Models with Slickgrid-Universal (enums, interfaces)
  • 9. replace all Sort Comparers with Slickgrid-Universal
  • 10. replace all Services with Slickgrid-Universal
  • 11. replace all Extensions with Slickgrid-Universal
    • keep RowDetail Extension since it has specific Angular code
  • 12. replace all SASS Stylings with Slickgrid-Universal
  • 13. replace all Export to File Service with Slickgrid-Universal Export to File monorepo package
  • 14. replace all Export to Excel Service with Slickgrid-Universal Export to Excel monorepo package
  • 15. replace all Export to OData Service with Slickgrid-Universal OData monorepo package
  • 16. replace all Export to GraphQL Service with Slickgrid-Universal GraphQL monorepo package
  • 17. remove sg prefix from all events in the global grid options and make sure all events still work
    • also note that data arguments are now passed as Custom Event Detail and must be pulled via ($event.detail)
  • 18. add a Translate Service wrapper of @ngx-translate for Slickgrid-Universal to work properly
  • 19. add an EventPubSub Service wrapper to work properly
  • 20. upgrade to latest @ngx-translate version
  • 21. add demo to cover Column generics (modified Example 2 to demo it)
  • 22. use Bootstrap 5 as a base instead of BS3
  • 23. drop internal copy of 3rd party lib multiple-select.js and use multiple-select-modified instead
  • 24. add yarn.lock file into Git and also move from CircleCI to GitHub Actions
  • 25. create/update Migration Guide Wiki to next version 3.x
  • 26. update all necessary Wikis
    • Export to Excel from @slickgrid-universal/excel-export
    • Export to Text File from @slickgrid-universal/text-export
    • OData Backend Service from @slickgrid-universal/odata
    • GraphQL Backend Service from @slickgrid-universal/graphql
    • add new Composite Editor Wiki
  • 27. rename/move master branch into version2 branch to keep ref to older version
  • 28. create a Git Tag on Angular-Slickgrid-Demos of 2.x version before rewriting to newer version
  • 29. jQueryUI is imported separately in Slickgrid-Universal (via main.ts), check to see if we need to do that here
  • 30. add the new SlickGrid Composite Editor Example (rename previous Example 30 to 31 to align with Aurelia-Slickgrid)
  • 31. search for any leftover of TODO, @ts-ignore and/or @deprecated code
  • 32. all Cypress E2E tests should work
  • 33. all Jest Unit Tests should work and we should still be at 100% test coverage
  • 34. replace Slick Empty Component with Slickgrid-Universal monorepo component package
  • 35. look at replacing Pagination Component with Slickgrid-Universal monorepo component package
    • won't work unless I drop the component html file and rewrite all DOM elements with pure JS (via createElement) and that would be way too long to do, so I won't proceed with this one
  • 36. look at replacing Custom Footer Component with Slickgrid-Universal monorepo component package
  • 37. rewrite Resizer Service and make it accessible via Slickgrid-Universal common package and use it in Angular-Slickgrid
  • 38. remove dist publish structure and use regular folder structure
    • doesn't seem possible because of the lib output structure produced by ng-packagr and how it then loads in Angular
  • 39. make sure ng-packgr lib build still work
  • 40. make sure that regular Prod build still work
  • 41. update all Angular-Slickgrid demos
  • 42. add list of optional Slickgrid-Universal packages on the Readme
  • 43. investigate why Flatpickr shows a console warning on the Angular-Slickgrid Demo with a single Locale
  • 44. apply fix for new bug found with Tree Data

@codecov
Copy link

codecov bot commented Jul 10, 2021

Codecov Report

Merging #803 (30ffe3f) into master (4a5ae71) will not change coverage.
The diff coverage is 100.00%.

Impacted file tree graph

@@             Coverage Diff              @@
##            master      #803      +/-   ##
============================================
  Coverage   100.00%   100.00%              
============================================
  Files          162        13     -149     
  Lines        11348      1075   -10273     
  Branches      4055       340    -3715     
============================================
- Hits         11348      1075   -10273     
Impacted Files Coverage Δ
src/app/modules/angular-slickgrid/constants.ts 100.00% <ø> (ø)
.../app/modules/angular-slickgrid/extensions/index.ts 100.00% <ø> (ø)
...lar-slickgrid/extensions/rowDetailViewExtension.ts 100.00% <ø> (ø)
...lickgrid/components/angular-slickgrid.component.ts 100.00% <100.00%> (ø)
...slickgrid/components/slick-pagination.component.ts 100.00% <100.00%> (ø)
src/app/modules/angular-slickgrid/index.ts 100.00% <0.00%> (ø)
...rc/app/modules/angular-slickgrid/services/index.ts 100.00% <0.00%> (ø)
...pp/modules/angular-slickgrid/services/utilities.ts 100.00% <0.00%> (ø)
...ular-slickgrid/modules/angular-slickgrid.module.ts 100.00% <0.00%> (ø)
... and 63 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 4a5ae71...30ffe3f. Read the comment docs.

@ghiscoding ghiscoding changed the title WIP - BREAKING CHANGE: use Slickgrid-Universal monorepo WIP - BREAKING CHANGE: use Slickgrid-Universal monorepo next major 3.x Jul 12, 2021
@ghiscoding ghiscoding changed the title WIP - BREAKING CHANGE: use Slickgrid-Universal monorepo next major 3.x WIP - BREAKING CHANGE: use Slickgrid-Universal monorepo next major 3.0 Jul 12, 2021
@ghiscoding ghiscoding changed the title WIP - BREAKING CHANGE: use Slickgrid-Universal monorepo next major 3.0 BREAKING CHANGE: use Slickgrid-Universal monorepo next major 3.0 Jul 17, 2021
@ghiscoding ghiscoding merged commit dae384c into master Jul 19, 2021
@ghiscoding ghiscoding deleted the feat/version-next-universal branch July 19, 2021 20:24
@ghiscoding ghiscoding removed the wip label Jul 20, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant