mirror of
https://github.com/grafana/grafana.git
synced 2025-02-13 00:55:47 -06:00
* first pass * return list * types and cleanup * add to plugin page and add styles * update comment * update comment * fix component path * simplify error component * simplify error struct * fix tests * don't export and fix string() * update naming * remove frontend * introduce phantom loader * track single error * remove error from base * remove unused struct * remove unnecessary filter * add errors endpoint * Update set log to use id field Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com> * skip adding BE plugins * remove errs from plugin + ds list * remove unnecessary fields * add signature state to panels * Fetch plugins errors * grafana/ui component tweaks * DS Picker - add unsigned badge * VizPicker - add unsigned badge * PluginSignatureBadge tweaks * Plugins list - add signatures info box * New datasource page - add signatures info box * Plugin page - add signatures info box * Fix test * Do not show Core label in viz picker * Update public/app/features/plugins/PluginsErrorsInfo.tsx Co-authored-by: Torkel Ödegaard <torkel@grafana.org> * Update public/app/features/plugins/PluginListPage.test.tsx Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com> * Update public/app/features/plugins/PluginListPage.tsx Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com> * Update public/app/features/datasources/NewDataSourcePage.tsx Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com> * Review comments 1 * Review comments 2 * Update public/app/features/plugins/PluginsErrorsInfo.tsx * Update public/app/features/plugins/PluginPage.tsx * Prettier fix * remove stale backend code * Docs issues fix Co-authored-by: Will Browne <will.browne@grafana.com> Co-authored-by: Will Browne <wbrowne@users.noreply.github.com> Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com> Co-authored-by: Torkel Ödegaard <torkel@grafana.org> Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
import React, { FC } from 'react';
|
|
import { PluginMeta } from '@grafana/data';
|
|
import { PluginSignatureBadge } from './PluginSignatureBadge';
|
|
import { selectors } from '@grafana/e2e-selectors';
|
|
|
|
interface Props {
|
|
plugin: PluginMeta;
|
|
}
|
|
|
|
const PluginListItem: FC<Props> = props => {
|
|
const { plugin } = props;
|
|
|
|
return (
|
|
<li className="card-item-wrapper" aria-label={selectors.pages.PluginsList.listItem}>
|
|
<a className="card-item" href={`plugins/${plugin.id}/`}>
|
|
<div className="card-item-header">
|
|
<div className="card-item-type">{plugin.type}</div>
|
|
<PluginSignatureBadge status={plugin.signature} />
|
|
{plugin.hasUpdate && (
|
|
<div className="card-item-notice">
|
|
<span bs-tooltip="plugin.latestVersion">Update available!</span>
|
|
</div>
|
|
)}
|
|
</div>
|
|
<div className="card-item-body">
|
|
<figure className="card-item-figure">
|
|
<img src={plugin.info.logos.small} />
|
|
</figure>
|
|
<div className="card-item-details">
|
|
<div className="card-item-name">{plugin.name}</div>
|
|
<div className="card-item-sub-name">{`By ${plugin.info.author.name}`}</div>
|
|
</div>
|
|
</div>
|
|
</a>
|
|
</li>
|
|
);
|
|
};
|
|
|
|
export default PluginListItem;
|