Conversation
There was a problem hiding this comment.
Pull request overview
This PR bundles several app-wide cleanup tasks and new features, centered around adding admin management tooling, improving column management workflows, and polishing UI/dark-mode behavior across multiple pages.
Changes:
- Added a new Profile → Admin page with organization/user management workflows backed by new OrganizationService/UserService endpoints.
- Implemented a column rename flow (API + modal) and reworked matching-criteria editing behavior (locking, pending removals + undo).
- Applied a set of UI polish updates (dark-mode icon/table styling, dataset detail upload actions, inventory detail title/subtitle swap, dashboard count coloring).
Reviewed changes
Copilot reviewed 42 out of 42 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| src/styles/styles.scss | Adds dark-theme overrides for Material table/paginator colors. |
| src/app/modules/profile/security/security.component.html | Dark-mode icon color tweak. |
| src/app/modules/profile/info/info.component.html | Dark-mode icon color tweak. |
| src/app/modules/profile/developer/developer.component.html | Dark-mode icon color tweak. |
| src/app/modules/profile/admin/admin.component.ts | Implements admin page logic, forms, and org/user operations. |
| src/app/modules/profile/admin/admin.component.html | Adds admin UI with 5 expansion-panel sections and a mat-table org view. |
| src/app/modules/organizations/settings/salesforce/salesforce.component.html | Dark-mode icon fill adjustments for action icons. |
| src/app/modules/organizations/members/members.component.html | Dark-mode icon fill adjustments for action icons. |
| src/app/modules/organizations/labels/labels.component.html | Dark-mode icon fill adjustments for action icons. |
| src/app/modules/organizations/email-templates/email-templates.component.html | Dark-mode icon fill adjustments for action icons. |
| src/app/modules/organizations/derived-columns/modal/form-modal.component.html | Dark-mode icon fill adjustment for delete icon. |
| src/app/modules/organizations/derived-columns/derived-columns.component.html | Dark-mode icon fill adjustments for action icons. |
| src/app/modules/organizations/data-quality/inventory/inventory-table.component.html | Dark-mode icon fill adjustments for action icons. |
| src/app/modules/organizations/data-quality/goal/goal-table.component.html | Dark-mode icon fill adjustments for action icons. |
| src/app/modules/organizations/cycles/cycles.component.html | Dark-mode icon fill adjustments for action icons. |
| src/app/modules/organizations/columns/matching-criteria/matching-criteria.component.ts | Adds lock state, pending removals, undo, and save payload changes for matching criteria. |
| src/app/modules/organizations/columns/matching-criteria/matching-criteria.component.html | Updates matching criteria UI to show locked state and pending “Adding/Removing” sections. |
| src/app/modules/organizations/columns/matching-criteria/criteria-list.component.html | Dark-mode icon fill adjustment for remove icon. |
| src/app/modules/organizations/columns/mappings/modal/create-modal.component.html | Dark-mode icon fill adjustment for remove icon. |
| src/app/modules/organizations/columns/mappings/mappings.component.html | Dark-mode icon fill adjustments for action icons. |
| src/app/modules/organizations/columns/mappings/action-buttons.component.html | Dark-mode icon fill adjustments for action icons. |
| src/app/modules/organizations/columns/list/modal/rename-modal.component.ts | Adds rename modal component logic and calls new renameColumn API. |
| src/app/modules/organizations/columns/list/modal/rename-modal.component.html | Adds rename modal UI with warnings, conflict handling, and acknowledgement. |
| src/app/modules/organizations/columns/list/list.component.ts | Wires column list “Rename” action to open the new rename modal and refresh columns. |
| src/app/modules/organizations/columns/list/list.component.html | Adds dark-mode fills and a rename action button in the column list. |
| src/app/modules/organizations/columns/import-settings/import-settings.component.html | Adds left padding and dark-mode icon fill tweaks for delete icons. |
| src/app/modules/organizations/columns/geocoding/geocoding.component.html | Dark-mode icon fill adjustment for remove icon. |
| src/app/modules/inventory-list/list/grid/grid-controls.component.html | Adds dark-mode hover styling for pagination controls. |
| src/app/modules/inventory-list/groups/detail/dashboard/dashboard.component.html | Prevents zero “missing” counts from being styled as warn (red). |
| src/app/modules/inventory-detail/detail/detail.component.html | Swaps page title/subtitle to make display field the main title. |
| src/app/modules/datasets/dataset/dataset.component.ts | Adds “add data file” / “add meter data” actions opening upload modals. |
| src/app/modules/datasets/dataset/dataset.component.html | Exposes two action buttons on dataset detail page. |
| src/@seed/components/page/page.component.html | Dark-mode icon color tweak for page title icon. |
| src/@seed/api/user/user.types.ts | Adds UserBrief type. |
| src/@seed/api/user/user.service.ts | Adds getAllUsers() superuser endpoint wrapper. |
| src/@seed/api/organization/organization.types.ts | Adds admin-oriented organization response types. |
| src/@seed/api/organization/organization.service.ts | Adds admin org CRUD/add-user APIs; updates display field lookup to check extra_data. |
| src/@seed/api/column/column.types.ts | Adds RenameColumnResponse type. |
| src/@seed/api/column/column.service.ts | Adds renameColumn() API method. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| checkNameExists() { | ||
| this.nameExists = this.data.allColumnNames.includes(this.newName) | ||
| } |
There was a problem hiding this comment.
Fixed in the latest commit — checkNameExists() now resets overwritePreference to false whenever nameExists becomes false.
| removeUserFromOrg(user: OrganizationUser): void { | ||
| const dialogRef = this._dialog.open(DeleteModalComponent, { | ||
| width: '400px', | ||
| data: { instance: user.email, model: 'User' }, | ||
| }) | ||
|
|
||
| dialogRef.afterClosed().subscribe((confirmed) => { | ||
| if (confirmed) { | ||
| this._organizationService.deleteOrganizationUser(user.user_id, this.selectedRemoveOrgId).subscribe({ | ||
| complete: () => { |
There was a problem hiding this comment.
Fixed in the latest commit — selectedRemoveOrgId is now captured into a local const orgId before opening the dialog, so any subsequent change to the selection won't affect the in-flight confirmation.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
A collection of cleanup and feature tasks across the app — column rename, admin page
implementation, dark mode fixes, and various UI polish.
Column Rename (Organization → Columns)
Admin Page (Profile → Admin)
org, remove user from org
addUserToOrganization to OrganizationService
Property Detail Display Field
Matching Criteria Rework
Dataset Detail Upload Buttons
Dark Mode Fixes
UI Polish