| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- define([
- 'angular',
- 'lodash',
- 'app/core/config',
- ],
- function (angular, _, config) {
- 'use strict';
- var module = angular.module('grafana.controllers');
- var datasourceTypes = [];
- module.controller('DataSourceEditCtrl', function($scope, $q, backendSrv, $routeParams, $location, datasourceSrv) {
- $scope.httpConfigPartialSrc = 'app/features/org/partials/datasourceHttpConfig.html';
- var defaults = {name: '', type: 'graphite', url: '', access: 'proxy', jsonData: {}};
- $scope.indexPatternTypes = [
- {name: 'No pattern', value: undefined},
- {name: 'Hourly', value: 'Hourly', example: '[logstash-]YYYY.MM.DD.HH'},
- {name: 'Daily', value: 'Daily', example: '[logstash-]YYYY.MM.DD'},
- {name: 'Weekly', value: 'Weekly', example: '[logstash-]GGGG.WW'},
- {name: 'Monthly', value: 'Monthly', example: '[logstash-]YYYY.MM'},
- {name: 'Yearly', value: 'Yearly', example: '[logstash-]YYYY'},
- ];
- $scope.esVersions = [
- {name: '1.x', value: 1},
- {name: '2.x', value: 2},
- ];
- $scope.init = function() {
- $scope.isNew = true;
- $scope.datasources = [];
- $scope.loadDatasourceTypes().then(function() {
- if ($routeParams.id) {
- $scope.getDatasourceById($routeParams.id);
- } else {
- $scope.current = angular.copy(defaults);
- $scope.typeChanged();
- }
- });
- };
- $scope.loadDatasourceTypes = function() {
- if (datasourceTypes.length > 0) {
- $scope.types = datasourceTypes;
- return $q.when(null);
- }
- return backendSrv.get('/api/datasources/plugins').then(function(plugins) {
- datasourceTypes = plugins;
- $scope.types = plugins;
- });
- };
- $scope.getDatasourceById = function(id) {
- backendSrv.get('/api/datasources/' + id).then(function(ds) {
- $scope.isNew = false;
- $scope.current = ds;
- $scope.typeChanged();
- });
- };
- $scope.typeChanged = function() {
- $scope.datasourceMeta = $scope.types[$scope.current.type];
- };
- $scope.updateFrontendSettings = function() {
- return backendSrv.get('/api/frontend/settings').then(function(settings) {
- config.datasources = settings.datasources;
- config.defaultDatasource = settings.defaultDatasource;
- datasourceSrv.init();
- });
- };
- $scope.testDatasource = function() {
- $scope.testing = { done: false };
- datasourceSrv.get($scope.current.name).then(function(datasource) {
- if (!datasource.testDatasource) {
- $scope.testing.message = 'Data source does not support test connection feature.';
- $scope.testing.status = 'warning';
- $scope.testing.title = 'Unknown';
- return;
- }
- return datasource.testDatasource().then(function(result) {
- $scope.testing.message = result.message;
- $scope.testing.status = result.status;
- $scope.testing.title = result.title;
- }, function(err) {
- if (err.statusText) {
- $scope.testing.message = err.statusText;
- $scope.testing.title = "HTTP Error";
- } else {
- $scope.testing.message = err.message;
- $scope.testing.title = "Unknown error";
- }
- });
- }).finally(function() {
- $scope.testing.done = true;
- });
- };
- $scope.saveChanges = function(test) {
- if (!$scope.editForm.$valid) {
- return;
- }
- if ($scope.current.id) {
- return backendSrv.put('/api/datasources/' + $scope.current.id, $scope.current).then(function() {
- $scope.updateFrontendSettings().then(function() {
- if (test) {
- $scope.testDatasource();
- } else {
- $location.path('datasources');
- }
- });
- });
- } else {
- return backendSrv.post('/api/datasources', $scope.current).then(function(result) {
- $scope.updateFrontendSettings();
- $location.path('datasources/edit/' + result.id);
- });
- }
- };
- $scope.indexPatternTypeChanged = function() {
- var def = _.findWhere($scope.indexPatternTypes, {value: $scope.current.jsonData.interval});
- $scope.current.database = def.example || 'es-index-name';
- };
- $scope.init();
- });
- });
|