D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
share
/
grafana
/
public
/
app
/
features
/
datasources
/
components
/
picker
/
Filename :
BuiltInDataSourceList.tsx
back
Copy
import React from 'react'; import { DataSourceInstanceSettings } from '@grafana/data'; import { DataSourceRef } from '@grafana/schema'; import { useDatasources } from '../../hooks'; import { DataSourceCard } from './DataSourceCard'; import { isDataSourceMatch } from './utils'; const CUSTOM_DESCRIPTIONS_BY_UID: Record<string, string> = { grafana: 'Discover visualizations using mock data', '-- Mixed --': 'Use multiple data sources', '-- Dashboard --': 'Reuse query results from other visualizations', }; interface BuiltInDataSourceListProps { className?: string; current: DataSourceRef | string | null | undefined; onChange: (ds: DataSourceInstanceSettings) => void; // DS filters filter?: (ds: DataSourceInstanceSettings) => boolean; tracing?: boolean; mixed?: boolean; dashboard?: boolean; metrics?: boolean; type?: string | string[]; annotations?: boolean; variables?: boolean; alerting?: boolean; pluginId?: string; logs?: boolean; } export function BuiltInDataSourceList({ className, current, onChange, tracing, dashboard, mixed, metrics, type, annotations, variables, alerting, pluginId, logs, filter, }: BuiltInDataSourceListProps) { const grafanaDataSources = useDatasources({ tracing, dashboard, mixed, metrics, type, annotations, variables, alerting, pluginId, logs, }); const filteredResults = grafanaDataSources.filter((ds) => (filter ? filter?.(ds) : true) && !!ds.meta.builtIn); return ( <div className={className} data-testid="built-in-data-sources-list"> {filteredResults.map((ds) => { return ( <DataSourceCard key={ds.uid} ds={ds} description={CUSTOM_DESCRIPTIONS_BY_UID[ds.uid]} selected={isDataSourceMatch(ds, current)} onClick={() => onChange(ds)} /> ); })} </div> ); }