import { useState } from 'react' import { useNavigate } from 'react-router-dom' import { Button, Card, Icon, PageHeader } from '../../components/ui' import RecordView from '../../components/activity/RecordView' import useRecordView from '../../hooks/useRecordView' import { RECORD_VIEWS } from '../../api/recordView' import { assetRowId, withAssetListDisplay } from '../../api/assets' import AddAssetModal from './AddAssetModal' const VIEW = RECORD_VIEWS.assets export default function AssetList() { const navigate = useNavigate() // Every field the Add Asset form fills gets a column, even if the view lacks // one, and Asset Owner shows the employee's name. Newest first, so a just // created asset is on page 1 (the view itself lists oldest first). idgen_2 is // the view's Asset id column (ID-00001…). const view = useRecordView(VIEW.templateUid, { transform: withAssetListDisplay, sortBy: 'idgen_2', sortDir: 'desc', }) const [adding, setAdding] = useState(false) const [notice, setNotice] = useState(null) /** `values` is keyed by Zino field id — see ASSET_FIELDS in api/assets.js. */ function handleCreated(values) { setNotice({ tone: 'success', text: `${values.field_42?.trim() || 'Asset'} was created and added to the inventory.`, }) // Records live in the workflow, so re-read the view rather than guessing. view.reload() } return ( <> setAdding(true)}> Add Asset } /> {notice && (
{notice.text}
)} navigate(`/assets/${encodeURIComponent(assetRowId(row))}`)} /> setAdding(false)} onCreated={handleCreated} /> ) }