import React from 'react'; import { Link } from 'react-router-dom'; import './building-edit-summary.css'; import { dataFields } from '../../data_fields'; import { arrayToDictionary, parseDate } from '../../helpers'; import { EditHistoryEntry } from '../../models/edit-history-entry'; import { CategoryEditSummary } from './category-edit-summary'; interface BuildingEditSummaryProps { historyEntry: EditHistoryEntry; showBuildingId?: boolean; hyperlinkCategories?: boolean; } function formatDate(dt: Date) { return dt.toLocaleString(undefined, { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' }); } const BuildingEditSummary: React.FunctionComponent = ({ historyEntry, showBuildingId = false, hyperlinkCategories = false }) => { const entriesWithMetadata = Object .entries(historyEntry.forward_patch) .map(([key, value]) => { const info = dataFields[key] || {}; return { title: info.title || `Unknown field (${key})`, category: info.category || 'Unknown', value: value, oldValue: historyEntry.reverse_patch && historyEntry.reverse_patch[key] }; }); const entriesByCategory = arrayToDictionary(entriesWithMetadata, x => x.category); const categoryHyperlinkTemplate = hyperlinkCategories && historyEntry.building_id != undefined ? `/edit/$category/${historyEntry.building_id}` : undefined; return (

Edited on {formatDate(parseDate(historyEntry.date_trunc))}

By {historyEntry.username}

{ showBuildingId && historyEntry.building_id != undefined &&

Building {historyEntry.building_id}

} { Object.entries(entriesByCategory).map(([category, fields]) => ) }
); }; export { BuildingEditSummary };