Conversation
Preview DeploymentPreview URL: https://preview-bdms-1133-auejgdbofq-uc.a.run.app Note: This preview uses the staging API endpoints. |
Preview DeploymentPreview URL: https://preview-bdms-1133-auejgdbofq-uc.a.run.app Note: This preview uses the staging API endpoints. |
Preview DeploymentPreview URL: https://preview-bdms-1133-auejgdbofq-uc.a.run.app Note: This preview uses the staging API endpoints. |
Preview DeploymentPreview URL: https://preview-bdms-1133-auejgdbofq-uc.a.run.app Note: This preview uses the staging API endpoints. |
jirhiker
marked this pull request as draft
August 14, 2026 16:20
Member
Author
|
@TylerAdamMartinez FYSA |
Projects were introduced as a sub-feature of Wells and later moved to top-level navigation, but the URL, resource name, route nesting, access key and source directory still described them as a wells sub-feature. Finish that move and build out editing on the list page. Routing: - /ocotillo/well/projects -> /ocotillo/projects, resource `projects`, access key `ocotillo.projects`, route lifted out of the `well` block - pages moved to src/pages/ocotillo/projects/, components renamed to ProjectList / ProjectShow List: - replace the MUI DataGrid with the shadcn table. The group endpoint ignores sort params and returns a few hundred rows, so the page loads the full set and sorts, filters and pages locally; filtering a single server page would only ever describe part of the data - sortable columns with aria-sort and blanks-last ordering, search over name/description/type/status, Type and Release status facets with a "none" option for untyped records, 20 rows per page Editing: - ProjectEditPanel opens from a row edit action or double click: name (admin only), description, release status, type, and boundary upload - GeoJSON upload accepts a single polygon and emits MULTIPOLYGON WKT, the only geometry type group.project_area accepts - 409 on the unique (name, group_type) constraint gets its own message Also drops the client-side quick filter from ListPage. It filtered only the current server page while sitting next to the Filters toolbar button, with no way to tell the two apart. Server-search lists (Wells) keep their search input. Project type editing requires the matching OcotilloAPI change adding group_type to UpdateGroup; without it PATCH returns 200 and silently discards the value. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Adds a map action to each project row that has geometry, opening the boundary in a dialog. MapComponent grows an onLoad callback so the dialog can fit bounds once the map is ready rather than guessing at mount time. Also tightens the table vertically. Cell padding drops to py-0.5 and the header to h-7, but the row height was actually floored by the action buttons: at size-7 they were 28px, taller than both the status badge (20px) and the text line box (20px), so trimming padding alone would not have moved anything. Switching them to the existing icon-xs variant puts them at 24px and lets the icons inherit their size from the variant instead of an ad-hoc override. Measured in the browser, rows go from 37px to 29px — a 20-row page is 608px tall instead of 772px. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The port was hardcoded, so a second dev server on the same checkout could not start at all. It now reads PORT and falls back to 5173, which stays the default because the Authentik redirect URI is registered against it. launch.json opts into autoPort so the harness can pick a free port. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
23db2ee moved Projects to the shadcn table and dropped the client-side quick filter from ListPage, but the e2e spec was only updated for the new URL. Two assertions still described the old DataGrid. The projects test now looks for the table's own search input and uses native th/tr selectors, since the shadcn table has no explicit role="columnheader"/role="row" attributes. The contacts test drops its quick-filter assertion outright — that page has no search config, so the input is simply gone rather than renamed. Its DataGrid assertions stay, because contacts still renders a DataGrid. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The MapLibre merge made maplibre-gl reachable from ProjectListPanel's render tree, and it calls URL.createObjectURL at module load to start its worker. jsdom does not implement that, so the import threw and vitest failed the run on an unhandled rejection even though all 398 tests passed. Stubbed in the shared setup rather than per-test, since any future test that reaches MapComponent would hit the same wall. Guarded on window because the API contract tests run in the node environment. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
jirhiker
added a commit
that referenced
this pull request
Aug 17, 2026
Replaces the MUI DataGrid on the Wells and Contacts lists with a shared shadcn table built on TanStack Table, following the denser table style introduced by the Projects work in #344. - Adds src/components/DataTable: table renderer, sortable/filterable column headers, column visibility menu, filter chips, pager, and a useRefineDataTable hook bridging Refine's useTable server state (paging, sorting, filtering) to TanStack's manual mode. - Column filters cover text, single-select, and numeric/date comparison operators; PostHog events keep the names the DataGrid pages emitted (<prefix>_sorted, _filter_applied, _column_visibility_changed). - Wells: same columns, tooltips, project filter chip, server search, batch field sheets and CSV export; now defaults to newest first (created_at desc, the closest field the API exposes to "last updated"). - Contacts: rows now select instead of navigating, so the email, phone and address cards open below the table; the name cell links to the contact page. - Adds ListPageShell for the page chrome the DataTable pages share, and moves the row navigation helpers next to the DataTable (re-exported from ListPage). Density toggle is not carried over; the shadcn table is already compact. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Preview DeploymentPreview URL: https://preview-bdms-1133-auejgdbofq-uc.a.run.app Note: This preview uses the staging API endpoints. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Three commits on top of
staging:23db2ee— Projects promoted to a top-level resource with editing.f672775— Boundary preview dialog + denser table. Rows with geometry get a map action that opens the project boundary in a dialog.MapComponentgains anonLoadcallback so the dialog can fit bounds once the map is ready instead of guessing at mount.bee0abd— Dev server port made configurable. ReadsPORT, falls back to5173.On the table density
Cell padding drops to
py-0.5and the header toh-7, but padding was not the binding constraint. Row height was floored by the action buttons: atsize-7they were 28px, taller than both the status badge (20px) and the text line box (20px), so trimming padding alone would have changed nothing. They now use the existingicon-xsvariant at 24px, and the icons inherit their size from the variant instead of an ad-hocsize-3.5override.Measured in the browser rather than estimated:
24px is now the floor — badge and text sit at 20px, so going tighter means sub-24px hit targets. Left that call open.
Why
PORTvite.config.tshardcoded5173, so a second dev server on the same checkout could not start.5173stays the default because the Authentik redirect URI is registered against it;launch.jsonopts intoautoPort.Verification
tsc --noEmitcleanvitest run— 47 files, 398 passed, 1 skippedbiome lintclean on all changed files (17 pre-existing warnings, 0 errors)Note:
npm run lintcurrently fails repo-wide with "nested root configuration" — caused bybiome.jsonfiles inside pre-existing.claude/worktrees/checkouts. Unrelated to this branch and present before it.🤖 Generated with Claude Code