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);