D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
share
/
grafana
/
public
/
app
/
features
/
admin
/
ldap
/
Filename :
LdapConnectionStatus.tsx
back
Copy
import React from 'react'; import { Alert, Icon } from '@grafana/ui'; import { AppNotificationSeverity, LdapConnectionInfo, LdapServerInfo } from 'app/types'; interface Props { ldapConnectionInfo: LdapConnectionInfo; } export const LdapConnectionStatus = ({ ldapConnectionInfo }: Props) => { return ( <> <h3 className="page-heading">LDAP Connection</h3> <div className="gf-form-group"> <div className="gf-form"> <table className="filter-table form-inline"> <thead> <tr> <th>Host</th> <th colSpan={2}>Port</th> </tr> </thead> <tbody> {ldapConnectionInfo && ldapConnectionInfo.map((serverInfo, index) => ( <tr key={index}> <td>{serverInfo.host}</td> <td>{serverInfo.port}</td> <td> {serverInfo.available ? ( <Icon name="check" className="pull-right" /> ) : ( <Icon name="exclamation-triangle" className="pull-right" /> )} </td> </tr> ))} </tbody> </table> </div> <div className="gf-form-group"> <LdapErrorBox ldapConnectionInfo={ldapConnectionInfo} /> </div> </div> </> ); }; interface LdapConnectionErrorProps { ldapConnectionInfo: LdapConnectionInfo; } export const LdapErrorBox = ({ ldapConnectionInfo }: LdapConnectionErrorProps) => { const hasError = ldapConnectionInfo.some((info) => info.error); if (!hasError) { return null; } const connectionErrors: LdapServerInfo[] = []; ldapConnectionInfo.forEach((info) => { if (info.error) { connectionErrors.push(info); } }); const errorElements = connectionErrors.map((info, index) => ( <div key={index}> <span style={{ fontWeight: 500 }}> {info.host}:{info.port} <br /> </span> <span>{info.error}</span> {index !== connectionErrors.length - 1 && ( <> <br /> <br /> </> )} </div> )); return ( <Alert title="Connection error" severity={AppNotificationSeverity.Error}> {errorElements} </Alert> ); };