grafana/public/app/features/admin/ldap/LdapConnectionStatus.tsx
srid12 2a1e130000 AlertBox: Merged Alertbox into Alert (#19212)
* refatoring alert box and using alert

* refactoring alertbox to alert

* Changed default to Error

* added buttonText, onButtonClick, omRemove

* Minor fix to buttons

* fixed onRemove
2019-09-20 13:41:00 +02:00

83 lines
2.3 KiB
TypeScript

import React, { FC } from 'react';
import { Alert } from '@grafana/ui';
import { AppNotificationSeverity, LdapConnectionInfo, LdapServerInfo } from 'app/types';
interface Props {
ldapConnectionInfo: LdapConnectionInfo;
}
export const LdapConnectionStatus: FC<Props> = ({ ldapConnectionInfo }) => {
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 ? (
<i className="fa fa-fw fa-check pull-right" />
) : (
<i className="fa fa-fw fa-exclamation-triangle pull-right" />
)}
</td>
</tr>
))}
</tbody>
</table>
</div>
<div className="gf-form-group">
<LdapErrorBox ldapConnectionInfo={ldapConnectionInfo} />
</div>
</div>
</>
);
};
interface LdapConnectionErrorProps {
ldapConnectionInfo: LdapConnectionInfo;
}
export const LdapErrorBox: FC<LdapConnectionErrorProps> = ({ ldapConnectionInfo }) => {
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} children={errorElements} />;
};