github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/webui/src/pages/repositories/repository/commits/commit/metadata.tsx (about) 1 import React, {useCallback} from "react"; 2 import Button from 'react-bootstrap/Button'; 3 import {statistics} from "../../../../../lib/api"; 4 5 const keyIsClickableUrl = /::lakefs::(.*)::url\[ur[il]:ui\]$/; 6 7 export const MetadataRow = ({ metadata_key, metadata_value }) => { 8 return <tr> 9 <td><code>{metadata_key}</code></td> 10 <td><code>{metadata_value}</code></td> 11 </tr>; 12 }; 13 14 export const gotoMetadata = async (typ, url) => { 15 const event = { 16 class: "integration", 17 name: 'link', 18 type: typ, 19 count: 1, 20 }; 21 // Just ignore any errors ins statistics. 22 await statistics.postStatsEvents([event]).catch(() => null); 23 window.location = url; 24 } 25 26 export const MetadataUIButton = ({ metadata_key, metadata_value }) => { 27 const m = metadata_key.match(keyIsClickableUrl); 28 if (!m) { 29 return null; 30 } 31 const click = useCallback(() => gotoMetadata(m[1], metadata_value), [m[1], metadata_value]); 32 return <tr key={metadata_key}> 33 <td colSpan={2}> 34 <Button variant="success" onClick={click}>Open {m[1]} UI</Button> 35 </td> 36 </tr>; 37 };