Job Summary :
The DevOps Engineer role focuses on implementing automation, CI / CD, observability, and operational resilience for Azure data services. This involves automating infrastructure deployment, configuring build and release pipelines, integrating monitoring solutions, developing backup and recovery scripts, and supporting security enforcement.
Location : Houston, Texas, United States
Responsibilities :
Required Skills & Certifications :
Preferred Skills & Certifications :
Special Considerations :
Scheduling : 'use client';
import
import {
ColumnDef,
flexRender,
getCoreRowModel,
useReactTable,
} from '@tanstack / react-table';
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
TableRow,
} from '@ / components / ui / table';
import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@ / components / ui / card';
import { CheckCircle2, XCircle, Pencil, Trash2, Plus } from 'lucide-react';
import { Button } from '@ / components / ui / button';
type ComplianceMatrixRow = {
id : string;
rfpSection : string;
requirementSummary : string;
painPoint : string;
proposalSection : string;
vtechSolution : string;
keyDifferentiator : string;
compliant : string;
clarifications : string;
priceToWinStrategy : string;
};
type Props = {
data : ComplianceMatrixRow[];
onSave? : (row : ComplianceMatrixRow) =>
Promise;
readOnly? : boolean;
};
export function ComplianceMatrix({ data : initialData, onSave, readOnly = false } : Props) {
const [data, setData] = React.useState(initialData);
const [editingRowId, setEditingRowId] = React.useState(null);
const [editBuffer, setEditBuffer] = React.useState(null);
const [saving, setSaving] = React.useState(false);
React.useEffect(() =>
setData(initialData);
}, [initialData]);
const startEditing = (row : ComplianceMatrixRow) =>
setEditingRowId(row.id);
setEditBuffer({ ...row });
};
const cancelEditing = () =>
setEditingRowId(null);
setEditBuffer(null);
};
const updateEditBuffer = (field : keyof ComplianceMatrixRow, value : any) =>
setEditBuffer(prev =>
({ ...(prev ?? {}), [field] : value }));
};
const saveEditing = async () =>
if (!editingRowId || !editBuffer) return;
setSaving(true);
try {
/ / Optimistic update
setData(prev =>
prev.map(r =>
(r.id === editingRowId ? ({ ...(r as any), ...(editBuffer as any) }) : r)));
/ / API call to save changes
if (onSave) {
await onSave(editBuffer as ComplianceMatrixRow);
setEditingRowId(null);
setEditBuffer(null);
} catch (err : any) {
alert(`Error saving : ${err?.message ?? 'Unknown error'}`);
} finally {
setSaving(false);
};
const handleDeleteRow = (id : string) =>
if (!confirm('Are you sure you want to delete this row?')) return;
setData(prev =>
prev.filter(r =>
r.id !== id));
if (editingRowId === id) cancelEditing();
};
const handleAddRow = () =>
const newRow : ComplianceMatrixRow = {
id : `new-${Date.now()}`,
rfpSection : '',
requirementSummary : '',
painPoint : '',
proposalSection : '',
vtechSolution : '',
keyDifferentiator : '',
compliant : '',
clarifications : '',
priceToWinStrategy : '',
};
setData(prev =>
[...prev, newRow]);
setTimeout(() =>
startEditing(newRow), 50);
};
const columns : ColumnDef[] = [
accessorKey : 'rfpSection',
header : 'RFP Section / ID',
cell : ({ row }) =>
const isEditing = row.original.id === editingRowId && !readOnly;
return isEditing ? (
updateEditBuffer('rfpSection', e.target.value)}
className="w-full border rounded px-2 py-1"
/ >
) : (
{row.getValue('rfpSection')}
);
},
},
accessorKey : 'requirementSummary',
header : 'Requirement Summary',
cell : ({ row }) =>
const isEditing = row.original.id === editingRowId && !readOnly;
return isEditing ? (
updateEditBuffer('requirementSummary', e.target.value)}
className="w-full border rounded px-2 py-1 min-h-[64px] resize-y"
/ >
) : (
{row.getValue('requirementSummary')}
);
},
},
accessorKey : 'painPoint',
header : 'Pain Point / Need',
cell : ({ row }) =>
const isEditing = row.original.id === editingRowId && !readOnly;
return isEditing ? (
updateEditBuffer('painPoint', e.target.value)}
className="w-full border rounded px-2 py-1 min-h-[48px] resize-y"
/ >
) : (
{row.getValue('painPoint')}
);
},
},
accessorKey : 'proposalSection',
header : 'Proposal Section',
cell : ({ row }) =>
const isEditing = row.original.id === editingRowId && !readOnly;
return isEditing ? (
updateEditBuffer('proposalSection', e.target.value)}
className="w-full border rounded px-2 py-1"
/ >
) : (
{row.getValue('proposalSection')}
);
},
},
accessorKey : 'vtechSolution',
header : 'vTech Solution Summary',
cell : ({ row }) =>
const isEditing = row.original.id === editingRowId && !readOnly;
return isEditing ? (
updateEditBuffer('vtechSolution', e.target.value)}
className="w-full border rounded px-2 py-1 min-h-[64px] resize-y"
/ >
) : (
{row.getValue('vtechSolution')}
);
},
},
accessorKey : 'keyDifferentiator',
header : 'Key Differentiator',
cell : ({ row }) =>
const isEditing = row.original.id === editingRowId && !readOnly;
return isEditing ? (
updateEditBuffer('keyDifferentiator', e.target.value)}
className="w-full border rounded px-2 py-1 min-h-[48px] resize-y"
/ >
) : (
{row.getValue('keyDifferentiator')}
);
},
},
accessorKey : 'compliant',
header : 'Compliant',
cell : ({ row }) =>
const isEditing = row.original.id === editingRowId && !readOnly;
if (isEditing) {
return (
updateEditBuffer('compliant', e.target.value)}
className="border rounded px-2 py-1"
Select
Yes
No
Yes (YES)
);
const compliantValue = String(row.getValue('compliant') ?? '').toUpperCase().trim();
const isCompliant = compliantValue === 'Y' || compliantValue === 'YES';
return isCompliant ? : ;
},
},
accessorKey : 'clarifications',
header : 'Clarifications / Assumptions',
cell : ({ row }) =>
const isEditing = row.original.id === editingRowId && !readOnly;
return isEditing ? (
updateEditBuffer('clarifications', e.target.value)}
className="w-full border rounded px-2 py-1 min-h-[48px] resize-y"
/ >
) : (
{row.getValue('clarifications')}
);
},
},
accessorKey : 'priceToWinStrategy',
header : 'Price-to-Win Strategy',
cell : ({ row }) =>
const isEditing = row.original.id === editingRowId && !readOnly;
return isEditing ? (
updateEditBuffer('priceToWinStrategy', e.target.value)}
className="w-full border rounded px-2 py-1 min-h-[48px] resize-y"
/ >
) : (
{row.getValue('priceToWinStrategy')}
);
},
},
id : 'actions',
header : 'Actions',
cell : ({ row }) =>
if (readOnly) return null;
const isEditing = row.original.id === editingRowId;
return isEditing ? (
{saving ? 'Saving...' : 'Save'}
Cancel
handleDeleteRow(row.original.id)}>
) : (
startEditing(row.original as ComplianceMatrixRow)}>
Edit
handleDeleteRow(row.original.id)}>
);
},
},
];
const table = useReactTable({
data,
columns,
getCoreRowModel : getCoreRowModel(),
});
return (
Compliance Matrix
A detailed breakdown of RFP requirements, our proposed solutions, and strategic analysis.
{!readOnly && (
Add Row
)}
{table.getHeaderGroups().map((headerGroup) =>
{headerGroup.headers.map((header) =>
return (
{header.isPlaceholder
: flexRender(header.column.columnDef.header, header.getContext())}
);
})}
))}
{table.getRowModel().rows?.length ? (
table.getRowModel().rows.map((row) =>
{row.getVisibleCells().map((cell) =>
{flexRender(cell.column.columnDef.cell, cell.getContext())}
))}
))
) : (
No results.
)}
);
Engineer • Houston, TX, United States