import coreModule from '../../core/core_module'; import _ from 'lodash'; export class DataSourcesCtrl { datasources: any; unfiltered: any; navModel: any; searchQuery: string; /** @ngInject */ constructor(private $scope, private backendSrv, private datasourceSrv, private navModelSrv) { this.navModel = this.navModelSrv.getNav('cfg', 'datasources', 0); backendSrv.get('/api/datasources').then(result => { this.datasources = result; this.unfiltered = result; }); } onQueryUpdated() { let regex = new RegExp(this.searchQuery, 'ig'); this.datasources = _.filter(this.unfiltered, item => { return regex.test(item.name) || regex.test(item.type); }); } removeDataSourceConfirmed(ds) { this.backendSrv .delete('/api/datasources/' + ds.id) .then( () => { this.$scope.appEvent('alert-success', ['Datasource deleted', '']); }, () => { this.$scope.appEvent('alert-error', ['Unable to delete datasource', '']); } ) .then(() => { this.backendSrv.get('/api/datasources').then(result => { this.datasources = result; }); this.backendSrv.get('/api/frontend/settings').then(settings => { this.datasourceSrv.init(settings.datasources); }); }); } removeDataSource(ds) { this.$scope.appEvent('confirm-modal', { title: 'Delete', text: 'Are you sure you want to delete datasource ' + ds.name + '?', yesText: 'Delete', icon: 'fa-trash', onConfirm: () => { this.removeDataSourceConfirmed(ds); }, }); } } coreModule.controller('DataSourcesCtrl', DataSourcesCtrl);