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  };