mirror of
https://github.com/grafana/grafana.git
synced 2025-02-13 09:05:45 -06:00
* WIP: dashboard panel redux * Progress * Progress * Changing plugin type * Progress * Updated * Progess * Fixed timing issue * Updated * Fixed unit tests * Fixed issue in dashboard page * Updated test
39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
import { getBackendSrv } from '@grafana/runtime';
|
|
import { PanelPlugin } from '@grafana/data';
|
|
import { ThunkResult } from 'app/types';
|
|
import { pluginDashboardsLoad, pluginDashboardsLoaded, pluginsLoaded, panelPluginLoaded } from './reducers';
|
|
import { importPanelPlugin } from 'app/features/plugins/plugin_loader';
|
|
|
|
export function loadPlugins(): ThunkResult<void> {
|
|
return async dispatch => {
|
|
const result = await getBackendSrv().get('api/plugins', { embedded: 0 });
|
|
dispatch(pluginsLoaded(result));
|
|
};
|
|
}
|
|
|
|
export function loadPluginDashboards(): ThunkResult<void> {
|
|
return async (dispatch, getStore) => {
|
|
dispatch(pluginDashboardsLoad());
|
|
const dataSourceType = getStore().dataSources.dataSource.type;
|
|
const response = await getBackendSrv().get(`api/plugins/${dataSourceType}/dashboards`);
|
|
dispatch(pluginDashboardsLoaded(response));
|
|
};
|
|
}
|
|
|
|
export function loadPanelPlugin(pluginId: string): ThunkResult<Promise<PanelPlugin>> {
|
|
return async (dispatch, getStore) => {
|
|
let plugin = getStore().plugins.panels[pluginId];
|
|
|
|
if (!plugin) {
|
|
plugin = await importPanelPlugin(pluginId);
|
|
|
|
// second check to protect against raise condition
|
|
if (!getStore().plugins.panels[pluginId]) {
|
|
dispatch(panelPluginLoaded(plugin));
|
|
}
|
|
}
|
|
|
|
return plugin;
|
|
};
|
|
}
|