From dd8758471fa51f1341527784fd055849960afc38 Mon Sep 17 00:00:00 2001 From: Tyler Adam Martinez Date: Tue, 28 Apr 2026 12:08:15 -0500 Subject: [PATCH] feat(WellShow/OwnerPermissions): Add 'Owner acknowledged public data release' section --- src/components/WellShow/OwnerPermissions.tsx | 112 ++++++++++++++----- 1 file changed, 85 insertions(+), 27 deletions(-) diff --git a/src/components/WellShow/OwnerPermissions.tsx b/src/components/WellShow/OwnerPermissions.tsx index a5b14a96..7797d8cb 100644 --- a/src/components/WellShow/OwnerPermissions.tsx +++ b/src/components/WellShow/OwnerPermissions.tsx @@ -9,6 +9,10 @@ import { } from '@mui/material' import { IWell } from '@/interfaces/ocotillo' import { formatAppDate } from '@/utils' +import { z } from 'zod' +import { zReleaseStatus } from '@/generated/zod.gen' + +type ReleaseStatus = z.infer export const OwnerPermissionsCard = ({ well, @@ -17,6 +21,14 @@ export const OwnerPermissionsCard = ({ well?: IWell isLoading?: boolean }) => { + const releaseStatus: ReleaseStatus = + well?.current_location?.release_status ?? 'draft' + + const ownerPublicDataAcknowledgement = + getPublicDataAcknowledgementStatus(releaseStatus) + + const permissions = well?.permissions ?? [] + if (isLoading) { return ( @@ -53,6 +65,7 @@ export const OwnerPermissionsCard = ({ + ) @@ -65,15 +78,33 @@ export const OwnerPermissionsCard = ({ Owner Permissions + + + Owner acknowledged public data release + + + - {!well?.permissions || well.permissions.length === 0 ? ( + {permissions.length === 0 ? ( - N/A + No permissions available ) : ( - {well.permissions.map((p, i) => ( - + {permissions.map((permission, index) => ( + - {p.permission_type}: + {permission.permission_type}: - + - {(p.start_date || p.end_date) && ( + {(permission.start_date || permission.end_date) && ( )} - {i < well.permissions.length - 1 && } + {index < well.permissions.length - 1 && ( + + )} ))} @@ -155,3 +171,45 @@ const DateMeta = ({ label, value }: { label: string; value: string }) => ( ) + +const getPublicDataAcknowledgementStatus = ( + releaseStatus: ReleaseStatus +): boolean | null => { + if (releaseStatus === 'public') return true + if (releaseStatus === 'private') return false + return null +} + +const getBooleanStatusLabel = ( + value: boolean | null, + variant: 'permission' | 'yesno' = 'permission' +) => { + if (variant === 'yesno') { + return value === true ? 'Yes' : value === false ? 'No' : 'Unknown' + } + + return value === true + ? 'Allowed' + : value === false + ? 'Not Allowed' + : 'Unknown' +} + +const getBooleanStatusColor = (value: boolean | null) => { + return value === true ? 'success' : value === false ? 'error' : 'default' +} + +const BooleanStatusChip = ({ + value, + variant = 'permission', +}: { + value: boolean | null + variant?: 'permission' | 'yesno' +}) => ( + +)