argoproj / argoproj/argo-workflows

UI: Refactor to use functional components

Open
#9,810 21 comments 3 reactions 1 assignee Assigned to @agilgur5 View on GitHub
area/ui solution/suggested type/tech-debt
Dominant language
Go
Stars
17k
Forks
3.7k
Avg merge
1d 20h
Merged PRs (30d)
138

Description

# Summary

Say for UI features, new feature added in workflow page would likely be useful in archived workflow as well,
but right now we have both class and functional components at various parts of the UI, porting features from one part to another can be a pain.

class component file list:

_--- below heavily modified by agilgur5 ---_

- [x] 1. ui/src/app/app.tsx: #10867
- [x] 2. ~ui/src/app/archived-workflows/components/archived-workflow-details/archived-workflow-details.tsx~: no longer exists as of #11121
- [x] 3. ~ui/src/app/archived-workflows/components/archived-workflow-filters/archived-workflow-filters.tsx~: no longer exists as of #11121
- [x] 4. ~ui/src/app/archived-workflows/components/archived-workflow-list/archived-workflow-list.tsx~: no longer exists as of #11121
- [x] 5. ui/src/app/cluster-workflow-templates/components/cluster-workflow-template-list/cluster-workflow-template-list.tsx: #9809
- [x] 6. ui/src/app/reports/components/reports.tsx: #11794
- [x] 7. ui/src/app/shared/components/base-page.tsx: #11891
- [x] 8. ui/src/app/shared/components/checkbox-filter/checkbox-filter.tsx: #11739
- [x] 9. ui/src/app/shared/components/dropdown/dropdown.tsx: #11901
- [x] 10. ui/src/app/shared/components/error-panel.tsx: #11791
- [x] 11. ~ui/src/app/shared/components/graph/coffman-graham-sorter.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 12. ~ui/src/app/shared/components/graph/dfs-sorter.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 13. ~ui/src/app/shared/components/graph/types.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 14. ui/src/app/shared/components/inline-table/inline-table.tsx: #11791
- [x] 15. ui/src/app/shared/components/input-filter.tsx: #11899
- [x] 16. ui/src/app/shared/components/nudge.tsx: #11791
- [x] 17. ui/src/app/shared/components/pagination-panel.tsx: #11791
- [x] 18. ui/src/app/shared/components/resource-editor/resource-editor.tsx: #11800
- [x] 19. ui/src/app/shared/components/tags-input/tags-input.tsx: #11800
- [x] 20. ui/src/app/shared/conditions-panel.tsx: #11791
- [x] 21. ~ui/src/app/shared/list-watch.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 22. ui/src/app/shared/resources-duration.tsx: #11791
- [x] 23. ~ui/src/app/shared/retry-observable.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 24. ~ui/src/app/shared/retry-watch.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 25. ~ui/src/app/shared/scoped-local-storage.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 26. ~ui/src/app/shared/services/archived-workflows-service.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 27. ~ui/src/app/shared/services/cluster-workflow-template-service.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 28. ~ui/src/app/shared/services/cron-workflow-service.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 29. ~ui/src/app/shared/services/event-service.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 30. ~ui/src/app/shared/services/event-source-service.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 31. ~ui/src/app/shared/services/info-service.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 32. ~ui/src/app/shared/services/sensor-service.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 33. ~ui/src/app/shared/services/workflow-template-service.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 34. ~ui/src/app/shared/services/workflows-service.ts:~ [Not a React component](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712651952)
- [x] 35. ui/src/app/userinfo/components/user-info.tsx: #11793
- [x] 36. ui/src/app/workflows/components/submit-workflow-panel.tsx: #11803
- [x] 37. ui/src/app/workflows/components/workflow-creator-info/workflow-creator-info.tsx: #11791
- [x] 38. ui/src/app/workflows/components/workflow-dag/workflow-dag-render-options-panel.tsx: #11791
- [ ] 39. ui/src/app/workflows/components/workflow-dag/workflow-dag.tsx: #11920
- [x] 40. ui/src/app/workflows/components/workflow-drawer/workflow-drawer.tsx: #11800
- [x] 41. ui/src/app/workflows/components/workflow-filters/workflow-filters.tsx: #11891
- [x] 42. ui/src/app/workflows/components/workflow-labels/workflow-labels.tsx: #11791
- [x] 43. ui/src/app/workflows/components/workflow-panel/workflow-panel.tsx: #11791
- [x] 44. ui/src/app/workflows/components/workflow-timeline/workflow-timeline.tsx: #11899
- [x] 45. ui/src/app/workflows/components/workflow-yaml-viewer/workflow-yaml-viewer.tsx: #11791
- [x] 46. ui/src/app/workflows/components/workflows-list/workflows-list.tsx: #11891
- [x] 47. ui/src/app/workflows/components/workflows-row/workflows-row.tsx: #11791
- [x] 48. ui/src/app/workflows/components/workflows-toolbar/workflows-toolbar.tsx: #12046
- [x] 49. ui/src/app/workflows/components/workflow-node-info/workflow-node-info.tsx: #11791
- [x] 50. ui/src/app/workflows/components/resubmit-workflow-panel.tsx: #11803
- [x] 51. ui/src/app/workflows/components/retry-workflow-panel.tsx: #11803
- [x] 52. ~ui/src/app/shared/components/error-boundary.tsx~: [_Cannot_ be converted](https://github.com/argoproj/argo-workflows/issues/9810#issuecomment-1712939379)
- [x] 53. ui/src/app/shared/components/parameters-input/parameters-input.tsx: #11894

plan to refactor them in batches

---

**Message from the maintainers**:

Love this enhancement proposal? Give it a 👍. We prioritise the proposals with the most 👍.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.