Skip to content

Feat 272 dashboard refactor - #301

Open
mohammadsherif0 wants to merge 19 commits into
devfrom
feat-272-dashboard_refactor
Open

Feat 272 dashboard refactor#301
mohammadsherif0 wants to merge 19 commits into
devfrom
feat-272-dashboard_refactor

Conversation

@mohammadsherif0

@mohammadsherif0 mohammadsherif0 commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds a shared dashboard list-page foundation (DashboardListPage, table defaults, row-action catalog, confirmSoftDelete) and migrates the card+table management screens onto it. Issue #272 list-page work is in this PR; remaining specialized layouts stay as they are.

New Dev Features

  • DashboardListPage (frontend/src/basic/dashboard/ListPage.vue): card + header slot + BasicTable, default options and height from constants.js.
  • Row-action catalog, DASHBOARD_BADGES, and confirmSoftDelete in actions.js (confirm + appDataUpdate with deleted: true).
  • Contributor recipe in docs/source/for_developers/frontend/components/dashboard.rst, component reference in basic/dashboard.rst, and the table example updated to use DashboardListPage.

Improvements

  • List-style pages now use DashboardListPage: Documents, Projects, Tags, Assignments, Templates, Workflows, Users, Configurations, NLP Skills.
  • Nested tables that already had a manage column use the same catalog: StudySessionTable, AssignmentSubmissionsTable, SavedTemplatesModal, PublicTemplatesModal.
  • Studies stays a custom Card/table shell but uses the catalog, withSearch, and confirmSoftDelete.
  • BasicCoordinator and ConfirmModal footers use BasicButton.
  • Tags/Projects share buttons use filterMode: "and" so Share only shows on a private row you own.

Bug Fixes

Known Limitations

These differ from issue #272 on purpose:

  • Logs were listed as both a migrate candidate and specialized (server-side pagination). They stay a custom Card + BasicTable so pagination is not forced through DashboardListPage.
  • Configurations were listed as both migrate and specialized. The list shell migrated; JSON viewer / import-export domain logic stayed on the page.
  • Studies stay specialized (no DashboardListPage wrap). Catalog alignment was applied because that page still has a manage column.
  • Issue asked for a modals slot on the list page. Shipped pages put modals as siblings of DashboardListPage so refs and lazy v-if stay on the page. #headerActions and #afterTable are the slots in use (#afterTable on Documents). #tableExtras exists for BasicTable extra toolbar buttons and has no list-page caller yet.
  • Issue asked for page vs modal table height constants. Only DASHBOARD_TABLE_HEIGHT (65vh) is in the foundation. Modal tables in the repo do not share one height, so there is no modal-height constant.
  • Templates and assignment submissions still delete via templateDelete / submissionDelete, not confirmSoftDelete, because those are dedicated backend sockets.
  • Submissions and Study Sessions keep their accordion shells. Only the nested tables got catalog buttons.

Future Steps

Further generalization and refactors can be planned later where the same pattern is still copied (remaining dashboard layouts, other frontend shells, and similar duplication elsewhere) so the rest of the tree can align with this kind of shared foundation.

@mohammadsherif0
mohammadsherif0 marked this pull request as ready for review August 16, 2026 19:55
Comment thread frontend/src/basic/dashboard/constants.js Outdated
Comment thread frontend/src/components/dashboard/Study.vue Outdated
Comment thread frontend/src/components/dashboard/Users.vue Outdated
Comment thread frontend/src/basic/modal/ConfirmModal.vue Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants