n8n/packages/editor-ui/src/views
Milorad FIlipović a8049a0def
perf(editor): Improve node rendering performance when opening large workflows (#7904)
## Summary
In an effort to do as little processing as possible in each `Node`
component, this PR passes current workflow object to it as a property
instead of calling the slow `getCurrentWorkflow` store getter a few
times in each node. This should substantially improve loading times for
large workflows.

As a benchmark, I was using a workflow from [this Linear
ticket](https://linear.app/n8n/issue/ADO-1501/deliveryhero-enterprise-instance-very-slow-loading-workflows)
and this fix brought down opening time by **20 seconds**. Together with
fixes from #7901, this workflow was opening in less than **10 seconds**
on my laptop.

[Latest e2e run](https://github.com/n8n-io/n8n/actions/runs/7062162739)
#### How to test the change:
1. Open a large workflow
2. Observe loading time

## Issues fixed
ADO-1523
https://community.n8n.io/t/ui-very-slow-with-more-than-100-nodes/8236/14

## Review / Merge checklist
- [x] PR title and summary are descriptive. **Remember, the title
automatically goes into the changelog. Use `(no-changelog)` otherwise.**
([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md))
- [ ] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up
ticket created.
- [ ] Tests included.
> A bug is not considered fixed, unless a test is added to prevent it
from happening again. A feature is not complete without tests.
  >
> *(internal)* You can use Slack commands to trigger [e2e
tests](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#a39f9e5ba64a48b58a71d81c837e8227)
or [deploy test
instance](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#f6a177d32bde4b57ae2da0b8e454bfce)
or [deploy early access version on
Cloud](https://www.notion.so/n8n/Cloudbot-3dbe779836004972b7057bc989526998?pvs=4#fef2d36ab02247e1a0f65a74f6fb534e).
2023-12-01 17:50:11 +01:00
..
__tests__ fix(editor): Add telemetry to workflow history (#7811) 2023-11-29 09:09:21 +01:00
SetupWorkflowFromTemplateView fix(editor): Tune styles of template credential setup (no-changelog) (#7898) 2023-12-01 16:00:48 +02:00
AuthView.vue feat(editor): Migrate Design System and Editor UI to Vue 3 (#6476) 2023-07-28 09:51:07 +02:00
CanvasAddButton.vue fix(editor): Fix post-migration CSS inconsistencies (no-changelog) (#6902) 2023-08-10 11:09:55 +03:00
ChangePasswordView.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
CredentialsView.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
ErrorView.vue refactor(editor): Stricter linting for promises and async functions (no-changelog) (#4642) 2023-05-10 18:10:03 +03:00
ExecutionsView.vue feat: Replace Vue.extend with defineComponent in editor-ui (no-changelog) (#6033) 2023-04-21 18:51:08 +03:00
ForgotMyPasswordView.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
LoadingView.vue refactor(editor): Apply Prettier (no-changelog) (#4920) 2022-12-14 10:04:10 +01:00
MfaView.vue fix(editor): More dark-mode fixes (no-changelog) (#7624) 2023-11-06 14:32:38 +01:00
NodeView.vue perf(editor): Improve node rendering performance when opening large workflows (#7904) 2023-12-01 17:50:11 +01:00
SamlOnboarding.vue feat(editor): Migrate Design System and Editor UI to Vue 3 (#6476) 2023-07-28 09:51:07 +02:00
SettingsApiView.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
SettingsAuditLogs.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
SettingsCommunityNodesView.vue fix(editor): Fix push connection on WorkerList and CommunityNodes pages (no-changelog) (#7851) 2023-11-28 16:45:50 +01:00
SettingsExternalSecrets.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
SettingsFakeDoorView.vue refactor(editor): Add infix to Pinia stores (no-changelog) (#6149) 2023-05-05 10:41:54 +02:00
SettingsLdapView.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
SettingsLogStreamingView.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
SettingsPersonalView.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
SettingsSourceControl.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
SettingsSso.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
SettingsUsageAndPlan.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
SettingsUsersView.vue feat(editor): Replace middleware for Role checks with Scope checks (#7847) 2023-11-29 10:35:40 +02:00
SettingsView.vue refactor(editor): Stricter linting for promises and async functions (no-changelog) (#4642) 2023-05-10 18:10:03 +03:00
SetupView.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
SigninView.vue fix(editor): Fix cloud plan data loading on instance (#7841) 2023-11-29 10:51:15 +01:00
SignoutView.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
SignupView.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
TemplatesCollectionView.vue feat(editor): Open template credential setup from collection (#7882) 2023-11-30 14:09:12 +02:00
TemplatesSearchView.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
TemplatesView.vue feat: Replace Vue.extend with defineComponent in editor-ui (no-changelog) (#6033) 2023-04-21 18:51:08 +03:00
TemplatesWorkflowView.vue feat(editor): Open template credential setup from collection (#7882) 2023-11-30 14:09:12 +02:00
VariablesView.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
WorkerView.vue fix(editor): Move workerview entry into settings menu (#7761) 2023-11-21 11:29:24 +01:00
WorkflowHistory.vue fix(editor): Add telemetry to workflow history (#7811) 2023-11-29 09:09:21 +01:00
WorkflowOnboardingView.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00
WorkflowsView.vue refactor(editor): Delete some barrel files and reduce circular dependencies (no-changelog) (#7838) 2023-11-28 12:15:08 +01:00