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