github.com/argoproj/argo-cd/v3@v3.2.1/ui/src/app/applications/components/application-status-panel/revision-metadata-panel.tsx (about)

     1  import {DataLoader, Tooltip} from 'argo-ui';
     2  import * as React from 'react';
     3  import {Timestamp} from '../../../shared/components/timestamp';
     4  import {services} from '../../../shared/services';
     5  
     6  export const RevisionMetadataPanel = (props: {appName: string; appNamespace: string; type: string; revision: string; versionId: number}) => {
     7      if (props.type === 'helm' || props.type === 'oci') {
     8          return null;
     9      }
    10      if (props.type === 'oci') {
    11          return (
    12              <DataLoader load={() => services.applications.ociMetadata(props.appName, props.appNamespace, props.revision, 0, props.versionId)} errorRenderer={() => <div />}>
    13                  {m => (
    14                      <Tooltip
    15                          popperOptions={{
    16                              modifiers: {
    17                                  preventOverflow: {
    18                                      enabled: false
    19                                  },
    20                                  hide: {
    21                                      enabled: false
    22                                  },
    23                                  flip: {
    24                                      enabled: false
    25                                  }
    26                              }
    27                          }}
    28                          content={
    29                              <span>
    30                                  {m.authors && <React.Fragment>Authored by {m.authors}</React.Fragment>}
    31                                  <br />
    32                                  {m.createdAt && <Timestamp date={m.createdAt} />}
    33                                  <br />
    34                                  <br />
    35                                  {m.description}
    36                              </span>
    37                          }
    38                          placement='bottom'
    39                          allowHTML={true}>
    40                          <div className='application-status-panel__item-name'>
    41                              {m.authors && (
    42                                  <div className='application-status-panel__item__row'>
    43                                      <div>Author:</div>
    44                                      <div>{m.authors}</div>
    45                                  </div>
    46                              )}
    47                          </div>
    48                      </Tooltip>
    49                  )}
    50              </DataLoader>
    51          );
    52      }
    53      return (
    54          <DataLoader
    55              key={props.revision}
    56              load={() => services.applications.revisionMetadata(props.appName, props.appNamespace, props.revision, 0, props.versionId)}
    57              errorRenderer={() => <div />}>
    58              {m => (
    59                  <Tooltip
    60                      popperOptions={{
    61                          modifiers: {
    62                              preventOverflow: {
    63                                  enabled: false
    64                              },
    65                              hide: {
    66                                  enabled: false
    67                              },
    68                              flip: {
    69                                  enabled: false
    70                              }
    71                          }
    72                      }}
    73                      content={
    74                          <span>
    75                              {m.author && <React.Fragment>Authored by {m.author}</React.Fragment>}
    76                              <br />
    77                              {m.date && <Timestamp date={m.date} />}
    78                              <br />
    79                              {m.tags && (
    80                                  <span>
    81                                      Tags: {m.tags}
    82                                      <br />
    83                                  </span>
    84                              )}
    85                              {m.signatureInfo}
    86                              <br />
    87                              {m.message}
    88                          </span>
    89                      }
    90                      placement='bottom'
    91                      allowHTML={true}>
    92                      <div className='application-status-panel__item-name'>
    93                          {m.author && (
    94                              <div className='application-status-panel__item__row'>
    95                                  <div>Author:</div>
    96                                  <div>
    97                                      {m.author} - {m.signatureInfo}
    98                                  </div>
    99                              </div>
   100                          )}
   101                          <div className='application-status-panel__item__row'>
   102                              <div>Comment:</div>
   103                              <div>{m.message?.split('\n')[0].slice(0, 64)}</div>
   104                          </div>
   105                      </div>
   106                  </Tooltip>
   107              )}
   108          </DataLoader>
   109      );
   110  };