From 18ffee37656a85bc3085ebd4760586a2f1bd44bf Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Wed, 15 Nov 2017 16:52:20 +0300 Subject: [PATCH] directive for multiple ds selection --- .../datasource-selector.directive.js | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/panel-triggers/datasource-selector.directive.js diff --git a/src/panel-triggers/datasource-selector.directive.js b/src/panel-triggers/datasource-selector.directive.js new file mode 100644 index 0000000..5e7006c --- /dev/null +++ b/src/panel-triggers/datasource-selector.directive.js @@ -0,0 +1,49 @@ +import angular from 'angular'; +import _ from 'lodash'; + +const template = ` + + +`; + +angular +.module('grafana.directives') +.directive('datasourceSelector', () => { + return { + scope: { + datasources: "=", + options: "=", + onChange: "&" + }, + controller: DatasourceSelectorCtrl, + controllerAs: 'ctrl', + template: template + }; +}); + +class DatasourceSelectorCtrl { + + /** @ngInject */ + constructor($scope) { + this.scope = $scope; + let datasources = $scope.datasources; + let options = $scope.options; + this.dsOptions = { + multi: true, + current: {value: datasources, text: datasources.join(" + ")}, + options: _.map(options, (ds) => { + return {text: ds, value: ds}; + }) + }; + } + + onChange(updatedOptions) { + let newDataSources = updatedOptions.current.value; + this.scope.datasources = newDataSources; + + // Run after model was changed + this.scope.$$postDigest(() => { + this.scope.onChange(); + }); + } +}