diff --git a/packages/grafana-ui/src/types/datasource.ts b/packages/grafana-ui/src/types/datasource.ts index 13a41f94cb5..fc404feb623 100644 --- a/packages/grafana-ui/src/types/datasource.ts +++ b/packages/grafana-ui/src/types/datasource.ts @@ -55,3 +55,31 @@ export interface DataSourceApi { */ testDatasource(): Promise; } + +export interface DataSourceSettings { + id: number; + orgId: number; + name: string; + typeLogoUrl: string; + type: string; + access: string; + url: string; + password: string; + user: string; + database: string; + basicAuth: boolean; + basicAuthPassword: string; + basicAuthUser: string; + isDefault: boolean; + jsonData: { authType: string; defaultRegion: string }; + readOnly: boolean; + withCredentials: boolean; +} + +export interface DataSourceSelectItem { + name: string; + value: string | null; + meta: PluginMeta; + sort: string; +} + diff --git a/public/app/core/components/Select/DataSourcePicker.tsx b/public/app/core/components/Select/DataSourcePicker.tsx index 372c4cd4013..d028682b215 100644 --- a/public/app/core/components/Select/DataSourcePicker.tsx +++ b/public/app/core/components/Select/DataSourcePicker.tsx @@ -6,7 +6,7 @@ import _ from 'lodash'; import { Select } from '@grafana/ui'; // Types -import { DataSourceSelectItem } from 'app/types'; +import { DataSourceSelectItem } from '@grafana/ui/src/types'; export interface Props { onChange: (ds: DataSourceSelectItem) => void; diff --git a/public/app/features/dashboard/panel_editor/QueriesTab.tsx b/public/app/features/dashboard/panel_editor/QueriesTab.tsx index 4579e1c4a7b..5e90187d171 100644 --- a/public/app/features/dashboard/panel_editor/QueriesTab.tsx +++ b/public/app/features/dashboard/panel_editor/QueriesTab.tsx @@ -18,8 +18,7 @@ import config from 'app/core/config'; // Types import { PanelModel } from '../panel_model'; import { DashboardModel } from '../dashboard_model'; -import { DataQuery } from '@grafana/ui'; -import { DataSourceSelectItem } from 'app/types'; +import { DataQuery, DataSourceSelectItem } from '@grafana/ui/src/types'; import { PluginHelp } from 'app/core/components/PluginHelp/PluginHelp'; interface Props { diff --git a/public/app/features/dashboard/panel_editor/QueryOptions.tsx b/public/app/features/dashboard/panel_editor/QueryOptions.tsx index d6187a89b7b..61cdbefbce2 100644 --- a/public/app/features/dashboard/panel_editor/QueryOptions.tsx +++ b/public/app/features/dashboard/panel_editor/QueryOptions.tsx @@ -14,7 +14,8 @@ import { FormLabel } from '@grafana/ui'; // Types import { PanelModel } from '../panel_model'; -import { ValidationEvents, DataSourceSelectItem } from 'app/types'; +import { DataSourceSelectItem } from '@grafana/ui/src/types'; +import { ValidationEvents } from 'app/types'; const timeRangeValidationEvents: ValidationEvents = { [EventsWithValidation.onBlur]: [ diff --git a/public/app/features/datasources/DataSourceDashboards.test.tsx b/public/app/features/datasources/DataSourceDashboards.test.tsx index 7409572b9cd..1cc4933519e 100644 --- a/public/app/features/datasources/DataSourceDashboards.test.tsx +++ b/public/app/features/datasources/DataSourceDashboards.test.tsx @@ -1,13 +1,14 @@ import React from 'react'; import { shallow } from 'enzyme'; import { DataSourceDashboards, Props } from './DataSourceDashboards'; -import { DataSource, NavModel, PluginDashboard } from 'app/types'; +import { DataSourceSettings } from '@grafana/ui/src/types'; +import { NavModel, PluginDashboard } from 'app/types'; const setup = (propOverrides?: object) => { const props: Props = { navModel: {} as NavModel, dashboards: [] as PluginDashboard[], - dataSource: {} as DataSource, + dataSource: {} as DataSourceSettings, pageId: 1, importDashboard: jest.fn(), loadDataSource: jest.fn(), diff --git a/public/app/features/datasources/DataSourceDashboards.tsx b/public/app/features/datasources/DataSourceDashboards.tsx index 51f9c9ca945..327908af44a 100644 --- a/public/app/features/datasources/DataSourceDashboards.tsx +++ b/public/app/features/datasources/DataSourceDashboards.tsx @@ -1,9 +1,13 @@ +// Libraries import React, { PureComponent } from 'react'; import { hot } from 'react-hot-loader'; import { connect } from 'react-redux'; + +// Components import PageHeader from 'app/core/components/PageHeader/PageHeader'; import DashboardTable from './DashboardsTable'; -import { DataSource, NavModel, PluginDashboard } from 'app/types'; + +// Actions & Selectors import { getNavModel } from 'app/core/selectors/navModel'; import { getRouteParamsId } from 'app/core/selectors/location'; import { loadDataSource } from './state/actions'; @@ -11,10 +15,14 @@ import { loadPluginDashboards } from '../plugins/state/actions'; import { importDashboard, removeDashboard } from '../dashboard/state/actions'; import { getDataSource } from './state/selectors'; +// Types +import { NavModel, PluginDashboard } from 'app/types'; +import { DataSourceSettings } from '@grafana/ui/src/types'; + export interface Props { navModel: NavModel; dashboards: PluginDashboard[]; - dataSource: DataSource; + dataSource: DataSourceSettings; pageId: number; importDashboard: typeof importDashboard; loadDataSource: typeof loadDataSource; diff --git a/public/app/features/datasources/DataSourcesList.tsx b/public/app/features/datasources/DataSourcesList.tsx index 0895b92461b..0da12263aed 100644 --- a/public/app/features/datasources/DataSourcesList.tsx +++ b/public/app/features/datasources/DataSourcesList.tsx @@ -1,11 +1,16 @@ +// Libraries import React, { PureComponent } from 'react'; import classNames from 'classnames'; + +// Components import DataSourcesListItem from './DataSourcesListItem'; -import { DataSource } from 'app/types'; + +// Types +import { DataSourceSettings } from '@grafana/ui/src/types'; import { LayoutMode, LayoutModes } from '../../core/components/LayoutSelector/LayoutSelector'; export interface Props { - dataSources: DataSource[]; + dataSources: DataSourceSettings[]; layoutMode: LayoutMode; } diff --git a/public/app/features/datasources/DataSourcesListItem.tsx b/public/app/features/datasources/DataSourcesListItem.tsx index a4fedb893fb..157e9447852 100644 --- a/public/app/features/datasources/DataSourcesListItem.tsx +++ b/public/app/features/datasources/DataSourcesListItem.tsx @@ -1,8 +1,8 @@ import React, { PureComponent } from 'react'; -import { DataSource } from 'app/types'; +import { DataSourceSettings } from '@grafana/ui/src/types'; export interface Props { - dataSource: DataSource; + dataSource: DataSourceSettings; } export class DataSourcesListItem extends PureComponent { diff --git a/public/app/features/datasources/DataSourcesListPage.test.tsx b/public/app/features/datasources/DataSourcesListPage.test.tsx index 33f5790978d..44ef7a1cc49 100644 --- a/public/app/features/datasources/DataSourcesListPage.test.tsx +++ b/public/app/features/datasources/DataSourcesListPage.test.tsx @@ -1,13 +1,14 @@ import React from 'react'; import { shallow } from 'enzyme'; import { DataSourcesListPage, Props } from './DataSourcesListPage'; -import { DataSource, NavModel } from 'app/types'; +import { NavModel } from 'app/types'; +import { DataSourceSettings } from '@grafana/ui/src/types'; import { LayoutModes } from '../../core/components/LayoutSelector/LayoutSelector'; import { getMockDataSources } from './__mocks__/dataSourcesMocks'; const setup = (propOverrides?: object) => { const props: Props = { - dataSources: [] as DataSource[], + dataSources: [] as DataSourceSettings[], layoutMode: LayoutModes.Grid, loadDataSources: jest.fn(), navModel: { diff --git a/public/app/features/datasources/DataSourcesListPage.tsx b/public/app/features/datasources/DataSourcesListPage.tsx index 884df929319..b0b2ee56169 100644 --- a/public/app/features/datasources/DataSourcesListPage.tsx +++ b/public/app/features/datasources/DataSourcesListPage.tsx @@ -1,12 +1,20 @@ +// Libraries import React, { PureComponent } from 'react'; import { connect } from 'react-redux'; import { hot } from 'react-hot-loader'; + +// Components import Page from 'app/core/components/Page/Page'; import OrgActionBar from 'app/core/components/OrgActionBar/OrgActionBar'; import EmptyListCTA from 'app/core/components/EmptyListCTA/EmptyListCTA'; import DataSourcesList from './DataSourcesList'; -import { DataSource, NavModel, StoreState } from 'app/types'; + +// Types +import { DataSourceSettings } from '@grafana/ui/src/types'; +import { NavModel, StoreState } from 'app/types'; import { LayoutMode } from 'app/core/components/LayoutSelector/LayoutSelector'; + +// Actions import { loadDataSources, setDataSourcesLayoutMode, setDataSourcesSearchQuery } from './state/actions'; import { getNavModel } from 'app/core/selectors/navModel'; @@ -19,7 +27,7 @@ import { export interface Props { navModel: NavModel; - dataSources: DataSource[]; + dataSources: DataSourceSettings[]; dataSourcesCount: number; layoutMode: LayoutMode; searchQuery: string; diff --git a/public/app/features/datasources/__mocks__/dataSourcesMocks.ts b/public/app/features/datasources/__mocks__/dataSourcesMocks.ts index 755d8eef74a..6658464ef7f 100644 --- a/public/app/features/datasources/__mocks__/dataSourcesMocks.ts +++ b/public/app/features/datasources/__mocks__/dataSourcesMocks.ts @@ -1,6 +1,6 @@ -import { DataSource } from 'app/types'; +import { DataSourceSettings } from '@grafana/ui/src/types'; -export const getMockDataSources = (amount: number): DataSource[] => { +export const getMockDataSources = (amount: number): DataSourceSettings[] => { const dataSources = []; for (let i = 0; i <= amount; i++) { @@ -25,7 +25,7 @@ export const getMockDataSources = (amount: number): DataSource[] => { return dataSources; }; -export const getMockDataSource = (): DataSource => { +export const getMockDataSource = (): DataSourceSettings => { return { access: '', basicAuth: false, diff --git a/public/app/features/datasources/settings/DataSourceSettings.test.tsx b/public/app/features/datasources/settings/DataSourceSettingsPage.test.tsx similarity index 84% rename from public/app/features/datasources/settings/DataSourceSettings.test.tsx rename to public/app/features/datasources/settings/DataSourceSettingsPage.test.tsx index d6c934aa6a4..8efc92be5be 100644 --- a/public/app/features/datasources/settings/DataSourceSettings.test.tsx +++ b/public/app/features/datasources/settings/DataSourceSettingsPage.test.tsx @@ -1,7 +1,8 @@ import React from 'react'; import { shallow } from 'enzyme'; -import { DataSourceSettings, Props } from './DataSourceSettings'; -import { DataSource, NavModel } from '../../../types'; +import { DataSourceSettingsPage, Props } from './DataSourceSettingsPage'; +import { NavModel } from 'app/types'; +import { DataSourceSettings } from '@grafana/ui'; import { getMockDataSource } from '../__mocks__/dataSourcesMocks'; import { getMockPlugin } from '../../plugins/__mocks__/pluginMocks'; @@ -20,7 +21,7 @@ const setup = (propOverrides?: object) => { Object.assign(props, propOverrides); - return shallow(); + return shallow(); }; describe('Render', () => { @@ -32,7 +33,7 @@ describe('Render', () => { it('should render loader', () => { const wrapper = setup({ - dataSource: {} as DataSource, + dataSource: {} as DataSourceSettings, }); expect(wrapper).toMatchSnapshot(); diff --git a/public/app/features/datasources/settings/DataSourceSettings.tsx b/public/app/features/datasources/settings/DataSourceSettingsPage.tsx similarity index 94% rename from public/app/features/datasources/settings/DataSourceSettings.tsx rename to public/app/features/datasources/settings/DataSourceSettingsPage.tsx index 5786bd1db57..87efed266b0 100644 --- a/public/app/features/datasources/settings/DataSourceSettings.tsx +++ b/public/app/features/datasources/settings/DataSourceSettingsPage.tsx @@ -1,28 +1,34 @@ +// Libraries import React, { PureComponent } from 'react'; import { hot } from 'react-hot-loader'; import { connect } from 'react-redux'; +// Components import PageHeader from 'app/core/components/PageHeader/PageHeader'; import PageLoader from 'app/core/components/PageLoader/PageLoader'; import PluginSettings from './PluginSettings'; import BasicSettings from './BasicSettings'; import ButtonRow from './ButtonRow'; +// Services & Utils import appEvents from 'app/core/app_events'; import { getBackendSrv } from 'app/core/services/backend_srv'; import { getDatasourceSrv } from 'app/features/plugins/datasource_srv'; +// Actions & selectors import { getDataSource, getDataSourceMeta } from '../state/selectors'; import { deleteDataSource, loadDataSource, setDataSourceName, setIsDefault, updateDataSource } from '../state/actions'; import { getNavModel } from 'app/core/selectors/navModel'; import { getRouteParamsId } from 'app/core/selectors/location'; -import { DataSource, NavModel, Plugin } from 'app/types/'; +// Types +import { NavModel, Plugin } from 'app/types/'; +import { DataSourceSettings } from '@grafana/ui/src/types/'; import { getDataSourceLoadingNav } from '../state/navModel'; export interface Props { navModel: NavModel; - dataSource: DataSource; + dataSource: DataSourceSettings; dataSourceMeta: Plugin; pageId: number; deleteDataSource: typeof deleteDataSource; @@ -33,7 +39,7 @@ export interface Props { } interface State { - dataSource: DataSource; + dataSource: DataSourceSettings; isTesting?: boolean; testingMessage?: string; testingStatus?: string; @@ -44,12 +50,12 @@ enum DataSourceStates { Beta = 'beta', } -export class DataSourceSettings extends PureComponent { +export class DataSourceSettingsPage extends PureComponent { constructor(props) { super(props); this.state = { - dataSource: {} as DataSource, + dataSource: {} as DataSourceSettings, }; } @@ -246,4 +252,4 @@ const mapDispatchToProps = { setIsDefault, }; -export default hot(module)(connect(mapStateToProps, mapDispatchToProps)(DataSourceSettings)); +export default hot(module)(connect(mapStateToProps, mapDispatchToProps)(DataSourceSettingsPage)); diff --git a/public/app/features/datasources/settings/PluginSettings.tsx b/public/app/features/datasources/settings/PluginSettings.tsx index e0b742985cc..8b65accd50a 100644 --- a/public/app/features/datasources/settings/PluginSettings.tsx +++ b/public/app/features/datasources/settings/PluginSettings.tsx @@ -1,20 +1,21 @@ import React, { PureComponent } from 'react'; import _ from 'lodash'; -import { DataSource, Plugin } from 'app/types/'; +import { Plugin } from 'app/types'; +import { DataSourceSettings } from '@grafana/ui/src/types'; import { getAngularLoader, AngularComponent } from 'app/core/services/AngularLoader'; export interface Props { - dataSource: DataSource; + dataSource: DataSourceSettings; dataSourceMeta: Plugin; - onModelChange: (dataSource: DataSource) => void; + onModelChange: (dataSource: DataSourceSettings) => void; } export class PluginSettings extends PureComponent { element: any; component: AngularComponent; scopeProps: { - ctrl: { datasourceMeta: Plugin; current: DataSource }; - onModelChanged: (dataSource: DataSource) => void; + ctrl: { datasourceMeta: Plugin; current: DataSourceSettings }; + onModelChanged: (dataSource: DataSourceSettings) => void; }; constructor(props) { @@ -51,7 +52,7 @@ export class PluginSettings extends PureComponent { } } - onModelChanged = (dataSource: DataSource) => { + onModelChanged = (dataSource: DataSourceSettings) => { this.props.onModelChange(dataSource); }; diff --git a/public/app/features/datasources/state/actions.ts b/public/app/features/datasources/state/actions.ts index fa9d47eb6a1..008dc9fe816 100644 --- a/public/app/features/datasources/state/actions.ts +++ b/public/app/features/datasources/state/actions.ts @@ -6,7 +6,8 @@ import { LayoutMode } from 'app/core/components/LayoutSelector/LayoutSelector'; import { updateLocation, updateNavIndex, UpdateNavIndexAction } from 'app/core/actions'; import { UpdateLocationAction } from 'app/core/actions/location'; import { buildNavModel } from './navModel'; -import { DataSource, Plugin, StoreState } from 'app/types'; +import { DataSourceSettings } from '@grafana/ui/src/types'; +import { Plugin, StoreState } from 'app/types'; export enum ActionTypes { LoadDataSources = 'LOAD_DATA_SOURCES', @@ -22,7 +23,7 @@ export enum ActionTypes { interface LoadDataSourcesAction { type: ActionTypes.LoadDataSources; - payload: DataSource[]; + payload: DataSourceSettings[]; } interface SetDataSourcesSearchQueryAction { @@ -47,7 +48,7 @@ interface SetDataSourceTypeSearchQueryAction { interface LoadDataSourceAction { type: ActionTypes.LoadDataSource; - payload: DataSource; + payload: DataSourceSettings; } interface LoadDataSourceMetaAction { @@ -65,12 +66,12 @@ interface SetIsDefaultAction { payload: boolean; } -const dataSourcesLoaded = (dataSources: DataSource[]): LoadDataSourcesAction => ({ +const dataSourcesLoaded = (dataSources: DataSourceSettings[]): LoadDataSourcesAction => ({ type: ActionTypes.LoadDataSources, payload: dataSources, }); -const dataSourceLoaded = (dataSource: DataSource): LoadDataSourceAction => ({ +const dataSourceLoaded = (dataSource: DataSourceSettings): LoadDataSourceAction => ({ type: ActionTypes.LoadDataSource, payload: dataSource, }); @@ -171,7 +172,7 @@ export function loadDataSourceTypes(): ThunkResult { }; } -export function updateDataSource(dataSource: DataSource): ThunkResult { +export function updateDataSource(dataSource: DataSourceSettings): ThunkResult { return async dispatch => { await getBackendSrv().put(`/api/datasources/${dataSource.id}`, dataSource); await updateFrontendSettings(); diff --git a/public/app/features/datasources/state/navModel.ts b/public/app/features/datasources/state/navModel.ts index 49ee4e770c0..b0b121a9997 100644 --- a/public/app/features/datasources/state/navModel.ts +++ b/public/app/features/datasources/state/navModel.ts @@ -1,8 +1,8 @@ -import { DataSource, NavModel, NavModelItem } from 'app/types'; -import { PluginMeta } from '@grafana/ui/src/types'; +import { NavModel, NavModelItem } from 'app/types'; +import { PluginMeta, DataSourceSettings } from '@grafana/ui/src/types'; import config from 'app/core/config'; -export function buildNavModel(dataSource: DataSource, pluginMeta: PluginMeta): NavModelItem { +export function buildNavModel(dataSource: DataSourceSettings, pluginMeta: PluginMeta): NavModelItem { const navModel = { img: pluginMeta.info.logos.large, id: 'datasource-' + dataSource.id, diff --git a/public/app/features/datasources/state/reducers.ts b/public/app/features/datasources/state/reducers.ts index 6e86c304fa7..7be93f5a644 100644 --- a/public/app/features/datasources/state/reducers.ts +++ b/public/app/features/datasources/state/reducers.ts @@ -1,10 +1,11 @@ -import { DataSource, DataSourcesState, Plugin } from 'app/types'; +import { DataSourcesState, Plugin } from 'app/types'; +import { DataSourceSettings } from '@grafana/ui/src/types'; import { Action, ActionTypes } from './actions'; -import { LayoutModes } from '../../../core/components/LayoutSelector/LayoutSelector'; +import { LayoutModes } from 'app/core/components/LayoutSelector/LayoutSelector'; const initialState: DataSourcesState = { - dataSources: [] as DataSource[], - dataSource: {} as DataSource, + dataSources: [] as DataSourceSettings[], + dataSource: {} as DataSourceSettings, layoutMode: LayoutModes.List, searchQuery: '', dataSourcesCount: 0, diff --git a/public/app/features/datasources/state/selectors.ts b/public/app/features/datasources/state/selectors.ts index 2466e465d1d..bb95d95e59a 100644 --- a/public/app/features/datasources/state/selectors.ts +++ b/public/app/features/datasources/state/selectors.ts @@ -1,4 +1,4 @@ -import { DataSource } from '../../../types'; +import { DataSourceSettings } from '@grafana/ui/src/types'; export const getDataSources = state => { const regex = new RegExp(state.searchQuery, 'i'); @@ -16,11 +16,11 @@ export const getDataSourceTypes = state => { }); }; -export const getDataSource = (state, dataSourceId): DataSource | null => { +export const getDataSource = (state, dataSourceId): DataSourceSettings | null => { if (state.dataSource.id === parseInt(dataSourceId, 10)) { return state.dataSource; } - return {} as DataSource; + return {} as DataSourceSettings; }; export const getDataSourceMeta = (state, type): Plugin => { diff --git a/public/app/features/explore/Explore.tsx b/public/app/features/explore/Explore.tsx index 60d7428b53b..d77448c10d7 100644 --- a/public/app/features/explore/Explore.tsx +++ b/public/app/features/explore/Explore.tsx @@ -9,7 +9,7 @@ import { AutoSizer } from 'react-virtualized'; import store from 'app/core/store'; // Components -import { DataSourceSelectItem } from 'app/types/datasources'; +import { DataSourceSelectItem } from '@grafana/ui/src/types'; import { DataSourcePicker } from 'app/core/components/Select/DataSourcePicker'; import { Alert } from './Error'; import ErrorBoundary from './ErrorBoundary'; diff --git a/public/app/features/explore/state/actionTypes.ts b/public/app/features/explore/state/actionTypes.ts index df921f9ec29..850f2137541 100644 --- a/public/app/features/explore/state/actionTypes.ts +++ b/public/app/features/explore/state/actionTypes.ts @@ -1,6 +1,6 @@ // Types import { Emitter } from 'app/core/core'; -import { RawTimeRange, TimeRange, DataQuery } from '@grafana/ui'; +import { RawTimeRange, TimeRange, DataQuery, DataSourceSelectItem } from '@grafana/ui/src/types'; import { ExploreId, ExploreItemState, @@ -9,7 +9,6 @@ import { ResultType, QueryTransaction, } from 'app/types/explore'; -import { DataSourceSelectItem } from 'app/types/datasources'; export enum ActionTypes { AddQueryRow = 'explore/ADD_QUERY_ROW', diff --git a/public/app/features/explore/state/actions.ts b/public/app/features/explore/state/actions.ts index 80f28a7fc6b..e4d90562332 100644 --- a/public/app/features/explore/state/actions.ts +++ b/public/app/features/explore/state/actions.ts @@ -16,9 +16,8 @@ import { import { updateLocation } from 'app/core/actions'; import store from 'app/core/store'; -import { DataSourceSelectItem } from 'app/types/datasources'; import { StoreState } from 'app/types'; -import { DataQuery } from '@grafana/ui/src/types'; +import { DataQuery, DataSourceSelectItem } from '@grafana/ui/src/types'; import { getDatasourceSrv } from 'app/features/plugins/datasource_srv'; import { ExploreId, diff --git a/public/app/features/plugins/datasource_srv.ts b/public/app/features/plugins/datasource_srv.ts index a063ac2ce1c..9695cc621b7 100644 --- a/public/app/features/plugins/datasource_srv.ts +++ b/public/app/features/plugins/datasource_srv.ts @@ -1,14 +1,16 @@ +// Libraries import _ from 'lodash'; import coreModule from 'app/core/core_module'; +// Services & Utils import config from 'app/core/config'; import { importPluginModule } from './plugin_loader'; -import { DataSourceApi } from '@grafana/ui/src/types'; -import { DataSource, DataSourceSelectItem } from 'app/types'; +// Types +import { DataSourceApi, DataSourceSelectItem } from '@grafana/ui/src/types'; export class DatasourceSrv { - datasources: { [name: string]: DataSource }; + datasources: { [name: string]: DataSourceApi }; /** @ngInject */ constructor(private $q, private $injector, private $rootScope, private templateSrv) { @@ -59,7 +61,7 @@ export class DatasourceSrv { throw new Error('Plugin module is missing Datasource constructor'); } - const instance: DataSource = this.$injector.instantiate(plugin.Datasource, { instanceSettings: dsConfig }); + const instance: DataSourceApi = this.$injector.instantiate(plugin.Datasource, { instanceSettings: dsConfig }); instance.meta = pluginDef; instance.name = name; instance.pluginExports = plugin; diff --git a/public/app/features/plugins/state/navModel.ts b/public/app/features/plugins/state/navModel.ts index e08b8e05adc..1e7ed0cdf27 100644 --- a/public/app/features/plugins/state/navModel.ts +++ b/public/app/features/plugins/state/navModel.ts @@ -1,9 +1,14 @@ +// Libraries import _ from 'lodash'; -import { DataSource, NavModel } from 'app/types'; -import { PluginMeta } from '@grafana/ui/src/types'; + +// Utils & Services import config from 'app/core/config'; -export function buildNavModel(ds: DataSource, plugin: PluginMeta, currentPage: string): NavModel { +// Types +import { NavModel } from 'app/types'; +import { PluginMeta, DataSourceSettings } from '@grafana/ui/src/types'; + +export function buildNavModel(ds: DataSourceSettings, plugin: PluginMeta, currentPage: string): NavModel { let title = 'New'; const subTitle = `Type: ${plugin.name}`; diff --git a/public/app/routes/routes.ts b/public/app/routes/routes.ts index d3b3488f1fe..4b24f69b74e 100644 --- a/public/app/routes/routes.ts +++ b/public/app/routes/routes.ts @@ -14,7 +14,7 @@ import DataSourcesListPage from 'app/features/datasources/DataSourcesListPage'; import NewDataSourcePage from '../features/datasources/NewDataSourcePage'; import UsersListPage from 'app/features/users/UsersListPage'; import DataSourceDashboards from 'app/features/datasources/DataSourceDashboards'; -import DataSourceSettings from '../features/datasources/settings/DataSourceSettings'; +import DataSourceSettingsPage from '../features/datasources/settings/DataSourceSettingsPage'; import OrgDetailsPage from '../features/org/OrgDetailsPage'; /** @ngInject */ @@ -78,7 +78,7 @@ export function setupAngularRoutes($routeProvider, $locationProvider) { .when('/datasources/edit/:id/', { template: '', resolve: { - component: () => DataSourceSettings, + component: () => DataSourceSettingsPage, }, }) .when('/datasources/edit/:id/dashboards', { diff --git a/public/app/types/datasources.ts b/public/app/types/datasources.ts index 234085ee49e..729760b41ea 100644 --- a/public/app/types/datasources.ts +++ b/public/app/types/datasources.ts @@ -1,44 +1,15 @@ import { LayoutMode } from '../core/components/LayoutSelector/LayoutSelector'; import { Plugin } from './plugins'; -import { PluginExports, PluginMeta } from '@grafana/ui/src/types'; - -export interface DataSource { - id: number; - orgId: number; - name: string; - typeLogoUrl: string; - type: string; - access: string; - url: string; - password: string; - user: string; - database: string; - basicAuth: boolean; - basicAuthPassword: string; - basicAuthUser: string; - isDefault: boolean; - jsonData: { authType: string; defaultRegion: string }; - readOnly: boolean; - withCredentials: boolean; - meta?: PluginMeta; - pluginExports?: PluginExports; -} - -export interface DataSourceSelectItem { - name: string; - value: string | null; - meta: PluginMeta; - sort: string; -} +import { DataSourceSettings } from '@grafana/ui/src/types'; export interface DataSourcesState { - dataSources: DataSource[]; + dataSources: DataSourceSettings[]; searchQuery: string; dataSourceTypeSearchQuery: string; layoutMode: LayoutMode; dataSourcesCount: number; dataSourceTypes: Plugin[]; - dataSource: DataSource; + dataSource: DataSourceSettings; dataSourceMeta: Plugin; hasFetched: boolean; } diff --git a/public/app/types/explore.ts b/public/app/types/explore.ts index 80b6ff922cf..218760f7578 100644 --- a/public/app/types/explore.ts +++ b/public/app/types/explore.ts @@ -1,10 +1,9 @@ import { Value } from 'slate'; -import { RawTimeRange, TimeRange, DataQuery } from '@grafana/ui'; +import { RawTimeRange, TimeRange, DataQuery, DataSourceSelectItem } from '@grafana/ui'; import { Emitter } from 'app/core/core'; import { LogsModel } from 'app/core/logs_model'; import TableModel from 'app/core/table_model'; -import { DataSourceSelectItem } from 'app/types/datasources'; export interface CompletionItem { /**