Rithika taking over for Aditya-feat: Phase 2 Interactive list of open issues for BM Dashboard (integrates #3683)#4800
Conversation
✅ Deploy Preview for highestgoodnetwork-dev ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
HemanthNidamanuru
left a comment
There was a problem hiding this comment.
Hi Aditya,
In the project filter dropdown, selected projects are not displaying their full names. Only partial or single-character labels are visible instead of the complete project name. Please review the selected value rendering logic to ensure full project names are displayed correctly in the filter UI.
Anusha-Gali
left a comment
There was a problem hiding this comment.
Hi Aditya,
I have reviewed your PR locally and though all the functionalities work as per requirement, few UI issues persist.
- The calendar is in dark mode when the application is in light mode
- The option selected in filter by project is not visible in large screen sizes
- In smaller screen sizes, the cross icon for unselecting the dates is expanded and attached to the projects dropdown
Hi Anusha, Screen.Recording.2026-02-27.at.7.40.21.PM.mov |
Hi Hemanth, Thank you for the review. I fixed the issue. Check it out. Screen.Recording.2026-02-27.at.7.43.11.PM.mov |
|
Anusha-Gali
left a comment
There was a problem hiding this comment.
Hi Aditya,
Thank you working on the issue, they appear to be fixed. However i did notice that the UI got disturbed as i suppose the card layout expanded, since the functionality is as per requirement in smaller screens.
- The dropdown options are not visible unless scrolled
- The submit button is constricted even though there is open space due to the card layout
- The filters have a lot of gap between them but i would leave the UI decision upto you.
|
Convert IssuesList.css to IssuesList.module.css to comply with CSS module policy that only allows .module.css or index.css files. Updated component to use CSS module imports and converted all class names to camelCase format.
8b4bd4c to
5d4f2a7
Compare
|































Description
This PR implements Phase 2: Create an interactive list of open issues for the BM Dashboard. It adds a filterable, paginated table of open issues with tag, date range, and project filters, and row actions (Rename, Delete, Close Issue). The list is integrated into the Weekly Project Summary under the "Issue Tracking" section and uses the backend open-issues API with filter support. It also integrates feedback and resolves conflicts from PR #3683.
Related PRs (if any):
Main changes explained:
Created/Updated Files:
src/components/BMDashboard/Issues/IssuesList.jsxprojectIds,startDate,endDate,tag).status: 'closed'). Uses BootstrapDropdownand a custom modal for deletion.ENDPOINTS.BM_GET_ISSUE_PROJECTS,ENDPOINTS.BM_GET_OPEN_ISSUES(projectIds, startDate, endDate, tag),ENDPOINTS.BM_ISSUE_UPDATE(id)for PATCH (rename/close) and DELETE.Unassigned,No tag). Open Since computed fromissueDate(days). Pagination (5 per page) with first/last page buttons and page number group.isValidIssue,formatDateForAPI,getErrorMessage; JSDoc on component and helpers. Redux theme selector for dark mode.src/components/BMDashboard/Issues/IssuesList.css.dark-themefor container, table, thead/tbody, dropdown, datepicker, react-select (custom-select), and react-datepicker calendar (.dark-theme-calendar).src/utils/URL.jsBM_GET_OPEN_ISSUES(projectIds, startDate, endDate, tag)→GET /api/bm/issues/open?projectIds=...&startDate=...&endDate=...&tag=...(params only added when provided).BM_GET_ISSUE_PROJECTS→GET /api/bm/issues/projects.BM_ISSUE_UPDATE(issueId)→ base forPATCH /api/bm/issues/:issueIdandDELETE /api/bm/issues/:issueId.src/components/BMDashboard/WeeklyProjectSummary/WeeklyProjectSummary.jsxIssueListfrom../Issues/IssuesList.<IssueList />in the first card and<IssueCharts />in a second card (unchanged chart component), so the interactive list appears above the charts.src/reducers/bmdashboard/issueReducer.jsconst issueReducer→export const issueReducer(for consistency with store usage).src/reducers/index.jsbmIssues: issueReducerinlocalReducers(no functional change; aligns with other reducer ordering).src/components/TeamLocations/TeamLocations.jsx,src/components/TeamLocations/TestSafeMarkerCluster.jsx,src/components/__tests__/TagsSearch.test.jsxKey Implementation Details:
GET /api/bm/issues/open. The frontend does not filter the response array; it refetches when filters change and resets to page 1.YYYY-MM-DDviadate.toISOString().split('T')[0]. "Open Since" is computed client-side fromissue.issueDateas integer days.issueTitleas an array; PATCH body is{ issueTitle: [trimmedName] }.{ status: 'closed' }; list refetches so closed issues disappear.BM_ISSUE_UPDATE(id); confirmation modal before calling API; toasts and refetch on success/error._id,issueTitle(array),tag,issueDate,cost,person(e.g.,{ name, role }). Invalid or missingissueTitleentries are filtered out viaisValidIssue.darkModefrom Reduxstate.theme.darkMode; applied to container and passed to DatePicker/Select/table/dropdown/modal via class names and CSS.How to test:
fix/Create_an_interactive_list_of_open_issuesrm -rf node_modules && yarn cache cleanyarn installand start the app:yarn start:localREACT_APP_APIENDPOINTin.envpointing to API base URL)npm run start:local(ornpm startfor frontend)API examples (for manual/backend checks):
GET /api/bm/issues/openGET /api/bm/issues/open?projectIds=id1,id2&startDate=2024-01-01&endDate=2024-12-31&tag=VirtualGET /api/bm/issues/projectsPATCH /api/bm/issues/:issueIdbody{ issueTitle: ["New Name"] }or{ status: "closed" }DELETE /api/bm/issues/:issueIdScreenshots or videos of changes:
TestVideo.mov
Note: