├── .gitignore ├── Gruntfile.js ├── LICENSE ├── README.md ├── dist ├── README.md ├── beans │ ├── aggregators │ │ ├── aggregator.d.ts │ │ ├── aggregator.js │ │ ├── aggregator.js.map │ │ ├── aggregator.ts │ │ ├── aggregators.d.ts │ │ ├── aggregators.js │ │ ├── aggregators.js.map │ │ ├── aggregators.ts │ │ ├── divide_aggregator.d.ts │ │ ├── divide_aggregator.js │ │ ├── divide_aggregator.js.map │ │ ├── divide_aggregator.ts │ │ ├── parameters │ │ │ ├── aggregator_parameter.d.ts │ │ │ ├── aggregator_parameter.js │ │ │ ├── aggregator_parameter.js.map │ │ │ ├── aggregator_parameter.ts │ │ │ ├── alignment_aggregator_parameter.d.ts │ │ │ ├── alignment_aggregator_parameter.js │ │ │ ├── alignment_aggregator_parameter.js.map │ │ │ ├── alignment_aggregator_parameter.ts │ │ │ ├── any_aggregator_parameter.d.ts │ │ │ ├── any_aggregator_parameter.js │ │ │ ├── any_aggregator_parameter.js.map │ │ │ ├── any_aggregator_parameter.ts │ │ │ ├── enum_aggregator_parameter.d.ts │ │ │ ├── enum_aggregator_parameter.js │ │ │ ├── enum_aggregator_parameter.js.map │ │ │ ├── enum_aggregator_parameter.ts │ │ │ ├── limited_aggregator_parameter.d.ts │ │ │ ├── limited_aggregator_parameter.js │ │ │ ├── limited_aggregator_parameter.js.map │ │ │ ├── limited_aggregator_parameter.ts │ │ │ ├── sampling_aggregator_parameter.d.ts │ │ │ ├── sampling_aggregator_parameter.js │ │ │ ├── sampling_aggregator_parameter.js.map │ │ │ ├── sampling_aggregator_parameter.ts │ │ │ ├── sampling_unit_aggregator_parameter.d.ts │ │ │ ├── sampling_unit_aggregator_parameter.js │ │ │ ├── sampling_unit_aggregator_parameter.js.map │ │ │ └── sampling_unit_aggregator_parameter.ts │ │ ├── percentile_aggregator.d.ts │ │ ├── percentile_aggregator.js │ │ ├── percentile_aggregator.js.map │ │ ├── percentile_aggregator.ts │ │ ├── range_aggregator.d.ts │ │ ├── range_aggregator.js │ │ ├── range_aggregator.js.map │ │ ├── range_aggregator.ts │ │ ├── rate_aggregator.d.ts │ │ ├── rate_aggregator.js │ │ ├── rate_aggregator.js.map │ │ ├── rate_aggregator.ts │ │ ├── sampler_aggregator.d.ts │ │ ├── sampler_aggregator.js │ │ ├── sampler_aggregator.js.map │ │ ├── sampler_aggregator.ts │ │ ├── scale_aggregator.d.ts │ │ ├── scale_aggregator.js │ │ ├── scale_aggregator.js.map │ │ ├── scale_aggregator.ts │ │ ├── sma_aggregator.d.ts │ │ ├── sma_aggregator.js │ │ ├── sma_aggregator.js.map │ │ ├── sma_aggregator.ts │ │ ├── trim_aggregator.d.ts │ │ ├── trim_aggregator.js │ │ ├── trim_aggregator.js.map │ │ ├── trim_aggregator.ts │ │ ├── utils.d.ts │ │ ├── utils.js │ │ ├── utils.js.map │ │ └── utils.ts │ ├── function.d.ts │ ├── function.js │ ├── function.js.map │ ├── function.ts │ └── request │ │ ├── datapoints_query.d.ts │ │ ├── datapoints_query.js │ │ ├── datapoints_query.js.map │ │ ├── datapoints_query.ts │ │ ├── group_by.d.ts │ │ ├── group_by.js │ │ ├── group_by.js.map │ │ ├── group_by.ts │ │ ├── legacy_target_converter.d.ts │ │ ├── legacy_target_converter.js │ │ ├── legacy_target_converter.js.map │ │ ├── legacy_target_converter.ts │ │ ├── metric_query.d.ts │ │ ├── metric_query.js │ │ ├── metric_query.js.map │ │ ├── metric_query.ts │ │ ├── metric_tags.d.ts │ │ ├── metric_tags.js │ │ ├── metric_tags.js.map │ │ ├── metric_tags.ts │ │ ├── target.d.ts │ │ ├── target.js │ │ ├── target.js.map │ │ └── target.ts ├── controllers │ ├── templating_functions_ctrl.d.ts │ ├── templating_functions_ctrl.js │ ├── templating_functions_ctrl.js.map │ └── templating_functions_ctrl.ts ├── core │ ├── config_ctrl.d.ts │ ├── config_ctrl.js │ ├── config_ctrl.js.map │ ├── config_ctrl.ts │ ├── datasource.d.ts │ ├── datasource.js │ ├── datasource.js.map │ ├── datasource.ts │ ├── metric_names_store.d.ts │ ├── metric_names_store.js │ ├── metric_names_store.js.map │ ├── metric_names_store.ts │ ├── query_ctrl.d.ts │ ├── query_ctrl.js │ ├── query_ctrl.js.map │ ├── query_ctrl.ts │ ├── request │ │ ├── group_bys_builder.d.ts │ │ ├── group_bys_builder.js │ │ ├── group_bys_builder.js.map │ │ ├── group_bys_builder.ts │ │ ├── parameter_object_builder.d.ts │ │ ├── parameter_object_builder.js │ │ ├── parameter_object_builder.js.map │ │ ├── parameter_object_builder.ts │ │ ├── query_builder.d.ts │ │ ├── query_builder.js │ │ ├── query_builder.js.map │ │ ├── query_builder.ts │ │ ├── sampling_converter.d.ts │ │ ├── sampling_converter.js │ │ ├── sampling_converter.js.map │ │ ├── sampling_converter.ts │ │ ├── sampling_parameter_converter.d.ts │ │ ├── sampling_parameter_converter.js │ │ ├── sampling_parameter_converter.js.map │ │ ├── sampling_parameter_converter.ts │ │ ├── target_validator.d.ts │ │ ├── target_validator.js │ │ ├── target_validator.js.map │ │ └── target_validator.ts │ └── response │ │ ├── response_handler.d.ts │ │ ├── response_handler.js │ │ ├── response_handler.js.map │ │ ├── response_handler.ts │ │ ├── series_name_builder.d.ts │ │ ├── series_name_builder.js │ │ ├── series_name_builder.js.map │ │ └── series_name_builder.ts ├── css │ └── plugin.css ├── directives │ ├── aggregator.d.ts │ ├── aggregator.js │ ├── aggregator.js.map │ ├── aggregator.ts │ ├── aggregator_editor.d.ts │ ├── aggregator_editor.js │ ├── aggregator_editor.js.map │ ├── aggregator_editor.ts │ ├── aggregators.d.ts │ ├── aggregators.js │ ├── aggregators.js.map │ ├── aggregators.ts │ ├── auto_value_switch.d.ts │ ├── auto_value_switch.js │ ├── auto_value_switch.js.map │ ├── auto_value_switch.ts │ ├── group_by │ │ ├── group_by_tags.d.ts │ │ ├── group_by_tags.js │ │ ├── group_by_tags.js.map │ │ ├── group_by_tags.ts │ │ ├── group_by_time.d.ts │ │ ├── group_by_time.js │ │ ├── group_by_time.js.map │ │ ├── group_by_time.ts │ │ ├── group_by_time_entry.d.ts │ │ ├── group_by_time_entry.js │ │ ├── group_by_time_entry.js.map │ │ ├── group_by_time_entry.ts │ │ ├── group_by_value.d.ts │ │ ├── group_by_value.js │ │ ├── group_by_value.js.map │ │ └── group_by_value.ts │ ├── metric_name_field.d.ts │ ├── metric_name_field.js │ ├── metric_name_field.js.map │ ├── metric_name_field.ts │ ├── tag_input.d.ts │ ├── tag_input.js │ ├── tag_input.js.map │ ├── tag_input.ts │ ├── tags_select.d.ts │ ├── tags_select.js │ ├── tags_select.js.map │ └── tags_select.ts ├── img │ ├── kairosdb_logo_large.png │ └── kairosdb_logo_small.png ├── module.d.ts ├── module.js ├── module.js.map ├── module.ts ├── package.json ├── partials │ ├── aggregator.editor.html │ ├── aggregator.html │ ├── aggregators.html │ ├── config.html │ ├── group.by.editor.html │ ├── group.by.tags.html │ ├── group.by.time.html │ ├── group.by.value.html │ ├── metric.name.field.html │ ├── metric.name.row.html │ ├── metric.names.loading.html │ ├── query.editor.html │ ├── query.options.html │ ├── tag.input.html │ ├── tags.editor.html │ └── tags.select.html ├── plugin.json └── utils │ ├── promise_utils.d.ts │ ├── promise_utils.js │ ├── promise_utils.js.map │ ├── promise_utils.ts │ ├── templating_function_resolver.d.ts │ ├── templating_function_resolver.js │ ├── templating_function_resolver.js.map │ ├── templating_function_resolver.ts │ ├── templating_utils.d.ts │ ├── templating_utils.js │ ├── templating_utils.js.map │ ├── templating_utils.ts │ ├── time_unit_utils.d.ts │ ├── time_unit_utils.js │ ├── time_unit_utils.js.map │ └── time_unit_utils.ts ├── karma.conf.js ├── package.json ├── plugin.json ├── specs ├── beans │ ├── function.test.ts │ └── request │ │ ├── legacy_target_converter.test.ts │ │ └── metric_tags.test.ts ├── controllers │ └── templating_functions_ctrl.test.ts ├── core │ ├── datasource.test.ts │ ├── request │ │ ├── group_bys_builder.test.ts │ │ ├── parameter_object_builder.test.ts │ │ ├── query_builder.test.ts │ │ ├── sampling_converter.test.ts │ │ ├── sampling_parameter_converter.test.ts │ │ └── target_validator.test.ts │ └── response │ │ ├── response_handler.test.ts │ │ └── series_name_builder.test.ts ├── directives │ ├── aggregator_editor.test.ts │ └── aggregators.test.ts ├── mocks.ts └── utils │ ├── templating_utils.test.ts │ └── time_unit_utils.test.ts ├── src ├── beans │ ├── aggregators │ │ ├── aggregator.ts │ │ ├── aggregators.ts │ │ ├── divide_aggregator.ts │ │ ├── parameters │ │ │ ├── aggregator_parameter.ts │ │ │ ├── alignment_aggregator_parameter.ts │ │ │ ├── any_aggregator_parameter.ts │ │ │ ├── enum_aggregator_parameter.ts │ │ │ ├── limited_aggregator_parameter.ts │ │ │ ├── sampling_aggregator_parameter.ts │ │ │ └── sampling_unit_aggregator_parameter.ts │ │ ├── percentile_aggregator.ts │ │ ├── range_aggregator.ts │ │ ├── rate_aggregator.ts │ │ ├── sampler_aggregator.ts │ │ ├── scale_aggregator.ts │ │ ├── sma_aggregator.ts │ │ ├── trim_aggregator.ts │ │ └── utils.ts │ ├── function.ts │ └── request │ │ ├── datapoints_query.ts │ │ ├── group_by.ts │ │ ├── legacy_target_converter.ts │ │ ├── metric_query.ts │ │ ├── metric_tags.ts │ │ └── target.ts ├── controllers │ └── templating_functions_ctrl.ts ├── core │ ├── config_ctrl.ts │ ├── datasource.ts │ ├── metric_names_store.ts │ ├── query_ctrl.ts │ ├── request │ │ ├── group_bys_builder.ts │ │ ├── parameter_object_builder.ts │ │ ├── query_builder.ts │ │ ├── sampling_converter.ts │ │ ├── sampling_parameter_converter.ts │ │ └── target_validator.ts │ └── response │ │ ├── response_handler.ts │ │ └── series_name_builder.ts ├── css │ └── plugin.css ├── directives │ ├── aggregator.ts │ ├── aggregator_editor.ts │ ├── aggregators.ts │ ├── auto_value_switch.ts │ ├── group_by │ │ ├── group_by_tags.ts │ │ ├── group_by_time.ts │ │ ├── group_by_time_entry.ts │ │ └── group_by_value.ts │ ├── metric_name_field.ts │ ├── tag_input.ts │ └── tags_select.ts ├── img │ ├── kairosdb_logo_large.png │ └── kairosdb_logo_small.png ├── module.ts ├── partials │ ├── aggregator.editor.html │ ├── aggregator.html │ ├── aggregators.html │ ├── config.html │ ├── group.by.editor.html │ ├── group.by.tags.html │ ├── group.by.time.html │ ├── group.by.value.html │ ├── metric.name.field.html │ ├── metric.name.row.html │ ├── metric.names.loading.html │ ├── query.editor.html │ ├── query.options.html │ ├── tag.input.html │ ├── tags.editor.html │ └── tags.select.html └── utils │ ├── promise_utils.ts │ ├── templating_function_resolver.ts │ ├── templating_utils.ts │ └── time_unit_utils.ts └── tslint.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | test-results -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Archived - KairosDB data source plugin no longer supported 2 | 3 | There is no community maintainer for this plugin and Grafana Labs is not maintaining it either. If you want to take over as maintainer, then please contact us by [opening an issue on the main Grafana repositiory](https://github.com/grafana/grafana/issues/new) or via [GitHub discussions](https://github.com/grafana/grafana/discussions). 4 | 5 | Starting in Grafana 3.x the KairosDB data source is no longer included out of the box. 6 | 7 | ## Installation 8 | Either clone this repo into your grafana plugins directory (default /var/lib/grafana/plugins if your installing grafana with package). Then run grunt to compile typescript. 9 | Restart grafana-server and the plugin should be automatically detected and used. 10 | 11 | ``` 12 | git clone https://github.com/grafana/kairosdb-datasource 13 | npm install 14 | grunt 15 | sudo service grafana-server restart 16 | ``` 17 | 18 | ## Clone into a directory of your choice 19 | 20 | Then edit your grafana.ini config file (Default location is at /etc/grafana/grafana.ini) and add this: 21 | 22 | ```ini 23 | [plugin.kairosdb] 24 | path = /home/your/clone/dir/datasource-plugin-kairosdb 25 | ``` 26 | 27 | Note that if you clone it into the grafana plugins directory you do not need to add the above config option. That is only 28 | if you want to place the plugin in a directory outside the standard plugins directory. Be aware that grafana-server 29 | needs read access to the directory. 30 | -------------------------------------------------------------------------------- /dist/README.md: -------------------------------------------------------------------------------- 1 | Starting in Grafana 3.x the KairosDB data source is no longer included out of the box. 2 | 3 | But it is easy to install this plugin! 4 | 5 | ## Installation 6 | Either clone this repo into your grafana plugins directory (default /var/lib/grafana/plugins if your installing grafana with package). Then run grunt to compile typescript. 7 | Restart grafana-server and the plugin should be automatically detected and used. 8 | 9 | ``` 10 | git clone https://github.com/grafana/kairosdb-datasource 11 | npm install 12 | grunt 13 | sudo service grafana-server restart 14 | ``` 15 | 16 | ## Clone into a directory of your choice 17 | 18 | Then edit your grafana.ini config file (Default location is at /etc/grafana/grafana.ini) and add this: 19 | 20 | ```ini 21 | [plugin.kairosdb] 22 | path = /home/your/clone/dir/datasource-plugin-kairosdb 23 | ``` 24 | 25 | Note that if you clone it into the grafana plugins directory you do not need to add the above config option. That is only 26 | if you want to place the plugin in a directory outside the standard plugins directory. Be aware that grafana-server 27 | needs read access to the directory. 28 | -------------------------------------------------------------------------------- /dist/beans/aggregators/aggregator.d.ts: -------------------------------------------------------------------------------- 1 | import { AutoValueSwitch } from "../../directives/auto_value_switch"; 2 | import { AggregatorParameter } from "./parameters/aggregator_parameter"; 3 | export declare class Aggregator { 4 | name: string; 5 | parameters: AggregatorParameter[]; 6 | autoValueSwitch: AutoValueSwitch; 7 | constructor(name: string); 8 | } 9 | -------------------------------------------------------------------------------- /dist/beans/aggregators/aggregator.js: -------------------------------------------------------------------------------- 1 | System.register([], function(exports_1) { 2 | var Aggregator; 3 | return { 4 | setters:[], 5 | execute: function() { 6 | Aggregator = (function () { 7 | function Aggregator(name) { 8 | this.parameters = []; 9 | this.autoValueSwitch = undefined; 10 | this.name = name; 11 | } 12 | return Aggregator; 13 | })(); 14 | exports_1("Aggregator", Aggregator); 15 | } 16 | } 17 | }); 18 | //# sourceMappingURL=aggregator.js.map -------------------------------------------------------------------------------- /dist/beans/aggregators/aggregator.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"aggregator.js","sourceRoot":"","sources":["aggregator.ts"],"names":["Aggregator","Aggregator.constructor"],"mappings":";;;;;YAGA;gBAKIA,oBAAYA,IAAYA;oBAHjBC,eAAUA,GAA0BA,EAAEA,CAACA;oBACvCA,oBAAeA,GAAoBA,SAASA,CAACA;oBAGhDA,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;gBACrBA,CAACA;gBACLD,iBAACA;YAADA,CAACA,AARD,IAQC;YARD,mCAQC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/aggregator.ts: -------------------------------------------------------------------------------- 1 | import {AutoValueSwitch} from "../../directives/auto_value_switch"; 2 | import {AggregatorParameter} from "./parameters/aggregator_parameter"; 3 | 4 | export class Aggregator { 5 | public name: string; 6 | public parameters: AggregatorParameter[] = []; 7 | public autoValueSwitch: AutoValueSwitch = undefined; 8 | 9 | constructor(name: string) { 10 | this.name = name; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /dist/beans/aggregators/aggregators.d.ts: -------------------------------------------------------------------------------- 1 | import { RangeAggregator } from "./range_aggregator"; 2 | export declare const AGGREGATORS: RangeAggregator[]; 3 | -------------------------------------------------------------------------------- /dist/beans/aggregators/aggregators.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"aggregators.js","sourceRoot":"","sources":["aggregators.ts"],"names":[],"mappings":";;QAUa,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAAX,yBAAA,WAAW,GAAG;gBACvB,IAAI,kCAAe,CAAC,KAAK,CAAC;gBAC1B,IAAI,kCAAe,CAAC,KAAK,CAAC;gBAC1B,IAAI,kCAAe,CAAC,OAAO,CAAC;gBAC5B,IAAI,kCAAe,CAAC,OAAO,CAAC;gBAC5B,IAAI,kCAAe,CAAC,MAAM,CAAC;gBAC3B,IAAI,kCAAe,CAAC,MAAM,CAAC;gBAC3B,IAAI,kCAAe,CAAC,eAAe,CAAC;gBACpC,IAAI,kCAAe,CAAC,KAAK,CAAC;gBAC1B,IAAI,kCAAe,CAAC,KAAK,CAAC;gBAC1B,IAAI,kCAAe,CAAC,MAAM,CAAC;gBAC3B,IAAI,4CAAoB,EAAE;gBAC1B,IAAI,8BAAa,EAAE;gBACnB,IAAI,kCAAe,CAAC,KAAK,CAAC;gBAC1B,IAAI,uBAAU,CAAC,MAAM,CAAC;gBACtB,IAAI,oCAAgB,EAAE;gBACtB,IAAI,gCAAc,EAAE;gBACpB,IAAI,sCAAiB,EAAE;gBACvB,IAAI,kCAAe,EAAE;gBACrB,IAAI,gCAAc,EAAE;aACvB,CAAA,CAAC"} -------------------------------------------------------------------------------- /dist/beans/aggregators/aggregators.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "./aggregator"; 2 | import {DivideAggregator} from "./divide_aggregator"; 3 | import {PercentileAggregator} from "./percentile_aggregator"; 4 | import {RangeAggregator} from "./range_aggregator"; 5 | import {RateAggregator} from "./rate_aggregator"; 6 | import {SamplerAggregator} from "./sampler_aggregator"; 7 | import {ScaleAggregator} from "./scale_aggregator"; 8 | import {SmaAggregator} from "./sma_aggregator"; 9 | import {TrimAggregator} from "./trim_aggregator"; 10 | 11 | export const AGGREGATORS = [ 12 | new RangeAggregator("avg"), 13 | new RangeAggregator("dev"), 14 | new RangeAggregator("count"), 15 | new RangeAggregator("first"), 16 | new RangeAggregator("gaps"), 17 | new RangeAggregator("last"), 18 | new RangeAggregator("least_squares"), 19 | new RangeAggregator("max"), 20 | new RangeAggregator("min"), 21 | new RangeAggregator("gaps"), 22 | new PercentileAggregator(), 23 | new SmaAggregator(), 24 | new RangeAggregator("sum"), 25 | new Aggregator("diff"), 26 | new DivideAggregator(), 27 | new RateAggregator(), 28 | new SamplerAggregator(), 29 | new ScaleAggregator(), 30 | new TrimAggregator() 31 | ]; 32 | -------------------------------------------------------------------------------- /dist/beans/aggregators/divide_aggregator.d.ts: -------------------------------------------------------------------------------- 1 | import { Aggregator } from "./aggregator"; 2 | export declare class DivideAggregator extends Aggregator { 3 | constructor(); 4 | } 5 | -------------------------------------------------------------------------------- /dist/beans/aggregators/divide_aggregator.js: -------------------------------------------------------------------------------- 1 | System.register(["./aggregator", "./parameters/any_aggregator_parameter"], function(exports_1) { 2 | var __extends = (this && this.__extends) || function (d, b) { 3 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 4 | function __() { this.constructor = d; } 5 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 6 | }; 7 | var aggregator_1, any_aggregator_parameter_1; 8 | var DivideAggregator; 9 | return { 10 | setters:[ 11 | function (aggregator_1_1) { 12 | aggregator_1 = aggregator_1_1; 13 | }, 14 | function (any_aggregator_parameter_1_1) { 15 | any_aggregator_parameter_1 = any_aggregator_parameter_1_1; 16 | }], 17 | execute: function() { 18 | DivideAggregator = (function (_super) { 19 | __extends(DivideAggregator, _super); 20 | function DivideAggregator() { 21 | _super.call(this, "div"); 22 | this.parameters = this.parameters.concat([new any_aggregator_parameter_1.AnyAggregatorParameter("divisor", "by")]); 23 | } 24 | return DivideAggregator; 25 | })(aggregator_1.Aggregator); 26 | exports_1("DivideAggregator", DivideAggregator); 27 | } 28 | } 29 | }); 30 | //# sourceMappingURL=divide_aggregator.js.map -------------------------------------------------------------------------------- /dist/beans/aggregators/divide_aggregator.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"divide_aggregator.js","sourceRoot":"","sources":["divide_aggregator.ts"],"names":["DivideAggregator","DivideAggregator.constructor"],"mappings":";;;;;;;;;;;;;;;;;YAGA;gBAAsCA,oCAAUA;gBAC5CA;oBACIC,kBAAMA,KAAKA,CAACA,CAACA;oBACbA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,MAAMA,CAACA,CAACA,IAAIA,iDAAsBA,CAACA,SAASA,EAAEA,IAAIA,CAACA,CAACA,CAACA,CAACA;gBAC5FA,CAACA;gBACLD,uBAACA;YAADA,CAACA,AALD,EAAsC,uBAAU,EAK/C;YALD,+CAKC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/divide_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "./aggregator"; 2 | import {AnyAggregatorParameter} from "./parameters/any_aggregator_parameter"; 3 | 4 | export class DivideAggregator extends Aggregator { 5 | constructor() { 6 | super("div"); 7 | this.parameters = this.parameters.concat([new AnyAggregatorParameter("divisor", "by")]); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/aggregator_parameter.d.ts: -------------------------------------------------------------------------------- 1 | declare abstract class AggregatorParameter { 2 | name: string; 3 | text: string; 4 | value: string; 5 | type: string; 6 | constructor(name: string, text?: string, value?: string); 7 | } 8 | export { AggregatorParameter }; 9 | -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/aggregator_parameter.js: -------------------------------------------------------------------------------- 1 | System.register([], function(exports_1) { 2 | var AggregatorParameter; 3 | return { 4 | setters:[], 5 | execute: function() { 6 | AggregatorParameter = (function () { 7 | function AggregatorParameter(name, text, value) { 8 | if (text === void 0) { text = name; } 9 | if (value === void 0) { value = null; } 10 | this.name = name; 11 | this.text = text; 12 | this.value = value; 13 | } 14 | return AggregatorParameter; 15 | })(); 16 | exports_1("AggregatorParameter", AggregatorParameter); 17 | } 18 | } 19 | }); 20 | //# sourceMappingURL=aggregator_parameter.js.map -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/aggregator_parameter.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"aggregator_parameter.js","sourceRoot":"","sources":["aggregator_parameter.ts"],"names":["AggregatorParameter","AggregatorParameter.constructor"],"mappings":";;;;;YAAA;gBAMIA,6BAAYA,IAAYA,EAAEA,IAAmBA,EAAEA,KAAoBA;oBAAzCC,oBAAmBA,GAAnBA,WAAmBA;oBAAEA,qBAAoBA,GAApBA,YAAoBA;oBAC/DA,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;oBACjBA,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;oBACjBA,IAAIA,CAACA,KAAKA,GAAGA,KAAKA,CAACA;gBACvBA,CAACA;gBACLD,0BAACA;YAADA,CAACA,AAXD,IAWC;YAEQ,qDAAmB"} -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/aggregator_parameter.ts: -------------------------------------------------------------------------------- 1 | abstract class AggregatorParameter { 2 | public name: string; 3 | public text: string; 4 | public value: string; 5 | public type: string; 6 | 7 | constructor(name: string, text: string = name, value: string = null) { 8 | this.name = name; 9 | this.text = text; 10 | this.value = value; 11 | } 12 | } 13 | 14 | export { AggregatorParameter }; 15 | -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/alignment_aggregator_parameter.d.ts: -------------------------------------------------------------------------------- 1 | import { EnumAggregatorParameter } from "./enum_aggregator_parameter"; 2 | export declare class AlignmentAggregatorParameter extends EnumAggregatorParameter { 3 | constructor(); 4 | } 5 | -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/alignment_aggregator_parameter.js: -------------------------------------------------------------------------------- 1 | System.register(["../utils", "./enum_aggregator_parameter"], function(exports_1) { 2 | var __extends = (this && this.__extends) || function (d, b) { 3 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 4 | function __() { this.constructor = d; } 5 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 6 | }; 7 | var utils_1, enum_aggregator_parameter_1; 8 | var AlignmentAggregatorParameter; 9 | return { 10 | setters:[ 11 | function (utils_1_1) { 12 | utils_1 = utils_1_1; 13 | }, 14 | function (enum_aggregator_parameter_1_1) { 15 | enum_aggregator_parameter_1 = enum_aggregator_parameter_1_1; 16 | }], 17 | execute: function() { 18 | AlignmentAggregatorParameter = (function (_super) { 19 | __extends(AlignmentAggregatorParameter, _super); 20 | function AlignmentAggregatorParameter() { 21 | _super.call(this, "sampling", utils_1.Alignment, "align by", "NONE"); 22 | this.type = "alignment"; 23 | } 24 | return AlignmentAggregatorParameter; 25 | })(enum_aggregator_parameter_1.EnumAggregatorParameter); 26 | exports_1("AlignmentAggregatorParameter", AlignmentAggregatorParameter); 27 | } 28 | } 29 | }); 30 | //# sourceMappingURL=alignment_aggregator_parameter.js.map -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/alignment_aggregator_parameter.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"alignment_aggregator_parameter.js","sourceRoot":"","sources":["alignment_aggregator_parameter.ts"],"names":["AlignmentAggregatorParameter","AlignmentAggregatorParameter.constructor"],"mappings":";;;;;;;;;;;;;;;;;YAGA;gBAAkDA,gDAAuBA;gBACrEA;oBACIC,kBAAMA,UAAUA,EAAEA,iBAASA,EAAEA,UAAUA,EAAEA,MAAMA,CAACA,CAACA;oBACjDA,IAAIA,CAACA,IAAIA,GAAGA,WAAWA,CAACA;gBAC5BA,CAACA;gBACLD,mCAACA;YAADA,CAACA,AALD,EAAkD,mDAAuB,EAKxE;YALD,uEAKC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/alignment_aggregator_parameter.ts: -------------------------------------------------------------------------------- 1 | import {Alignment} from "../utils"; 2 | import {EnumAggregatorParameter} from "./enum_aggregator_parameter"; 3 | 4 | export class AlignmentAggregatorParameter extends EnumAggregatorParameter { 5 | constructor() { 6 | super("sampling", Alignment, "align by", "NONE"); 7 | this.type = "alignment"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/any_aggregator_parameter.d.ts: -------------------------------------------------------------------------------- 1 | import { AggregatorParameter } from "./aggregator_parameter"; 2 | export declare class AnyAggregatorParameter extends AggregatorParameter { 3 | constructor(name: string, text?: string, value?: any); 4 | } 5 | -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/any_aggregator_parameter.js: -------------------------------------------------------------------------------- 1 | System.register(["./aggregator_parameter"], function(exports_1) { 2 | var __extends = (this && this.__extends) || function (d, b) { 3 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 4 | function __() { this.constructor = d; } 5 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 6 | }; 7 | var aggregator_parameter_1; 8 | var AnyAggregatorParameter; 9 | return { 10 | setters:[ 11 | function (aggregator_parameter_1_1) { 12 | aggregator_parameter_1 = aggregator_parameter_1_1; 13 | }], 14 | execute: function() { 15 | AnyAggregatorParameter = (function (_super) { 16 | __extends(AnyAggregatorParameter, _super); 17 | function AnyAggregatorParameter(name, text, value) { 18 | if (text === void 0) { text = name; } 19 | if (value === void 0) { value = null; } 20 | _super.call(this, name, text, value); 21 | this.type = "any"; 22 | } 23 | return AnyAggregatorParameter; 24 | })(aggregator_parameter_1.AggregatorParameter); 25 | exports_1("AnyAggregatorParameter", AnyAggregatorParameter); 26 | } 27 | } 28 | }); 29 | //# sourceMappingURL=any_aggregator_parameter.js.map -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/any_aggregator_parameter.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"any_aggregator_parameter.js","sourceRoot":"","sources":["any_aggregator_parameter.ts"],"names":["AnyAggregatorParameter","AnyAggregatorParameter.constructor"],"mappings":";;;;;;;;;;;;;;YAEA;gBAA4CA,0CAAmBA;gBAC3DA,gCAAYA,IAAYA,EAAEA,IAAmBA,EAAEA,KAAiBA;oBAAtCC,oBAAmBA,GAAnBA,WAAmBA;oBAAEA,qBAAiBA,GAAjBA,YAAiBA;oBAC5DA,kBAAMA,IAAIA,EAAEA,IAAIA,EAAEA,KAAKA,CAACA,CAACA;oBACzBA,IAAIA,CAACA,IAAIA,GAAGA,KAAKA,CAACA;gBACtBA,CAACA;gBACLD,6BAACA;YAADA,CAACA,AALD,EAA4C,0CAAmB,EAK9D;YALD,2DAKC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/any_aggregator_parameter.ts: -------------------------------------------------------------------------------- 1 | import {AggregatorParameter} from "./aggregator_parameter"; 2 | 3 | export class AnyAggregatorParameter extends AggregatorParameter { 4 | constructor(name: string, text: string = name, value: any = null) { 5 | super(name, text, value); 6 | this.type = "any"; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/enum_aggregator_parameter.d.ts: -------------------------------------------------------------------------------- 1 | import { LimitedAggregatorParameter } from "./limited_aggregator_parameter"; 2 | export declare class EnumAggregatorParameter extends LimitedAggregatorParameter { 3 | constructor(name: string, type: any, text?: string, value?: any); 4 | } 5 | -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/enum_aggregator_parameter.js: -------------------------------------------------------------------------------- 1 | System.register(["../utils", "./limited_aggregator_parameter"], function(exports_1) { 2 | var __extends = (this && this.__extends) || function (d, b) { 3 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 4 | function __() { this.constructor = d; } 5 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 6 | }; 7 | var utils_1, limited_aggregator_parameter_1; 8 | var EnumAggregatorParameter; 9 | return { 10 | setters:[ 11 | function (utils_1_1) { 12 | utils_1 = utils_1_1; 13 | }, 14 | function (limited_aggregator_parameter_1_1) { 15 | limited_aggregator_parameter_1 = limited_aggregator_parameter_1_1; 16 | }], 17 | execute: function() { 18 | EnumAggregatorParameter = (function (_super) { 19 | __extends(EnumAggregatorParameter, _super); 20 | function EnumAggregatorParameter(name, type, text, value) { 21 | if (text === void 0) { text = name; } 22 | if (value === void 0) { value = null; } 23 | _super.call(this, name, utils_1.EnumValues(type), text, value); 24 | this.type = "enum"; 25 | } 26 | return EnumAggregatorParameter; 27 | })(limited_aggregator_parameter_1.LimitedAggregatorParameter); 28 | exports_1("EnumAggregatorParameter", EnumAggregatorParameter); 29 | } 30 | } 31 | }); 32 | //# sourceMappingURL=enum_aggregator_parameter.js.map -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/enum_aggregator_parameter.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"enum_aggregator_parameter.js","sourceRoot":"","sources":["enum_aggregator_parameter.ts"],"names":["EnumAggregatorParameter","EnumAggregatorParameter.constructor"],"mappings":";;;;;;;;;;;;;;;;;YAGA;gBAA6CA,2CAA0BA;gBACnEA,iCAAYA,IAAYA,EAAEA,IAASA,EAAEA,IAAmBA,EAAEA,KAAiBA;oBAAtCC,oBAAmBA,GAAnBA,WAAmBA;oBAAEA,qBAAiBA,GAAjBA,YAAiBA;oBACvEA,kBAAMA,IAAIA,EAAEA,kBAAUA,CAACA,IAAIA,CAACA,EAAEA,IAAIA,EAAEA,KAAKA,CAACA,CAACA;oBAC3CA,IAAIA,CAACA,IAAIA,GAAGA,MAAMA,CAACA;gBACvBA,CAACA;gBACLD,8BAACA;YAADA,CAACA,AALD,EAA6C,yDAA0B,EAKtE;YALD,6DAKC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/enum_aggregator_parameter.ts: -------------------------------------------------------------------------------- 1 | import {EnumValues} from "../utils"; 2 | import {LimitedAggregatorParameter} from "./limited_aggregator_parameter"; 3 | 4 | export class EnumAggregatorParameter extends LimitedAggregatorParameter { 5 | constructor(name: string, type: any, text: string = name, value: any = null) { 6 | super(name, EnumValues(type), text, value); 7 | this.type = "enum"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/limited_aggregator_parameter.d.ts: -------------------------------------------------------------------------------- 1 | import { AggregatorParameter } from "./aggregator_parameter"; 2 | export declare class LimitedAggregatorParameter extends AggregatorParameter { 3 | private allowedValues; 4 | constructor(name: string, allowedValues: any[], text?: string, value?: any); 5 | } 6 | -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/limited_aggregator_parameter.js: -------------------------------------------------------------------------------- 1 | System.register(["./aggregator_parameter"], function(exports_1) { 2 | var __extends = (this && this.__extends) || function (d, b) { 3 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 4 | function __() { this.constructor = d; } 5 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 6 | }; 7 | var aggregator_parameter_1; 8 | var LimitedAggregatorParameter; 9 | return { 10 | setters:[ 11 | function (aggregator_parameter_1_1) { 12 | aggregator_parameter_1 = aggregator_parameter_1_1; 13 | }], 14 | execute: function() { 15 | LimitedAggregatorParameter = (function (_super) { 16 | __extends(LimitedAggregatorParameter, _super); 17 | function LimitedAggregatorParameter(name, allowedValues, text, value) { 18 | if (text === void 0) { text = name; } 19 | if (value === void 0) { value = null; } 20 | _super.call(this, name, text, value); 21 | this.allowedValues = allowedValues; 22 | this.type = "limited"; 23 | } 24 | return LimitedAggregatorParameter; 25 | })(aggregator_parameter_1.AggregatorParameter); 26 | exports_1("LimitedAggregatorParameter", LimitedAggregatorParameter); 27 | } 28 | } 29 | }); 30 | //# sourceMappingURL=limited_aggregator_parameter.js.map -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/limited_aggregator_parameter.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"limited_aggregator_parameter.js","sourceRoot":"","sources":["limited_aggregator_parameter.ts"],"names":["LimitedAggregatorParameter","LimitedAggregatorParameter.constructor"],"mappings":";;;;;;;;;;;;;;YACA;gBAAgDA,8CAAmBA;gBAG/DA,oCAAYA,IAAYA,EAAEA,aAAoBA,EAAEA,IAAmBA,EAAEA,KAAiBA;oBAAtCC,oBAAmBA,GAAnBA,WAAmBA;oBAAEA,qBAAiBA,GAAjBA,YAAiBA;oBAClFA,kBAAMA,IAAIA,EAAEA,IAAIA,EAAEA,KAAKA,CAACA,CAACA;oBACzBA,IAAIA,CAACA,aAAaA,GAAGA,aAAaA,CAACA;oBACnCA,IAAIA,CAACA,IAAIA,GAAGA,SAASA,CAACA;gBAC1BA,CAACA;gBACLD,iCAACA;YAADA,CAACA,AARD,EAAgD,0CAAmB,EAQlE;YARD,mEAQC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/limited_aggregator_parameter.ts: -------------------------------------------------------------------------------- 1 | import {AggregatorParameter} from "./aggregator_parameter"; 2 | export class LimitedAggregatorParameter extends AggregatorParameter { 3 | private allowedValues: any[]; 4 | 5 | constructor(name: string, allowedValues: any[], text: string = name, value: any = null) { 6 | super(name, text, value); 7 | this.allowedValues = allowedValues; 8 | this.type = "limited"; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/sampling_aggregator_parameter.d.ts: -------------------------------------------------------------------------------- 1 | import { AnyAggregatorParameter } from "./any_aggregator_parameter"; 2 | export declare class SamplingAggregatorParameter extends AnyAggregatorParameter { 3 | static TYPE: string; 4 | constructor(text?: string, value?: any); 5 | } 6 | -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/sampling_aggregator_parameter.js: -------------------------------------------------------------------------------- 1 | System.register(["./any_aggregator_parameter"], function(exports_1) { 2 | var __extends = (this && this.__extends) || function (d, b) { 3 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 4 | function __() { this.constructor = d; } 5 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 6 | }; 7 | var any_aggregator_parameter_1; 8 | var SamplingAggregatorParameter; 9 | return { 10 | setters:[ 11 | function (any_aggregator_parameter_1_1) { 12 | any_aggregator_parameter_1 = any_aggregator_parameter_1_1; 13 | }], 14 | execute: function() { 15 | SamplingAggregatorParameter = (function (_super) { 16 | __extends(SamplingAggregatorParameter, _super); 17 | function SamplingAggregatorParameter(text, value) { 18 | if (text === void 0) { text = name; } 19 | if (value === void 0) { value = null; } 20 | _super.call(this, "value", text, value); 21 | this.type = SamplingAggregatorParameter.TYPE; 22 | } 23 | SamplingAggregatorParameter.TYPE = "sampling"; 24 | return SamplingAggregatorParameter; 25 | })(any_aggregator_parameter_1.AnyAggregatorParameter); 26 | exports_1("SamplingAggregatorParameter", SamplingAggregatorParameter); 27 | } 28 | } 29 | }); 30 | //# sourceMappingURL=sampling_aggregator_parameter.js.map -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/sampling_aggregator_parameter.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"sampling_aggregator_parameter.js","sourceRoot":"","sources":["sampling_aggregator_parameter.ts"],"names":["SamplingAggregatorParameter","SamplingAggregatorParameter.constructor"],"mappings":";;;;;;;;;;;;;;YAEA;gBAAiDA,+CAAsBA;gBAGnEA,qCAAYA,IAAmBA,EAAEA,KAAiBA;oBAAtCC,oBAAmBA,GAAnBA,WAAmBA;oBAAEA,qBAAiBA,GAAjBA,YAAiBA;oBAC9CA,kBAAMA,OAAOA,EAAEA,IAAIA,EAAEA,KAAKA,CAACA,CAACA;oBAC5BA,IAAIA,CAACA,IAAIA,GAAGA,2BAA2BA,CAACA,IAAIA,CAACA;gBACjDA,CAACA;gBALaD,gCAAIA,GAAGA,UAAUA,CAACA;gBAMpCA,kCAACA;YAADA,CAACA,AAPD,EAAiD,iDAAsB,EAOtE;YAPD,qEAOC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/sampling_aggregator_parameter.ts: -------------------------------------------------------------------------------- 1 | import {AnyAggregatorParameter} from "./any_aggregator_parameter"; 2 | 3 | export class SamplingAggregatorParameter extends AnyAggregatorParameter { 4 | public static TYPE = "sampling"; 5 | 6 | constructor(text: string = name, value: any = null) { 7 | super("value", text, value); 8 | this.type = SamplingAggregatorParameter.TYPE; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/sampling_unit_aggregator_parameter.d.ts: -------------------------------------------------------------------------------- 1 | import { EnumAggregatorParameter } from "./enum_aggregator_parameter"; 2 | export declare class SamplingUnitAggregatorParameter extends EnumAggregatorParameter { 3 | static TYPE: string; 4 | constructor(); 5 | } 6 | -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/sampling_unit_aggregator_parameter.js: -------------------------------------------------------------------------------- 1 | System.register(["../utils", "./enum_aggregator_parameter"], function(exports_1) { 2 | var __extends = (this && this.__extends) || function (d, b) { 3 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 4 | function __() { this.constructor = d; } 5 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 6 | }; 7 | var utils_1, enum_aggregator_parameter_1; 8 | var SamplingUnitAggregatorParameter; 9 | return { 10 | setters:[ 11 | function (utils_1_1) { 12 | utils_1 = utils_1_1; 13 | }, 14 | function (enum_aggregator_parameter_1_1) { 15 | enum_aggregator_parameter_1 = enum_aggregator_parameter_1_1; 16 | }], 17 | execute: function() { 18 | SamplingUnitAggregatorParameter = (function (_super) { 19 | __extends(SamplingUnitAggregatorParameter, _super); 20 | function SamplingUnitAggregatorParameter() { 21 | _super.call(this, "unit", utils_1.TimeUnit, "unit", "HOURS"); 22 | this.type = SamplingUnitAggregatorParameter.TYPE; 23 | } 24 | SamplingUnitAggregatorParameter.TYPE = "sampling_unit"; 25 | return SamplingUnitAggregatorParameter; 26 | })(enum_aggregator_parameter_1.EnumAggregatorParameter); 27 | exports_1("SamplingUnitAggregatorParameter", SamplingUnitAggregatorParameter); 28 | } 29 | } 30 | }); 31 | //# sourceMappingURL=sampling_unit_aggregator_parameter.js.map -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/sampling_unit_aggregator_parameter.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"sampling_unit_aggregator_parameter.js","sourceRoot":"","sources":["sampling_unit_aggregator_parameter.ts"],"names":["SamplingUnitAggregatorParameter","SamplingUnitAggregatorParameter.constructor"],"mappings":";;;;;;;;;;;;;;;;;YAGA;gBAAqDA,mDAAuBA;gBAGxEA;oBACIC,kBAAMA,MAAMA,EAAEA,gBAAQA,EAAEA,MAAMA,EAAEA,OAAOA,CAACA,CAACA;oBACzCA,IAAIA,CAACA,IAAIA,GAAGA,+BAA+BA,CAACA,IAAIA,CAACA;gBACrDA,CAACA;gBALaD,oCAAIA,GAAGA,eAAeA,CAACA;gBAMzCA,sCAACA;YAADA,CAACA,AAPD,EAAqD,mDAAuB,EAO3E;YAPD,6EAOC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/parameters/sampling_unit_aggregator_parameter.ts: -------------------------------------------------------------------------------- 1 | import {TimeUnit} from "../utils"; 2 | import {EnumAggregatorParameter} from "./enum_aggregator_parameter"; 3 | 4 | export class SamplingUnitAggregatorParameter extends EnumAggregatorParameter { 5 | public static TYPE = "sampling_unit"; 6 | 7 | constructor() { 8 | super("unit", TimeUnit, "unit", "HOURS"); 9 | this.type = SamplingUnitAggregatorParameter.TYPE; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /dist/beans/aggregators/percentile_aggregator.d.ts: -------------------------------------------------------------------------------- 1 | import { RangeAggregator } from "./range_aggregator"; 2 | export declare class PercentileAggregator extends RangeAggregator { 3 | constructor(); 4 | } 5 | -------------------------------------------------------------------------------- /dist/beans/aggregators/percentile_aggregator.js: -------------------------------------------------------------------------------- 1 | System.register(["./parameters/any_aggregator_parameter", "./range_aggregator"], function(exports_1) { 2 | var __extends = (this && this.__extends) || function (d, b) { 3 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 4 | function __() { this.constructor = d; } 5 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 6 | }; 7 | var any_aggregator_parameter_1, range_aggregator_1; 8 | var PercentileAggregator; 9 | return { 10 | setters:[ 11 | function (any_aggregator_parameter_1_1) { 12 | any_aggregator_parameter_1 = any_aggregator_parameter_1_1; 13 | }, 14 | function (range_aggregator_1_1) { 15 | range_aggregator_1 = range_aggregator_1_1; 16 | }], 17 | execute: function() { 18 | PercentileAggregator = (function (_super) { 19 | __extends(PercentileAggregator, _super); 20 | function PercentileAggregator() { 21 | _super.call(this, "percentile"); 22 | this.parameters = this.parameters.concat([new any_aggregator_parameter_1.AnyAggregatorParameter("percentile")]); 23 | } 24 | return PercentileAggregator; 25 | })(range_aggregator_1.RangeAggregator); 26 | exports_1("PercentileAggregator", PercentileAggregator); 27 | } 28 | } 29 | }); 30 | //# sourceMappingURL=percentile_aggregator.js.map -------------------------------------------------------------------------------- /dist/beans/aggregators/percentile_aggregator.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"percentile_aggregator.js","sourceRoot":"","sources":["percentile_aggregator.ts"],"names":["PercentileAggregator","PercentileAggregator.constructor"],"mappings":";;;;;;;;;;;;;;;;;YAGA;gBAA0CA,wCAAeA;gBACrDA;oBACIC,kBAAMA,YAAYA,CAACA,CAACA;oBACpBA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,MAAMA,CAACA,CAACA,IAAIA,iDAAsBA,CAACA,YAAYA,CAACA,CAACA,CAACA,CAACA;gBACzFA,CAACA;gBACLD,2BAACA;YAADA,CAACA,AALD,EAA0C,kCAAe,EAKxD;YALD,uDAKC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/percentile_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {AnyAggregatorParameter} from "./parameters/any_aggregator_parameter"; 2 | import {RangeAggregator} from "./range_aggregator"; 3 | 4 | export class PercentileAggregator extends RangeAggregator { 5 | constructor() { 6 | super("percentile"); 7 | this.parameters = this.parameters.concat([new AnyAggregatorParameter("percentile")]); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /dist/beans/aggregators/range_aggregator.d.ts: -------------------------------------------------------------------------------- 1 | import { Aggregator } from "./aggregator"; 2 | export declare class RangeAggregator extends Aggregator { 3 | constructor(name: string); 4 | } 5 | -------------------------------------------------------------------------------- /dist/beans/aggregators/range_aggregator.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"range_aggregator.js","sourceRoot":"","sources":["range_aggregator.ts"],"names":["RangeAggregator","RangeAggregator.constructor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;YAMA;gBAAqCA,mCAAUA;gBAC3CA,yBAAYA,IAAYA;oBACpBC,kBAAMA,IAAIA,CAACA,CAACA;oBACZA,IAAMA,2BAA2BA,GAAGA,IAAIA,2DAA2BA,CAACA,OAAOA,EAAEA,GAAGA,CAACA,CAACA;oBAClFA,IAAMA,+BAA+BA,GAAGA,IAAIA,oEAA+BA,EAAEA,CAACA;oBAC9EA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,MAAMA,CAACA;wBACrCA,IAAIA,6DAA4BA,EAAEA;wBAClCA,2BAA2BA;wBAC3BA,+BAA+BA;qBAClCA,CAACA,CAACA;oBACHA,IAAIA,CAACA,eAAeA,GAAGA,IAAIA,mCAAeA,CAACA,CAACA,2BAA2BA,EAAEA,+BAA+BA,CAACA,CAACA,CAACA;gBAC/GA,CAACA;gBACLD,sBAACA;YAADA,CAACA,AAZD,EAAqC,uBAAU,EAY9C;YAZD,6CAYC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/range_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {AutoValueSwitch} from "../../directives/auto_value_switch"; 2 | import {Aggregator} from "./aggregator"; 3 | import {AlignmentAggregatorParameter} from "./parameters/alignment_aggregator_parameter"; 4 | import {SamplingAggregatorParameter} from "./parameters/sampling_aggregator_parameter"; 5 | import {SamplingUnitAggregatorParameter} from "./parameters/sampling_unit_aggregator_parameter"; 6 | 7 | export class RangeAggregator extends Aggregator { 8 | constructor(name: string) { 9 | super(name); 10 | const samplingAggregatorParameter = new SamplingAggregatorParameter("every", "1"); 11 | const samplingUnitAggregatorParameter = new SamplingUnitAggregatorParameter(); 12 | this.parameters = this.parameters.concat([ 13 | new AlignmentAggregatorParameter(), 14 | samplingAggregatorParameter, 15 | samplingUnitAggregatorParameter 16 | ]); 17 | this.autoValueSwitch = new AutoValueSwitch([samplingAggregatorParameter, samplingUnitAggregatorParameter]); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /dist/beans/aggregators/rate_aggregator.d.ts: -------------------------------------------------------------------------------- 1 | import { Aggregator } from "./aggregator"; 2 | export declare class RateAggregator extends Aggregator { 3 | constructor(); 4 | } 5 | -------------------------------------------------------------------------------- /dist/beans/aggregators/rate_aggregator.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"rate_aggregator.js","sourceRoot":"","sources":["rate_aggregator.ts"],"names":["RateAggregator","RateAggregator.constructor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;YAMA;gBAAoCA,kCAAUA;gBAC1CA;oBACIC,kBAAMA,MAAMA,CAACA,CAACA;oBACdA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,MAAMA,CAACA;wBACrCA,IAAIA,6DAA4BA,EAAEA;wBAClCA,IAAIA,mDAAuBA,CAACA,MAAMA,EAAEA,gBAAQA,EAAEA,OAAOA,CAACA;qBACzDA,CAACA,CAACA;gBACPA,CAACA;gBACLD,qBAACA;YAADA,CAACA,AARD,EAAoC,uBAAU,EAQ7C;YARD,2CAQC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/rate_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "./aggregator"; 2 | 3 | import {AlignmentAggregatorParameter} from "./parameters/alignment_aggregator_parameter"; 4 | import {EnumAggregatorParameter} from "./parameters/enum_aggregator_parameter"; 5 | import {TimeUnit} from "./utils"; 6 | 7 | export class RateAggregator extends Aggregator { 8 | constructor() { 9 | super("rate"); 10 | this.parameters = this.parameters.concat([ 11 | new AlignmentAggregatorParameter(), 12 | new EnumAggregatorParameter("unit", TimeUnit, "every") 13 | ]); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /dist/beans/aggregators/sampler_aggregator.d.ts: -------------------------------------------------------------------------------- 1 | import { Aggregator } from "./aggregator"; 2 | export declare class SamplerAggregator extends Aggregator { 3 | constructor(); 4 | } 5 | -------------------------------------------------------------------------------- /dist/beans/aggregators/sampler_aggregator.js: -------------------------------------------------------------------------------- 1 | System.register(["./aggregator", "./parameters/enum_aggregator_parameter", "./utils"], function(exports_1) { 2 | var __extends = (this && this.__extends) || function (d, b) { 3 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 4 | function __() { this.constructor = d; } 5 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 6 | }; 7 | var aggregator_1, enum_aggregator_parameter_1, utils_1; 8 | var SamplerAggregator; 9 | return { 10 | setters:[ 11 | function (aggregator_1_1) { 12 | aggregator_1 = aggregator_1_1; 13 | }, 14 | function (enum_aggregator_parameter_1_1) { 15 | enum_aggregator_parameter_1 = enum_aggregator_parameter_1_1; 16 | }, 17 | function (utils_1_1) { 18 | utils_1 = utils_1_1; 19 | }], 20 | execute: function() { 21 | SamplerAggregator = (function (_super) { 22 | __extends(SamplerAggregator, _super); 23 | function SamplerAggregator() { 24 | _super.call(this, "sampler"); 25 | this.parameters = this.parameters.concat([new enum_aggregator_parameter_1.EnumAggregatorParameter("unit", utils_1.TimeUnit, "every")]); 26 | } 27 | return SamplerAggregator; 28 | })(aggregator_1.Aggregator); 29 | exports_1("SamplerAggregator", SamplerAggregator); 30 | } 31 | } 32 | }); 33 | //# sourceMappingURL=sampler_aggregator.js.map -------------------------------------------------------------------------------- /dist/beans/aggregators/sampler_aggregator.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"sampler_aggregator.js","sourceRoot":"","sources":["sampler_aggregator.ts"],"names":["SamplerAggregator","SamplerAggregator.constructor"],"mappings":";;;;;;;;;;;;;;;;;;;;YAIA;gBAAuCA,qCAAUA;gBAC7CA;oBACIC,kBAAMA,SAASA,CAACA,CAACA;oBACjBA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,MAAMA,CAACA,CAACA,IAAIA,mDAAuBA,CAACA,MAAMA,EAAEA,gBAAQA,EAAEA,OAAOA,CAACA,CAACA,CAACA,CAACA;gBACvGA,CAACA;gBACLD,wBAACA;YAADA,CAACA,AALD,EAAuC,uBAAU,EAKhD;YALD,iDAKC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/sampler_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "./aggregator"; 2 | import {EnumAggregatorParameter} from "./parameters/enum_aggregator_parameter"; 3 | import {TimeUnit} from "./utils"; 4 | 5 | export class SamplerAggregator extends Aggregator { 6 | constructor() { 7 | super("sampler"); 8 | this.parameters = this.parameters.concat([new EnumAggregatorParameter("unit", TimeUnit, "every")]); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /dist/beans/aggregators/scale_aggregator.d.ts: -------------------------------------------------------------------------------- 1 | import { Aggregator } from "./aggregator"; 2 | export declare class ScaleAggregator extends Aggregator { 3 | constructor(); 4 | } 5 | -------------------------------------------------------------------------------- /dist/beans/aggregators/scale_aggregator.js: -------------------------------------------------------------------------------- 1 | System.register(["./aggregator", "./parameters/any_aggregator_parameter"], function(exports_1) { 2 | var __extends = (this && this.__extends) || function (d, b) { 3 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 4 | function __() { this.constructor = d; } 5 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 6 | }; 7 | var aggregator_1, any_aggregator_parameter_1; 8 | var ScaleAggregator; 9 | return { 10 | setters:[ 11 | function (aggregator_1_1) { 12 | aggregator_1 = aggregator_1_1; 13 | }, 14 | function (any_aggregator_parameter_1_1) { 15 | any_aggregator_parameter_1 = any_aggregator_parameter_1_1; 16 | }], 17 | execute: function() { 18 | ScaleAggregator = (function (_super) { 19 | __extends(ScaleAggregator, _super); 20 | function ScaleAggregator() { 21 | _super.call(this, "scale"); 22 | this.parameters = this.parameters.concat([new any_aggregator_parameter_1.AnyAggregatorParameter("factor", "by")]); 23 | } 24 | return ScaleAggregator; 25 | })(aggregator_1.Aggregator); 26 | exports_1("ScaleAggregator", ScaleAggregator); 27 | } 28 | } 29 | }); 30 | //# sourceMappingURL=scale_aggregator.js.map -------------------------------------------------------------------------------- /dist/beans/aggregators/scale_aggregator.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"scale_aggregator.js","sourceRoot":"","sources":["scale_aggregator.ts"],"names":["ScaleAggregator","ScaleAggregator.constructor"],"mappings":";;;;;;;;;;;;;;;;;YAGA;gBAAqCA,mCAAUA;gBAC3CA;oBACIC,kBAAMA,OAAOA,CAACA,CAACA;oBACfA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,MAAMA,CAACA,CAACA,IAAIA,iDAAsBA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,CAACA,CAACA,CAACA;gBAC3FA,CAACA;gBACLD,sBAACA;YAADA,CAACA,AALD,EAAqC,uBAAU,EAK9C;YALD,6CAKC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/scale_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "./aggregator"; 2 | import {AnyAggregatorParameter} from "./parameters/any_aggregator_parameter"; 3 | 4 | export class ScaleAggregator extends Aggregator { 5 | constructor() { 6 | super("scale"); 7 | this.parameters = this.parameters.concat([new AnyAggregatorParameter("factor", "by")]); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /dist/beans/aggregators/sma_aggregator.d.ts: -------------------------------------------------------------------------------- 1 | import { Aggregator } from "./aggregator"; 2 | export declare class SmaAggregator extends Aggregator { 3 | constructor(); 4 | } 5 | -------------------------------------------------------------------------------- /dist/beans/aggregators/sma_aggregator.js: -------------------------------------------------------------------------------- 1 | System.register(["./aggregator", "./parameters/any_aggregator_parameter"], function(exports_1) { 2 | var __extends = (this && this.__extends) || function (d, b) { 3 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 4 | function __() { this.constructor = d; } 5 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 6 | }; 7 | var aggregator_1, any_aggregator_parameter_1; 8 | var SmaAggregator; 9 | return { 10 | setters:[ 11 | function (aggregator_1_1) { 12 | aggregator_1 = aggregator_1_1; 13 | }, 14 | function (any_aggregator_parameter_1_1) { 15 | any_aggregator_parameter_1 = any_aggregator_parameter_1_1; 16 | }], 17 | execute: function() { 18 | SmaAggregator = (function (_super) { 19 | __extends(SmaAggregator, _super); 20 | function SmaAggregator() { 21 | _super.call(this, "sma"); 22 | this.parameters = this.parameters.concat([new any_aggregator_parameter_1.AnyAggregatorParameter("size")]); 23 | } 24 | return SmaAggregator; 25 | })(aggregator_1.Aggregator); 26 | exports_1("SmaAggregator", SmaAggregator); 27 | } 28 | } 29 | }); 30 | //# sourceMappingURL=sma_aggregator.js.map -------------------------------------------------------------------------------- /dist/beans/aggregators/sma_aggregator.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"sma_aggregator.js","sourceRoot":"","sources":["sma_aggregator.ts"],"names":["SmaAggregator","SmaAggregator.constructor"],"mappings":";;;;;;;;;;;;;;;;;YAGA;gBAAmCA,iCAAUA;gBACzCA;oBACIC,kBAAMA,KAAKA,CAACA,CAACA;oBACbA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,MAAMA,CAACA,CAACA,IAAIA,iDAAsBA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA;gBACnFA,CAACA;gBACLD,oBAACA;YAADA,CAACA,AALD,EAAmC,uBAAU,EAK5C;YALD,yCAKC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/sma_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "./aggregator"; 2 | import {AnyAggregatorParameter} from "./parameters/any_aggregator_parameter"; 3 | 4 | export class SmaAggregator extends Aggregator { 5 | constructor() { 6 | super("sma"); 7 | this.parameters = this.parameters.concat([new AnyAggregatorParameter("size")]); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /dist/beans/aggregators/trim_aggregator.d.ts: -------------------------------------------------------------------------------- 1 | import { Aggregator } from "./aggregator"; 2 | export declare class TrimAggregator extends Aggregator { 3 | constructor(); 4 | } 5 | -------------------------------------------------------------------------------- /dist/beans/aggregators/trim_aggregator.js: -------------------------------------------------------------------------------- 1 | System.register(["./aggregator", "./parameters/enum_aggregator_parameter", "./utils"], function(exports_1) { 2 | var __extends = (this && this.__extends) || function (d, b) { 3 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 4 | function __() { this.constructor = d; } 5 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 6 | }; 7 | var aggregator_1, enum_aggregator_parameter_1, utils_1; 8 | var TrimAggregator; 9 | return { 10 | setters:[ 11 | function (aggregator_1_1) { 12 | aggregator_1 = aggregator_1_1; 13 | }, 14 | function (enum_aggregator_parameter_1_1) { 15 | enum_aggregator_parameter_1 = enum_aggregator_parameter_1_1; 16 | }, 17 | function (utils_1_1) { 18 | utils_1 = utils_1_1; 19 | }], 20 | execute: function() { 21 | TrimAggregator = (function (_super) { 22 | __extends(TrimAggregator, _super); 23 | function TrimAggregator() { 24 | _super.call(this, "trim"); 25 | this.parameters = this.parameters.concat([new enum_aggregator_parameter_1.EnumAggregatorParameter("trim", utils_1.Trim, "by")]); 26 | } 27 | return TrimAggregator; 28 | })(aggregator_1.Aggregator); 29 | exports_1("TrimAggregator", TrimAggregator); 30 | } 31 | } 32 | }); 33 | //# sourceMappingURL=trim_aggregator.js.map -------------------------------------------------------------------------------- /dist/beans/aggregators/trim_aggregator.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"trim_aggregator.js","sourceRoot":"","sources":["trim_aggregator.ts"],"names":["TrimAggregator","TrimAggregator.constructor"],"mappings":";;;;;;;;;;;;;;;;;;;;YAIA;gBAAoCA,kCAAUA;gBAC1CA;oBACIC,kBAAMA,MAAMA,CAACA,CAACA;oBACdA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,MAAMA,CAACA,CAACA,IAAIA,mDAAuBA,CAACA,MAAMA,EAAEA,YAAIA,EAAEA,IAAIA,CAACA,CAACA,CAACA,CAACA;gBAChGA,CAACA;gBACLD,qBAACA;YAADA,CAACA,AALD,EAAoC,uBAAU,EAK7C;YALD,2CAKC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/trim_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "./aggregator"; 2 | import {EnumAggregatorParameter} from "./parameters/enum_aggregator_parameter"; 3 | import {Trim} from "./utils"; 4 | 5 | export class TrimAggregator extends Aggregator { 6 | constructor() { 7 | super("trim"); 8 | this.parameters = this.parameters.concat([new EnumAggregatorParameter("trim", Trim, "by")]); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /dist/beans/aggregators/utils.d.ts: -------------------------------------------------------------------------------- 1 | export declare enum TimeUnit { 2 | MILLISECONDS = 0, 3 | SECONDS = 1, 4 | MINUTES = 2, 5 | HOURS = 3, 6 | DAYS = 4, 7 | WEEKS = 5, 8 | MONTHS = 6, 9 | YEARS = 7, 10 | } 11 | export declare enum Trim { 12 | first = 0, 13 | last = 1, 14 | both = 2, 15 | } 16 | export declare enum Alignment { 17 | NONE = 0, 18 | START_TIME = 1, 19 | SAMPLING = 2, 20 | } 21 | export declare function EnumValues(enumType: any): any; 22 | -------------------------------------------------------------------------------- /dist/beans/aggregators/utils.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":["EnumValues","TimeUnit","Trim","Alignment"],"mappings":";;;IAcA,oBAA2B,QAAQ;QAC/BA,MAAMA,CAACA,gBAACA,CAACA,MAAMA,CAACA,gBAACA,CAACA,MAAMA,CAACA,QAAQA,CAACA,EAAEA,UAACA,KAAKA,IAAKA,OAAAA,CAACA,gBAACA,CAACA,QAAQA,CAACA,KAAKA,CAACA,EAAlBA,CAAkBA,CAACA,CAACA;IACvEA,CAACA;IAFD,mCAEC,CAAA;;;;;;;YAdD,WAAY,QAAQ;gBAChBC,uDAAYA,CAAAA;gBAAEA,6CAAOA,CAAAA;gBAAEA,6CAAOA,CAAAA;gBAAEA,yCAAKA,CAAAA;gBAAEA,uCAAIA,CAAAA;gBAAEA,yCAAKA,CAAAA;gBAAEA,2CAAMA,CAAAA;gBAAEA,yCAAKA,CAAAA;YACrEA,CAACA,EAFW,QAAQ,KAAR,QAAQ,QAEnB;4CAAA;YAED,WAAY,IAAI;gBACZC,iCAAKA,CAAAA;gBAAEA,+BAAIA,CAAAA;gBAAEA,+BAAIA,CAAAA;YACrBA,CAACA,EAFW,IAAI,KAAJ,IAAI,QAEf;oCAAA;YAED,WAAY,SAAS;gBACjBC,yCAAIA,CAAAA;gBAAEA,qDAAUA,CAAAA;gBAAEA,iDAAQA,CAAAA;YAC9BA,CAACA,EAFW,SAAS,KAAT,SAAS,QAEpB;8CAAA"} -------------------------------------------------------------------------------- /dist/beans/aggregators/utils.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | 3 | export enum TimeUnit { 4 | MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS 5 | } 6 | 7 | export enum Trim { 8 | first, last, both 9 | } 10 | 11 | export enum Alignment { 12 | NONE, START_TIME, SAMPLING 13 | } 14 | 15 | export function EnumValues(enumType) { 16 | return _.pickBy(_.values(enumType), (value) => !_.isNumber(value)); 17 | } 18 | -------------------------------------------------------------------------------- /dist/beans/function.d.ts: -------------------------------------------------------------------------------- 1 | export declare class TemplatingFunction { 2 | name: string; 3 | body: any; 4 | regexp: string; 5 | constructor(name: string, body: any); 6 | run(args: string[]): any; 7 | private getRegexp(); 8 | } 9 | -------------------------------------------------------------------------------- /dist/beans/function.js: -------------------------------------------------------------------------------- 1 | System.register([], function(exports_1) { 2 | var TemplatingFunction; 3 | return { 4 | setters:[], 5 | execute: function() { 6 | TemplatingFunction = (function () { 7 | function TemplatingFunction(name, body) { 8 | this.name = name; 9 | this.body = body; 10 | this.regexp = this.getRegexp(); 11 | } 12 | TemplatingFunction.prototype.run = function (args) { 13 | return this.body.apply(this, args); 14 | }; 15 | TemplatingFunction.prototype.getRegexp = function () { 16 | return "^" + this.name + "\\(([\\S ]+)\\)" + "$"; 17 | }; 18 | return TemplatingFunction; 19 | })(); 20 | exports_1("TemplatingFunction", TemplatingFunction); 21 | } 22 | } 23 | }); 24 | //# sourceMappingURL=function.js.map -------------------------------------------------------------------------------- /dist/beans/function.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"function.js","sourceRoot":"","sources":["function.ts"],"names":["TemplatingFunction","TemplatingFunction.constructor","TemplatingFunction.run","TemplatingFunction.getRegexp"],"mappings":";;;;;YAAA;gBAKIA,4BAAYA,IAAYA,EAAEA,IAASA;oBAC/BC,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;oBACjBA,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;oBACjBA,IAAIA,CAACA,MAAMA,GAAGA,IAAIA,CAACA,SAASA,EAAEA,CAACA;gBACnCA,CAACA;gBAEMD,gCAAGA,GAAVA,UAAWA,IAAcA;oBACrBE,MAAMA,CAACA,IAAIA,CAACA,IAAIA,OAATA,IAAIA,EAASA,IAAIA,CAACA,CAACA;gBAC9BA,CAACA;gBAEOF,sCAASA,GAAjBA;oBACIG,MAAMA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,IAAIA,GAAGA,iBAAiBA,GAAGA,GAAGA,CAACA;gBACrDA,CAACA;gBACLH,yBAACA;YAADA,CAACA,AAlBD,IAkBC;YAlBD,mDAkBC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/function.ts: -------------------------------------------------------------------------------- 1 | export class TemplatingFunction { 2 | public name: string; 3 | public body: any; 4 | public regexp: string; 5 | 6 | constructor(name: string, body: any) { 7 | this.name = name; 8 | this.body = body; 9 | this.regexp = this.getRegexp(); 10 | } 11 | 12 | public run(args: string[]) { 13 | return this.body(...args); 14 | } 15 | 16 | private getRegexp(): string { 17 | return "^" + this.name + "\\(([\\S ]+)\\)" + "$"; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /dist/beans/request/datapoints_query.d.ts: -------------------------------------------------------------------------------- 1 | import { MetricQuery } from "./metric_query"; 2 | export interface Moment { 3 | unix(): any; 4 | } 5 | export declare class DatapointsQuery { 6 | start_absolute: number; 7 | end_absolute: number; 8 | metrics: MetricQuery[]; 9 | cache_time: number; 10 | constructor(startAbsolute: Moment, endAbsolute: Moment, metrics: MetricQuery[]); 11 | } 12 | -------------------------------------------------------------------------------- /dist/beans/request/datapoints_query.js: -------------------------------------------------------------------------------- 1 | System.register([], function(exports_1) { 2 | var DatapointsQuery; 3 | return { 4 | setters:[], 5 | execute: function() { 6 | DatapointsQuery = (function () { 7 | function DatapointsQuery(startAbsolute, endAbsolute, metrics) { 8 | this.cache_time = 0; 9 | this.start_absolute = startAbsolute.unix() * 1000; 10 | this.end_absolute = endAbsolute.unix() * 1000; 11 | this.metrics = metrics; 12 | } 13 | return DatapointsQuery; 14 | })(); 15 | exports_1("DatapointsQuery", DatapointsQuery); 16 | } 17 | } 18 | }); 19 | //# sourceMappingURL=datapoints_query.js.map -------------------------------------------------------------------------------- /dist/beans/request/datapoints_query.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"datapoints_query.js","sourceRoot":"","sources":["datapoints_query.ts"],"names":["DatapointsQuery","DatapointsQuery.constructor"],"mappings":";;;;;YAOA;gBAMIA,yBAAYA,aAAqBA,EAAEA,WAAmBA,EAAEA,OAAsBA;oBAFvEC,eAAUA,GAAWA,CAACA,CAACA;oBAG1BA,IAAIA,CAACA,cAAcA,GAAGA,aAAaA,CAACA,IAAIA,EAAEA,GAAGA,IAAIA,CAACA;oBAClDA,IAAIA,CAACA,YAAYA,GAAGA,WAAWA,CAACA,IAAIA,EAAEA,GAAGA,IAAIA,CAACA;oBAC9CA,IAAIA,CAACA,OAAOA,GAAGA,OAAOA,CAACA;gBAC3BA,CAACA;gBACLD,sBAACA;YAADA,CAACA,AAXD,IAWC;YAXD,6CAWC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/request/datapoints_query.ts: -------------------------------------------------------------------------------- 1 | import {MetricQuery} from "./metric_query"; 2 | 3 | // todo: to be replaced with grafana-sdk-mock 4 | export interface Moment { 5 | unix(); 6 | } 7 | 8 | export class DatapointsQuery { 9 | public start_absolute: number; 10 | public end_absolute: number; 11 | public metrics: MetricQuery[]; 12 | public cache_time: number = 0; 13 | 14 | constructor(startAbsolute: Moment, endAbsolute: Moment, metrics: MetricQuery[]) { 15 | this.start_absolute = startAbsolute.unix() * 1000; 16 | this.end_absolute = endAbsolute.unix() * 1000; 17 | this.metrics = metrics; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /dist/beans/request/group_by.d.ts: -------------------------------------------------------------------------------- 1 | import { GroupByTimeEntry } from "../../directives/group_by/group_by_time_entry"; 2 | export declare class GroupBy { 3 | tags: string[]; 4 | value: string[]; 5 | time: GroupByTimeEntry[]; 6 | } 7 | -------------------------------------------------------------------------------- /dist/beans/request/group_by.js: -------------------------------------------------------------------------------- 1 | System.register([], function(exports_1) { 2 | var GroupBy; 3 | return { 4 | setters:[], 5 | execute: function() { 6 | GroupBy = (function () { 7 | function GroupBy() { 8 | this.tags = []; 9 | this.value = []; 10 | this.time = []; 11 | } 12 | return GroupBy; 13 | })(); 14 | exports_1("GroupBy", GroupBy); 15 | } 16 | } 17 | }); 18 | //# sourceMappingURL=group_by.js.map -------------------------------------------------------------------------------- /dist/beans/request/group_by.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"group_by.js","sourceRoot":"","sources":["group_by.ts"],"names":["GroupBy","GroupBy.constructor"],"mappings":";;;;;YAEA;gBAAAA;oBACWC,SAAIA,GAAaA,EAAEA,CAACA;oBACpBA,UAAKA,GAAaA,EAAEA,CAACA;oBACrBA,SAAIA,GAAuBA,EAAEA,CAACA;gBACzCA,CAACA;gBAADD,cAACA;YAADA,CAACA,AAJD,IAIC;YAJD,6BAIC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/request/group_by.ts: -------------------------------------------------------------------------------- 1 | import {GroupByTimeEntry} from "../../directives/group_by/group_by_time_entry"; 2 | 3 | export class GroupBy { 4 | public tags: string[] = []; 5 | public value: string[] = []; 6 | public time: GroupByTimeEntry[] = []; 7 | } 8 | -------------------------------------------------------------------------------- /dist/beans/request/legacy_target_converter.d.ts: -------------------------------------------------------------------------------- 1 | import { KairosDBTarget } from "./target"; 2 | export declare class LegacyTargetConverter { 3 | convert(oldTarget: any): KairosDBTarget; 4 | isApplicable(target: any): boolean; 5 | private mapGroupByTime(groupBy); 6 | private mapGroupByValue(groupBy); 7 | private convertLegacyRangeAggregator(horizontalAggregator); 8 | private convertLegacyPercentileAggregator(horizontalAggregator); 9 | private convertLegacyAggregator(horizontalAggregator); 10 | private findParameterIndex(aggregator, parameterName); 11 | } 12 | -------------------------------------------------------------------------------- /dist/beans/request/metric_query.d.ts: -------------------------------------------------------------------------------- 1 | export declare class MetricQuery { 2 | name: string; 3 | tags: any; 4 | limit: number; 5 | aggregators: any[]; 6 | group_by: any[]; 7 | constructor(name: string, tags: any, aggregators: any[], group_by: any[]); 8 | } 9 | -------------------------------------------------------------------------------- /dist/beans/request/metric_query.js: -------------------------------------------------------------------------------- 1 | System.register([], function(exports_1) { 2 | var MetricQuery; 3 | return { 4 | setters:[], 5 | execute: function() { 6 | MetricQuery = (function () { 7 | function MetricQuery(name, tags, aggregators, group_by) { 8 | this.limit = 0; 9 | this.name = name; 10 | this.tags = tags; 11 | this.aggregators = aggregators; 12 | this.group_by = group_by; 13 | } 14 | return MetricQuery; 15 | })(); 16 | exports_1("MetricQuery", MetricQuery); 17 | } 18 | } 19 | }); 20 | //# sourceMappingURL=metric_query.js.map -------------------------------------------------------------------------------- /dist/beans/request/metric_query.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"metric_query.js","sourceRoot":"","sources":["metric_query.ts"],"names":["MetricQuery","MetricQuery.constructor"],"mappings":";;;;;YAAA;gBAOIA,qBAAYA,IAAYA,EAAEA,IAASA,EAAEA,WAAkBA,EAAEA,QAAeA;oBAJjEC,UAAKA,GAAWA,CAACA,CAACA;oBAKrBA,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;oBACjBA,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;oBACjBA,IAAIA,CAACA,WAAWA,GAAGA,WAAWA,CAACA;oBAC/BA,IAAIA,CAACA,QAAQA,GAAGA,QAAQA,CAACA;gBAC7BA,CAACA;gBACLD,kBAACA;YAADA,CAACA,AAbD,IAaC;YAbD,qCAaC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/request/metric_query.ts: -------------------------------------------------------------------------------- 1 | export class MetricQuery { 2 | public name: string; 3 | public tags: any; 4 | public limit: number = 0; 5 | public aggregators: any[]; 6 | public group_by: any[]; 7 | 8 | constructor(name: string, tags: any, aggregators: any[], group_by: any[]) { 9 | this.name = name; 10 | this.tags = tags; 11 | this.aggregators = aggregators; 12 | this.group_by = group_by; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /dist/beans/request/metric_tags.d.ts: -------------------------------------------------------------------------------- 1 | export declare class MetricTags { 2 | tags: { 3 | [key: string]: string[]; 4 | }; 5 | size: number; 6 | initialized: boolean; 7 | combinations: number; 8 | multiValuedTags: string[]; 9 | updateTags(tags: any): void; 10 | private updateInfo(); 11 | } 12 | -------------------------------------------------------------------------------- /dist/beans/request/metric_tags.js: -------------------------------------------------------------------------------- 1 | System.register(["lodash"], function(exports_1) { 2 | var lodash_1; 3 | var MetricTags; 4 | return { 5 | setters:[ 6 | function (lodash_1_1) { 7 | lodash_1 = lodash_1_1; 8 | }], 9 | execute: function() { 10 | MetricTags = (function () { 11 | function MetricTags() { 12 | this.tags = {}; 13 | this.initialized = false; 14 | } 15 | MetricTags.prototype.updateTags = function (tags) { 16 | this.tags = tags; 17 | this.updateInfo(); 18 | this.initialized = true; 19 | }; 20 | MetricTags.prototype.updateInfo = function () { 21 | var notEmptyTags = lodash_1.default.pickBy(this.tags, function (value) { return value.length; }); 22 | this.combinations = 23 | lodash_1.default.reduce(lodash_1.default.map(notEmptyTags, function (values) { return values.length; }), function (length1, length2) { return length1 * length2; }); 24 | this.multiValuedTags = lodash_1.default.keys(lodash_1.default.pickBy(notEmptyTags, function (tagValues) { return tagValues.length > 1; })); 25 | this.size = lodash_1.default.keys(this.tags).length; 26 | }; 27 | return MetricTags; 28 | })(); 29 | exports_1("MetricTags", MetricTags); 30 | } 31 | } 32 | }); 33 | //# sourceMappingURL=metric_tags.js.map -------------------------------------------------------------------------------- /dist/beans/request/metric_tags.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"metric_tags.js","sourceRoot":"","sources":["metric_tags.ts"],"names":["MetricTags","MetricTags.constructor","MetricTags.updateTags","MetricTags.updateInfo"],"mappings":";;;;;;;;;YAEA;gBAAAA;oBACWC,SAAIA,GAA8BA,EAAEA,CAACA;oBAErCA,gBAAWA,GAAYA,KAAKA,CAACA;gBAiBxCA,CAACA;gBAbUD,+BAAUA,GAAjBA,UAAkBA,IAAIA;oBAClBE,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;oBACjBA,IAAIA,CAACA,UAAUA,EAAEA,CAACA;oBAClBA,IAAIA,CAACA,WAAWA,GAAGA,IAAIA,CAACA;gBAC5BA,CAACA;gBAEOF,+BAAUA,GAAlBA;oBACIG,IAAMA,YAAYA,GAAGA,gBAACA,CAACA,MAAMA,CAACA,IAAIA,CAACA,IAAIA,EAAEA,UAACA,KAAKA,IAAKA,OAAAA,KAAKA,CAACA,MAAMA,EAAZA,CAAYA,CAACA,CAACA;oBAClEA,IAAIA,CAACA,YAAYA;wBACbA,gBAACA,CAACA,MAAMA,CAACA,gBAACA,CAACA,GAAGA,CAACA,YAAYA,EAAEA,UAACA,MAAMA,IAAKA,OAAAA,MAAMA,CAACA,MAAMA,EAAbA,CAAaA,CAACA,EAAEA,UAACA,OAAOA,EAAEA,OAAOA,IAAKA,OAAAA,OAAOA,GAAGA,OAAOA,EAAjBA,CAAiBA,CAACA,CAACA;oBACtGA,IAAIA,CAACA,eAAeA,GAAGA,gBAACA,CAACA,IAAIA,CAACA,gBAACA,CAACA,MAAMA,CAACA,YAAYA,EAAEA,UAACA,SAASA,IAAKA,OAAAA,SAASA,CAACA,MAAMA,GAAGA,CAACA,EAApBA,CAAoBA,CAACA,CAACA,CAACA;oBAC3FA,IAAIA,CAACA,IAAIA,GAAGA,gBAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA,MAAMA,CAACA;gBACzCA,CAACA;gBACLH,iBAACA;YAADA,CAACA,AApBD,IAoBC;YApBD,mCAoBC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/request/metric_tags.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | 3 | export class MetricTags { 4 | public tags: {[key: string]: string[]} = {}; 5 | public size: number; 6 | public initialized: boolean = false; 7 | public combinations: number; 8 | public multiValuedTags: string[]; 9 | 10 | public updateTags(tags) { 11 | this.tags = tags; 12 | this.updateInfo(); 13 | this.initialized = true; 14 | } 15 | 16 | private updateInfo() { 17 | const notEmptyTags = _.pickBy(this.tags, (value) => value.length); 18 | this.combinations = 19 | _.reduce(_.map(notEmptyTags, (values) => values.length), (length1, length2) => length1 * length2); 20 | this.multiValuedTags = _.keys(_.pickBy(notEmptyTags, (tagValues) => tagValues.length > 1)); 21 | this.size = _.keys(this.tags).length; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /dist/beans/request/target.d.ts: -------------------------------------------------------------------------------- 1 | import { Aggregator } from "../aggregators/aggregator"; 2 | import { GroupBy } from "./group_by"; 3 | export declare class KairosDBTarget { 4 | metricName: string; 5 | alias: string; 6 | tags: { 7 | [key: string]: string[]; 8 | }; 9 | groupBy: GroupBy; 10 | aggregators: Aggregator[]; 11 | } 12 | -------------------------------------------------------------------------------- /dist/beans/request/target.js: -------------------------------------------------------------------------------- 1 | System.register(["./group_by"], function(exports_1) { 2 | var group_by_1; 3 | var KairosDBTarget; 4 | return { 5 | setters:[ 6 | function (group_by_1_1) { 7 | group_by_1 = group_by_1_1; 8 | }], 9 | execute: function() { 10 | KairosDBTarget = (function () { 11 | function KairosDBTarget() { 12 | this.metricName = undefined; 13 | this.alias = undefined; 14 | this.tags = {}; 15 | this.groupBy = new group_by_1.GroupBy(); 16 | this.aggregators = []; 17 | } 18 | return KairosDBTarget; 19 | })(); 20 | exports_1("KairosDBTarget", KairosDBTarget); 21 | } 22 | } 23 | }); 24 | //# sourceMappingURL=target.js.map -------------------------------------------------------------------------------- /dist/beans/request/target.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"target.js","sourceRoot":"","sources":["target.ts"],"names":["KairosDBTarget","KairosDBTarget.constructor"],"mappings":";;;;;;;;;YAGA;gBAAAA;oBACWC,eAAUA,GAAWA,SAASA,CAACA;oBAC/BA,UAAKA,GAAWA,SAASA,CAACA;oBAC1BA,SAAIA,GAA8BA,EAAEA,CAACA;oBACrCA,YAAOA,GAAYA,IAAIA,kBAAOA,EAAEA,CAACA;oBACjCA,gBAAWA,GAAiBA,EAAEA,CAACA;gBAC1CA,CAACA;gBAADD,qBAACA;YAADA,CAACA,AAND,IAMC;YAND,2CAMC,CAAA"} -------------------------------------------------------------------------------- /dist/beans/request/target.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "../aggregators/aggregator"; 2 | import {GroupBy} from "./group_by"; 3 | 4 | export class KairosDBTarget { 5 | public metricName: string = undefined; 6 | public alias: string = undefined; 7 | public tags: {[key: string]: string[]} = {}; 8 | public groupBy: GroupBy = new GroupBy(); 9 | public aggregators: Aggregator[] = []; 10 | } 11 | -------------------------------------------------------------------------------- /dist/controllers/templating_functions_ctrl.d.ts: -------------------------------------------------------------------------------- 1 | import { TemplatingFunction } from "../beans/function"; 2 | import { TemplatingFunctionResolver } from "../utils/templating_function_resolver"; 3 | export declare class TemplatingFunctionsCtrl { 4 | private functions; 5 | private templatingFunctionResolver; 6 | constructor(templatingFunctionResolver: TemplatingFunctionResolver); 7 | register(func: TemplatingFunction): void; 8 | resolve(functionBody: string): () => Promise; 9 | } 10 | -------------------------------------------------------------------------------- /dist/controllers/templating_functions_ctrl.js: -------------------------------------------------------------------------------- 1 | System.register(["lodash"], function(exports_1) { 2 | var lodash_1; 3 | var TemplatingFunctionsCtrl; 4 | return { 5 | setters:[ 6 | function (lodash_1_1) { 7 | lodash_1 = lodash_1_1; 8 | }], 9 | execute: function() { 10 | TemplatingFunctionsCtrl = (function () { 11 | function TemplatingFunctionsCtrl(templatingFunctionResolver) { 12 | this.functions = []; 13 | this.templatingFunctionResolver = templatingFunctionResolver; 14 | } 15 | TemplatingFunctionsCtrl.prototype.register = function (func) { 16 | this.functions.push(func); 17 | }; 18 | TemplatingFunctionsCtrl.prototype.resolve = function (functionBody) { 19 | var matchedFunction = lodash_1.default.find(this.functions, function (func) { return new RegExp(func.regexp).test(functionBody); }); 20 | return this.templatingFunctionResolver.unpackFunction(matchedFunction, functionBody); 21 | }; 22 | return TemplatingFunctionsCtrl; 23 | })(); 24 | exports_1("TemplatingFunctionsCtrl", TemplatingFunctionsCtrl); 25 | } 26 | } 27 | }); 28 | //# sourceMappingURL=templating_functions_ctrl.js.map -------------------------------------------------------------------------------- /dist/controllers/templating_functions_ctrl.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"templating_functions_ctrl.js","sourceRoot":"","sources":["templating_functions_ctrl.ts"],"names":["TemplatingFunctionsCtrl","TemplatingFunctionsCtrl.constructor","TemplatingFunctionsCtrl.register","TemplatingFunctionsCtrl.resolve"],"mappings":";;;;;;;;;YAIA;gBAIIA,iCAAYA,0BAAsDA;oBAH1DC,cAASA,GAAyBA,EAAEA,CAACA;oBAIzCA,IAAIA,CAACA,0BAA0BA,GAAGA,0BAA0BA,CAACA;gBACjEA,CAACA;gBAEMD,0CAAQA,GAAfA,UAAgBA,IAAwBA;oBACpCE,IAAIA,CAACA,SAASA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;gBAC9BA,CAACA;gBAEMF,yCAAOA,GAAdA,UAAeA,YAAoBA;oBAC/BG,IAAMA,eAAeA,GAAGA,gBAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA,SAASA,EAAEA,UAACA,IAAIA,IAAKA,OAAAA,IAAIA,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,IAAIA,CAACA,YAAYA,CAACA,EAA1CA,CAA0CA,CAACA,CAACA;oBACrGA,MAAMA,CAACA,IAAIA,CAACA,0BAA0BA,CAACA,cAAcA,CAACA,eAAeA,EAAEA,YAAYA,CAACA,CAACA;gBACzFA,CAACA;gBACLH,8BAACA;YAADA,CAACA,AAhBD,IAgBC;YAhBD,6DAgBC,CAAA"} -------------------------------------------------------------------------------- /dist/controllers/templating_functions_ctrl.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {TemplatingFunction} from "../beans/function"; 3 | import {TemplatingFunctionResolver} from "../utils/templating_function_resolver"; 4 | 5 | export class TemplatingFunctionsCtrl { 6 | private functions: TemplatingFunction[] = []; 7 | private templatingFunctionResolver: TemplatingFunctionResolver; 8 | 9 | constructor(templatingFunctionResolver: TemplatingFunctionResolver) { 10 | this.templatingFunctionResolver = templatingFunctionResolver; 11 | } 12 | 13 | public register(func: TemplatingFunction) { 14 | this.functions.push(func); 15 | } 16 | 17 | public resolve(functionBody: string) { 18 | const matchedFunction = _.find(this.functions, (func) => new RegExp(func.regexp).test(functionBody)); 19 | return this.templatingFunctionResolver.unpackFunction(matchedFunction, functionBody); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /dist/core/config_ctrl.d.ts: -------------------------------------------------------------------------------- 1 | export declare class KairosDBConfigCtrl { 2 | static templateUrl: string; 3 | current: any; 4 | } 5 | -------------------------------------------------------------------------------- /dist/core/config_ctrl.js: -------------------------------------------------------------------------------- 1 | System.register([], function(exports_1) { 2 | var KairosDBConfigCtrl; 3 | return { 4 | setters:[], 5 | execute: function() { 6 | KairosDBConfigCtrl = (function () { 7 | function KairosDBConfigCtrl() { 8 | } 9 | KairosDBConfigCtrl.templateUrl = "partials/config.html"; 10 | return KairosDBConfigCtrl; 11 | })(); 12 | exports_1("KairosDBConfigCtrl", KairosDBConfigCtrl); 13 | } 14 | } 15 | }); 16 | //# sourceMappingURL=config_ctrl.js.map -------------------------------------------------------------------------------- /dist/core/config_ctrl.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"config_ctrl.js","sourceRoot":"","sources":["config_ctrl.ts"],"names":["KairosDBConfigCtrl","KairosDBConfigCtrl.constructor"],"mappings":";;;;;YAAA;gBAAAA;gBAGAC,CAACA;gBAFeD,8BAAWA,GAAWA,sBAAsBA,CAACA;gBAE7DA,yBAACA;YAADA,CAACA,AAHD,IAGC;YAHD,mDAGC,CAAA"} -------------------------------------------------------------------------------- /dist/core/config_ctrl.ts: -------------------------------------------------------------------------------- 1 | export class KairosDBConfigCtrl { 2 | public static templateUrl: string = "partials/config.html"; 3 | public current: any; 4 | } 5 | -------------------------------------------------------------------------------- /dist/core/datasource.d.ts: -------------------------------------------------------------------------------- 1 | import { MetricNamesStore } from "./metric_names_store"; 2 | export declare class KairosDBDatasource { 3 | initialized: boolean; 4 | initializationError: boolean; 5 | metricNamesStore: MetricNamesStore; 6 | private type; 7 | private url; 8 | private withCredentials; 9 | private name; 10 | private basicAuth; 11 | private responseHandler; 12 | private templatingFunctionsCtrl; 13 | private promiseUtils; 14 | private targetValidator; 15 | private backendSrv; 16 | private templateSrv; 17 | private legacyTargetConverter; 18 | private templatingUtils; 19 | constructor(instanceSettings: any, $q: any, backendSrv: any, templateSrv: any); 20 | initialize(): void; 21 | query(options: any): any; 22 | getMetricTags(metricNameTemplate: any, filters?: {}): any; 23 | metricFindQuery(query: string): Promise<{ 24 | text: any; 25 | value: any; 26 | }[]>; 27 | getMetricNames(): any; 28 | private getRequestBuilder(scopedVars?); 29 | private executeRequest(request); 30 | private handleMetricTagsResponse(response); 31 | private registerTemplatingFunctions(); 32 | private getMetricNamesContaining(metricNamePart); 33 | private getMetricTagNames(metricName); 34 | private getMetricTagValues(metricName, tagName, filters); 35 | private mapToTemplatingValue(entry); 36 | } 37 | -------------------------------------------------------------------------------- /dist/core/metric_names_store.d.ts: -------------------------------------------------------------------------------- 1 | import { PromiseUtils } from "../utils/promise_utils"; 2 | import { KairosDBDatasource } from "./datasource"; 3 | export declare class MetricNamesStore { 4 | private initialized; 5 | private datasource; 6 | private cacheKey; 7 | private fetchingPromise; 8 | private promiseUtils; 9 | private metricNames; 10 | constructor(datasource: KairosDBDatasource, promiseUtils: PromiseUtils, datasourceUrl: string); 11 | getMetricNames(): Promise; 12 | private cacheInitialized(); 13 | private fetch(); 14 | } 15 | -------------------------------------------------------------------------------- /dist/core/metric_names_store.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"metric_names_store.js","sourceRoot":"","sources":["metric_names_store.ts"],"names":["MetricNamesStore","MetricNamesStore.constructor","MetricNamesStore.getMetricNames","MetricNamesStore.cacheInitialized","MetricNamesStore.fetch"],"mappings":";;;;;;;;;YAIA;gBAQIA,0BAAYA,UAA8BA,EAAEA,YAA0BA,EAAEA,aAAqBA;oBAPrFC,gBAAWA,GAAYA,KAAKA,CAACA;oBAQjCA,IAAIA,CAACA,QAAQA,GAAGA,wBAAwBA,GAAGA,aAAaA,CAACA;oBACzDA,IAAIA,CAACA,YAAYA,GAAGA,YAAYA,CAACA;oBACjCA,IAAIA,CAACA,UAAUA,GAAGA,UAAUA,CAACA;gBACjCA,CAACA;gBAEMD,yCAAcA,GAArBA;oBACIE,EAAEA,CAACA,CAACA,IAAIA,CAACA,gBAAgBA,EAAEA,CAACA,CAACA,CAACA;wBAC1BA,MAAMA,CAACA,IAAIA,CAACA,YAAYA,CAACA,eAAeA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA;oBAC/DA,CAACA;oBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,IAAIA,CAACA,eAAeA,CAACA,CAACA,CAACA;wBAC9BA,MAAMA,CAACA,IAAIA,CAACA,eAAeA,CAACA;oBAChCA,CAACA;oBAACA,IAAIA,CAACA,CAACA;wBACJA,MAAMA,CAACA,IAAIA,CAACA,KAAKA,EAAEA,CAACA;oBACxBA,CAACA;gBACLA,CAACA;gBAEOF,2CAAgBA,GAAxBA;oBACIG,MAAMA,CAACA,CAACA,gBAACA,CAACA,WAAWA,CAACA,MAAMA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA;gBACjDA,CAACA;gBAEOH,gCAAKA,GAAbA;oBAAAI,iBAUCA;oBATGA,IAAIA,CAACA,eAAeA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,cAAcA,EAAEA;yBAClDA,IAAIA,CAACA,UAACA,QAAQA,IAAKA,OAAAA,QAAQA,CAACA,IAAIA,CAACA,OAAOA,EAArBA,CAAqBA,CAACA;yBACzCA,IAAIA,CAACA,UAACA,WAAWA;wBACdA,KAAIA,CAACA,WAAWA,GAAGA,WAAWA,CAACA;wBAC/BA,MAAMA,CAACA,KAAIA,CAACA,QAAQA,CAACA,GAAGA,WAAWA,CAACA;wBACpCA,KAAIA,CAACA,WAAWA,GAAGA,IAAIA,CAACA;wBACxBA,MAAMA,CAACA,KAAIA,CAACA,WAAWA,CAACA;oBAC5BA,CAACA,CAACA,CAACA;oBACPA,MAAMA,CAACA,IAAIA,CAACA,eAAeA,CAACA;gBAChCA,CAACA;gBACLJ,uBAACA;YAADA,CAACA,AAvCD,IAuCC;YAvCD,+CAuCC,CAAA"} -------------------------------------------------------------------------------- /dist/core/metric_names_store.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {PromiseUtils} from "../utils/promise_utils"; 3 | import {KairosDBDatasource} from "./datasource"; 4 | 5 | export class MetricNamesStore { 6 | private initialized: boolean = false; 7 | private datasource: KairosDBDatasource; 8 | private cacheKey: string; 9 | private fetchingPromise: any; 10 | private promiseUtils: PromiseUtils; 11 | private metricNames: string[]; 12 | 13 | constructor(datasource: KairosDBDatasource, promiseUtils: PromiseUtils, datasourceUrl: string) { 14 | this.cacheKey = "KAIROSDB_METRIC_NAMES_" + datasourceUrl; 15 | this.promiseUtils = promiseUtils; 16 | this.datasource = datasource; 17 | } 18 | 19 | public getMetricNames(): Promise { 20 | if (this.cacheInitialized()) { 21 | return this.promiseUtils.resolvedPromise(this.metricNames); 22 | } else if (this.fetchingPromise) { 23 | return this.fetchingPromise; 24 | } else { 25 | return this.fetch(); 26 | } 27 | } 28 | 29 | private cacheInitialized() { 30 | return !_.isUndefined(window[this.cacheKey]); 31 | } 32 | 33 | private fetch(): Promise { 34 | this.fetchingPromise = this.datasource.getMetricNames() 35 | .then((response) => response.data.results) 36 | .then((metricNames) => { 37 | this.metricNames = metricNames; 38 | window[this.cacheKey] = metricNames; 39 | this.initialized = true; 40 | return this.metricNames; 41 | }); 42 | return this.fetchingPromise; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /dist/core/query_ctrl.d.ts: -------------------------------------------------------------------------------- 1 | import { QueryCtrl } from "app/plugins/sdk"; 2 | import { Aggregator } from "../beans/aggregators/aggregator"; 3 | export declare class KairosDBQueryCtrl extends QueryCtrl { 4 | static templateUrl: string; 5 | aggregators: Aggregator[]; 6 | tagsInitializationError: string; 7 | private targetValidator; 8 | private tags; 9 | private legacyTargetConverter; 10 | /** @ngInject **/ 11 | constructor($scope: any, $injector: any); 12 | private onTargetChange(newTarget, oldTarget); 13 | private onMetricNameChanged(newMetricName, oldMetricName); 14 | private buildNewTarget(metricName); 15 | private initializeTags(metricName); 16 | private isTargetChanged(newTarget, oldTarget); 17 | private clear(); 18 | } 19 | -------------------------------------------------------------------------------- /dist/core/request/group_bys_builder.d.ts: -------------------------------------------------------------------------------- 1 | import { TemplatingUtils } from "../../utils/templating_utils"; 2 | import { SamplingConverter } from "./sampling_converter"; 3 | export declare class GroupBysBuilder { 4 | private templatingUtils; 5 | private samplingConverter; 6 | constructor(templatingUtils: TemplatingUtils, samplingConverter: SamplingConverter); 7 | build(groupBysDefinition: any): any[]; 8 | private buildRangeSize(parameters); 9 | } 10 | -------------------------------------------------------------------------------- /dist/core/request/group_bys_builder.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"group_bys_builder.js","sourceRoot":"","sources":["group_bys_builder.ts"],"names":["GroupBysBuilder","GroupBysBuilder.constructor","GroupBysBuilder.build","GroupBysBuilder.buildRangeSize"],"mappings":";;;;;;;;;YAIA;gBAIIA,yBAAYA,eAAgCA,EAAEA,iBAAoCA;oBAC9EC,IAAIA,CAACA,eAAeA,GAAGA,eAAeA,CAACA;oBACvCA,IAAIA,CAACA,iBAAiBA,GAAGA,iBAAiBA,CAACA;gBAC/CA,CAACA;gBAEMD,+BAAKA,GAAZA,UAAaA,kBAAkBA;oBAA/BE,iBAwBCA;oBAvBGA,IAAMA,WAAWA,GAAGA,EAAEA,CAACA;oBACvBA,EAAEA,CAACA,CAACA,CAACA,gBAACA,CAACA,OAAOA,CAACA,kBAAkBA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;wBACtCA,WAAWA,CAACA,IAAIA,CAACA,EAACA,IAAIA,EAAEA,KAAKA,EAAEA,IAAIA,EAAEA,IAAIA,CAACA,eAAeA,CAACA,UAAUA,CAACA,kBAAkBA,CAACA,IAAIA,CAACA,EAACA,CAACA,CAACA;oBACpGA,CAACA;oBAEDA,IAAMA,WAAWA,GAAGA,kBAAkBA,CAACA,IAAIA,CAACA,GAAGA,CAACA,UAACA,KAAKA;wBAClDA,MAAMA,CAACA;4BACHA,WAAWA,EAAEA,KAAKA,CAACA,KAAKA;4BACxBA,IAAIA,EAAEA,MAAMA;4BACZA,UAAUA,EAAEA,KAAIA,CAACA,cAAcA,CAC3BA,KAAIA,CAACA,iBAAiBA,CAACA,YAAYA,CAACA,KAAKA,CAACA,QAAQA,CAACA;gCAC/CA,KAAIA,CAACA,iBAAiBA,CAACA,OAAOA,CAACA,KAAKA,CAACA,QAAQA,EAAEA,KAAKA,CAACA,IAAIA,CAACA,GAAGA,KAAKA,CAACA;yBAC9EA,CAACA;oBACNA,CAACA,CAACA,CAACA;oBAEHA,IAAMA,YAAYA,GAAGA,kBAAkBA,CAACA,KAAKA,CAACA,GAAGA,CAACA,UAACA,KAAKA;wBACpDA,MAAMA,CAACA;4BACHA,IAAIA,EAAEA,OAAOA;4BACbA,UAAUA,EAAEA,KAAKA;yBACpBA,CAACA;oBACNA,CAACA,CAACA,CAACA;oBAEHA,MAAMA,CAACA,gBAACA,CAACA,MAAMA,CAACA,WAAWA,EAAEA,WAAWA,EAAEA,YAAYA,CAACA,CAACA;gBAC5DA,CAACA;gBAEOF,wCAAcA,GAAtBA,UAAuBA,UAAUA;oBAC7BG,MAAMA,CAACA;wBACHA,IAAIA,EAAEA,UAAUA,CAACA,IAAIA;wBACrBA,KAAKA,EAAEA,UAAUA,CAACA,QAAQA;qBAC7BA,CAACA;gBACNA,CAACA;gBACLH,sBAACA;YAADA,CAACA,AAzCD,IAyCC;YAzCD,6CAyCC,CAAA"} -------------------------------------------------------------------------------- /dist/core/request/parameter_object_builder.d.ts: -------------------------------------------------------------------------------- 1 | import { AggregatorParameter } from "../../beans/aggregators/parameters/aggregator_parameter"; 2 | import { AutoValueSwitch } from "../../directives/auto_value_switch"; 3 | export declare class ParameterObjectBuilder { 4 | private autoValueEnabled; 5 | private autoValueDependentParameters; 6 | private autoIntervalValue; 7 | private autoIntervalUnit; 8 | constructor(interval: string, autoValueSwitch: AutoValueSwitch); 9 | build(parameter: AggregatorParameter): any; 10 | private buildAlignmentParameter(parameter); 11 | private buildSamplingParameter(parameter, autoValue); 12 | private buildDefault(parameter); 13 | private isOverriddenByAutoValue(parameter); 14 | } 15 | -------------------------------------------------------------------------------- /dist/core/request/query_builder.d.ts: -------------------------------------------------------------------------------- 1 | export declare class KairosDBQueryBuilder { 2 | private withCredentials; 3 | private url; 4 | private apiPath; 5 | private scopedVars; 6 | private groupBysBuilder; 7 | private templatingUtils; 8 | private samplingParameterConverter; 9 | constructor(withCredentials: boolean, url: string, apiPath: string, templateSrv: any, scopedVars: any); 10 | buildMetricNameQuery(): any; 11 | buildMetricTagsQuery(metricName: string, filters?: {}): any; 12 | buildDatapointsQuery(targets: any, options: any): any; 13 | private buildMetricQuery(target, defaultInterval); 14 | private unpackTags(tags); 15 | private convertAggregatorToQueryObject(aggregatorDefinition, defaultInterval); 16 | private convertParameters(aggregatorDefinition, defaultInterval); 17 | private buildRequest(requestStub); 18 | private buildRequestId(actionName, panelId); 19 | private buildUrl(urlStub); 20 | private buildTagsRequestBody(metricName, filters?); 21 | } 22 | -------------------------------------------------------------------------------- /dist/core/request/sampling_converter.d.ts: -------------------------------------------------------------------------------- 1 | export declare class SamplingConverter { 2 | private static MILLISECONDS_STRING; 3 | convert(value: any, unit: any): { 4 | interval: string; 5 | unit: string; 6 | }; 7 | isApplicable(value: any): boolean; 8 | private isFloat(value); 9 | private convertToMiliseconds(value, shortUnit); 10 | } 11 | -------------------------------------------------------------------------------- /dist/core/request/sampling_converter.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"sampling_converter.js","sourceRoot":"","sources":["sampling_converter.ts"],"names":["SamplingConverter","SamplingConverter.constructor","SamplingConverter.convert","SamplingConverter.isApplicable","SamplingConverter.isFloat","SamplingConverter.convertToMiliseconds"],"mappings":";;;;;;;;;;;;;;;YAIA;gBAAAA;gBAyBAC,CAACA;gBAtBUD,mCAAOA,GAAdA,UAAeA,KAAKA,EAAEA,IAAIA;oBACtBE,EAAEA,CAACA,CAACA,IAAIA,KAAKA,iBAAiBA,CAACA,mBAAmBA,CAACA,CAACA,CAACA;wBACjDA,MAAMA,IAAIA,KAAKA,CAACA,+CAA+CA,CAACA,CAACA;oBACrEA,CAACA;oBACDA,IAAMA,SAASA,GAAGA,+BAAaA,CAACA,YAAYA,CAACA,IAAIA,CAACA,CAACA;oBACnDA,MAAMA,CAACA;wBACHA,QAAQA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,UAAUA,CAACA,KAAKA,CAACA,EAAEA,SAASA,CAACA,CAACA,QAAQA,EAAEA;wBAC5EA,IAAIA,EAAEA,+BAAaA,CAACA,SAASA,CAACA,gBAAQA,CAACA,YAAYA,CAACA;qBACvDA,CAACA;gBACNA,CAACA;gBAEMF,wCAAYA,GAAnBA,UAAoBA,KAAKA;oBACrBG,MAAMA,CAACA,IAAIA,CAACA,OAAOA,CAACA,KAAKA,CAACA,CAACA;gBAC/BA,CAACA;gBAEOH,mCAAOA,GAAfA,UAAgBA,KAAKA;oBACjBI,MAAMA,CAACA,KAAKA,GAAGA,CAACA,KAAKA,CAACA,CAACA;gBAC3BA,CAACA;gBAEOJ,gDAAoBA,GAA5BA,UAA6BA,KAAaA,EAAEA,SAAiBA;oBACzDK,MAAMA,CAACA,IAAIA,CAACA,KAAKA,CAACA,aAAGA,CAACA,oBAAoBA,CAACA,SAASA,CAACA,GAAGA,KAAKA,GAAGA,IAAIA,CAACA,CAACA;gBAC1EA,CAACA;gBAvBcL,qCAAmBA,GAAGA,+BAAaA,CAACA,SAASA,CAACA,gBAAQA,CAACA,YAAYA,CAACA,CAACA;gBAwBxFA,wBAACA;YAADA,CAACA,AAzBD,IAyBC;YAzBD,iDAyBC,CAAA"} -------------------------------------------------------------------------------- /dist/core/request/sampling_converter.ts: -------------------------------------------------------------------------------- 1 | import kbn from "app/core/utils/kbn"; 2 | import {TimeUnit} from "../../beans/aggregators/utils"; 3 | import {TimeUnitUtils} from "../../utils/time_unit_utils"; 4 | 5 | export class SamplingConverter { 6 | private static MILLISECONDS_STRING = TimeUnitUtils.getString(TimeUnit.MILLISECONDS); 7 | 8 | public convert(value, unit) { 9 | if (unit === SamplingConverter.MILLISECONDS_STRING) { 10 | throw new Error("Value must be integer when using milliseconds"); 11 | } 12 | const shortUnit = TimeUnitUtils.getShortUnit(unit); 13 | return { 14 | interval: this.convertToMiliseconds(parseFloat(value), shortUnit).toString(), 15 | unit: TimeUnitUtils.getString(TimeUnit.MILLISECONDS) 16 | }; 17 | } 18 | 19 | public isApplicable(value): boolean { 20 | return this.isFloat(value); 21 | } 22 | 23 | private isFloat(value): boolean { 24 | return value % 1 !== 0; 25 | } 26 | 27 | private convertToMiliseconds(value: number, shortUnit: string): number { 28 | return Math.round(kbn.intervals_in_seconds[shortUnit] * value * 1000); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /dist/core/request/sampling_parameter_converter.d.ts: -------------------------------------------------------------------------------- 1 | import { Aggregator } from "../../beans/aggregators/aggregator"; 2 | import { SamplingConverter } from "./sampling_converter"; 3 | export declare class SamplingParameterConverter { 4 | private samplingConverter; 5 | constructor(samplingConverter: SamplingConverter); 6 | convertSamplingParameters(aggregator: Aggregator): Aggregator; 7 | private findParameterIndex(parameters, type); 8 | } 9 | -------------------------------------------------------------------------------- /dist/core/request/sampling_parameter_converter.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"sampling_parameter_converter.js","sourceRoot":"","sources":["sampling_parameter_converter.ts"],"names":["SamplingParameterConverter","SamplingParameterConverter.constructor","SamplingParameterConverter.convertSamplingParameters","SamplingParameterConverter.findParameterIndex"],"mappings":";;;;;;;;;;;;;;;YAOA;gBAGIA,oCAAYA,iBAAoCA;oBAC5CC,IAAIA,CAACA,iBAAiBA,GAAGA,iBAAiBA,CAACA;gBAC/CA,CAACA;gBAEMD,8DAAyBA,GAAhCA,UAAiCA,UAAsBA;oBACnDE,IAAMA,UAAUA,GAAGA,UAAUA,CAACA,UAAUA,CAACA;oBACzCA,IAAMA,sBAAsBA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,UAAUA,EAAEA,2DAA2BA,CAACA,IAAIA,CAACA,CAACA;oBACrGA,IAAMA,0BAA0BA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,UAAUA,EAAEA,oEAA+BA,CAACA,IAAIA,CAACA,CAACA;oBAE7GA,EAAEA,CAACA,CAACA,sBAAsBA,GAAGA,CAACA,CAACA,IAAIA,0BAA0BA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA;wBACjEA,IAAMA,iBAAiBA,GAAGA,UAAUA,CAACA,sBAAsBA,CAACA,CAACA;wBAC7DA,IAAMA,qBAAqBA,GAAGA,UAAUA,CAACA,0BAA0BA,CAACA,CAACA;wBACrEA,EAAEA,CAACA,CAACA,IAAIA,CAACA,iBAAiBA,CAACA,YAAYA,CAACA,iBAAiBA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;4BAC/DA,IAAMA,iBAAiBA,GACnBA,IAAIA,CAACA,iBAAiBA,CAACA,OAAOA,CAACA,iBAAiBA,CAACA,KAAKA,EAAEA,qBAAqBA,CAACA,KAAKA,CAACA,CAACA;4BACzFA,iBAAiBA,CAACA,KAAKA,GAAGA,iBAAiBA,CAACA,QAAQA,CAACA;4BACrDA,qBAAqBA,CAACA,KAAKA,GAAGA,iBAAiBA,CAACA,IAAIA,CAACA;wBACzDA,CAACA;oBACLA,CAACA;oBACDA,MAAMA,CAACA,UAAUA,CAACA;gBACtBA,CAACA;gBAEOF,uDAAkBA,GAA1BA,UAA2BA,UAAiCA,EAAEA,IAAYA;oBACtEG,MAAMA,CAACA,gBAACA,CAACA,SAASA,CAACA,UAAUA,EAAEA,UAACA,SAASA,IAAKA,OAAAA,SAASA,CAACA,IAAIA,KAAKA,IAAIA,EAAvBA,CAAuBA,CAACA,CAACA;gBAC3EA,CAACA;gBACLH,iCAACA;YAADA,CAACA,AA5BD,IA4BC;YA5BD,mEA4BC,CAAA"} -------------------------------------------------------------------------------- /dist/core/request/target_validator.d.ts: -------------------------------------------------------------------------------- 1 | import { KairosDBTarget } from "../../beans/request/target"; 2 | export declare class TargetValidator { 3 | areValidTargets(targets: any): boolean; 4 | isValidTarget(target: KairosDBTarget): boolean; 5 | } 6 | -------------------------------------------------------------------------------- /dist/core/request/target_validator.js: -------------------------------------------------------------------------------- 1 | System.register(["lodash"], function(exports_1) { 2 | var lodash_1; 3 | var TargetValidator; 4 | return { 5 | setters:[ 6 | function (lodash_1_1) { 7 | lodash_1 = lodash_1_1; 8 | }], 9 | execute: function() { 10 | TargetValidator = (function () { 11 | function TargetValidator() { 12 | } 13 | TargetValidator.prototype.areValidTargets = function (targets) { 14 | var _this = this; 15 | return targets && targets.every(function (target) { return _this.isValidTarget(target.query); }); 16 | }; 17 | TargetValidator.prototype.isValidTarget = function (target) { 18 | return !lodash_1.default.isNil(target) && !lodash_1.default.isEmpty(target.metricName); 19 | }; 20 | return TargetValidator; 21 | })(); 22 | exports_1("TargetValidator", TargetValidator); 23 | } 24 | } 25 | }); 26 | //# sourceMappingURL=target_validator.js.map -------------------------------------------------------------------------------- /dist/core/request/target_validator.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"target_validator.js","sourceRoot":"","sources":["target_validator.ts"],"names":["TargetValidator","TargetValidator.constructor","TargetValidator.areValidTargets","TargetValidator.isValidTarget"],"mappings":";;;;;;;;;YAGA;gBAAAA;gBAQAC,CAACA;gBAPUD,yCAAeA,GAAtBA,UAAuBA,OAAOA;oBAA9BE,iBAECA;oBADGA,MAAMA,CAACA,OAAOA,IAAIA,OAAOA,CAACA,KAAKA,CAACA,UAACA,MAAMA,IAAKA,OAAAA,KAAIA,CAACA,aAAaA,CAACA,MAAMA,CAACA,KAAKA,CAACA,EAAhCA,CAAgCA,CAACA,CAACA;gBAClFA,CAACA;gBAEMF,uCAAaA,GAApBA,UAAqBA,MAAsBA;oBACvCG,MAAMA,CAACA,CAACA,gBAACA,CAACA,KAAKA,CAACA,MAAMA,CAACA,IAAIA,CAACA,gBAACA,CAACA,OAAOA,CAACA,MAAMA,CAACA,UAAUA,CAACA,CAACA;gBAC7DA,CAACA;gBACLH,sBAACA;YAADA,CAACA,AARD,IAQC;YARD,6CAQC,CAAA"} -------------------------------------------------------------------------------- /dist/core/request/target_validator.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {KairosDBTarget} from "../../beans/request/target"; 3 | 4 | export class TargetValidator { 5 | public areValidTargets(targets): boolean { 6 | return targets && targets.every((target) => this.isValidTarget(target.query)); 7 | } 8 | 9 | public isValidTarget(target: KairosDBTarget): boolean { 10 | return !_.isNil(target) && !_.isEmpty(target.metricName); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /dist/core/response/response_handler.d.ts: -------------------------------------------------------------------------------- 1 | import { SeriesNameBuilder } from "./series_name_builder"; 2 | export declare class KairosDBResponseHandler { 3 | private seriesNameBuilder; 4 | constructor(seriesNameBuilder: SeriesNameBuilder); 5 | convertToDatapoints(data: any, aliases: string[]): { 6 | data: any; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /dist/core/response/response_handler.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"response_handler.js","sourceRoot":"","sources":["response_handler.ts"],"names":["KairosDBResponseHandler","KairosDBResponseHandler.constructor","KairosDBResponseHandler.convertToDatapoints"],"mappings":";;;;;;;;;YAGA;gBAGIA,iCAAYA,iBAAoCA;oBAC5CC,IAAIA,CAACA,iBAAiBA,GAAGA,iBAAiBA,CAACA;gBAC/CA,CAACA;gBAEMD,qDAAmBA,GAA1BA,UAA2BA,IAAIA,EAAEA,OAAiBA;oBAAlDE,iBAaCA;oBAZGA,IAAMA,UAAUA,GAAGA,gBAACA,CAACA,GAAGA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,OAAOA,CAACA;yBAC1CA,GAAGA,CAACA,UAACA,IAAIA;wBACNA,MAAMA,CAACA,EAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA,CAACA,EAAEA,OAAOA,EAAEA,IAAIA,CAACA,CAACA,CAACA,CAACA,OAAOA,EAACA,CAACA;oBACtDA,CAACA,CAACA;yBACDA,GAAGA,CAACA,UAACA,KAAKA,IAAKA,OAAAA,gBAACA,CAACA,GAAGA,CAACA,KAAKA,CAACA,OAAOA,EAAEA,UAACA,MAAMA;wBACxCA,MAAMA,CAACA;4BACHA,UAAUA,EAAEA,MAAMA,CAACA,MAAMA,CAACA,GAAGA,CAACA,UAACA,KAAKA,IAAKA,OAAAA,KAAKA,CAACA,OAAOA,EAAEA,EAAfA,CAAeA,CAACA;4BACzDA,MAAMA,EAAEA,KAAIA,CAACA,iBAAiBA,CAACA,KAAKA,CAACA,MAAMA,CAACA,IAAIA,EAAEA,KAAKA,CAACA,KAAKA,EAAEA,MAAMA,CAACA,QAAQA,CAACA;yBAClFA,CAACA;oBACNA,CAACA,CAACA,EALcA,CAKdA,CAACA,CAACA;oBAERA,MAAMA,CAACA,EAACA,IAAIA,EAAEA,gBAACA,CAACA,OAAOA,CAACA,UAAUA,CAACA,EAACA,CAACA;gBACzCA,CAACA;gBACLF,8BAACA;YAADA,CAACA,AArBD,IAqBC;YArBD,6DAqBC,CAAA"} -------------------------------------------------------------------------------- /dist/core/response/response_handler.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {SeriesNameBuilder} from "./series_name_builder"; 3 | 4 | export class KairosDBResponseHandler { 5 | private seriesNameBuilder: SeriesNameBuilder; 6 | 7 | constructor(seriesNameBuilder: SeriesNameBuilder) { 8 | this.seriesNameBuilder = seriesNameBuilder; 9 | } 10 | 11 | public convertToDatapoints(data, aliases: string[]) { 12 | const datapoints = _.zip(aliases, data.queries) 13 | .map((pair) => { 14 | return {alias: pair[0], results: pair[1].results}; 15 | }) 16 | .map((entry) => _.map(entry.results, (result) => { 17 | return { 18 | datapoints: result.values.map((value) => value.reverse()), 19 | target: this.seriesNameBuilder.build(result.name, entry.alias, result.group_by) 20 | }; 21 | })); 22 | 23 | return {data: _.flatten(datapoints)}; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /dist/core/response/series_name_builder.d.ts: -------------------------------------------------------------------------------- 1 | export declare class SeriesNameBuilder { 2 | private static SEPARATOR; 3 | build(metricName: any, alias: any, groupBys?: any[]): string; 4 | private buildDefault(metricName, tagGroupBysValues, valueGroupBysValues, timeGroupBysValues); 5 | private buildAlias(alias, tagGroupBys, valueGroupBysValues, timeGroupBysValues); 6 | private getTagGroupBys(groupBys); 7 | private getValueGroupBys(groupBys); 8 | private getTimeGroupBys(groupBys); 9 | private getGroupByExpression(type, value); 10 | } 11 | -------------------------------------------------------------------------------- /dist/css/plugin.css: -------------------------------------------------------------------------------- 1 | .group-by-tag-checkbox input + label::before, 2 | .group-by-tag-checkbox input + label::after { 3 | transition: none !important; 4 | background: #292929 none; 5 | } 6 | 7 | .group-by-tag-checkbox { 8 | margin-left: -3px; 9 | } 10 | 11 | .group-by-tag-checkbox input + label::before { 12 | color: #eb6618; 13 | } 14 | 15 | .group-by-tag-checkbox:hover input + label::before { 16 | color: #eb6618; 17 | } 18 | 19 | .group-by-tag-checkbox input + label::after { 20 | color: #5bbf00; 21 | } 22 | 23 | .group-by-tag-checkbox:hover input + label::after { 24 | color: #5bbf00; 25 | } 26 | 27 | .tag-label { 28 | margin-left: 2px; 29 | margin-right: 0; 30 | } 31 | 32 | .tag-switch { 33 | padding-right: 4px; 34 | } -------------------------------------------------------------------------------- /dist/directives/aggregator.d.ts: -------------------------------------------------------------------------------- 1 | import { Aggregator } from "../beans/aggregators/aggregator"; 2 | import { AggregatorParameter } from "../beans/aggregators/parameters/aggregator_parameter"; 3 | export declare class AggregatorCtrl { 4 | value: Aggregator; 5 | visibleParameters: AggregatorParameter[]; 6 | isAutoValue: boolean; 7 | constructor(); 8 | private getVisibleParameters(); 9 | } 10 | export declare function AggregatorDirective(): { 11 | bindToController: boolean; 12 | controller: typeof AggregatorCtrl; 13 | controllerAs: string; 14 | restrict: string; 15 | scope: { 16 | onRemove: string; 17 | value: string; 18 | }; 19 | templateUrl: string; 20 | }; 21 | -------------------------------------------------------------------------------- /dist/directives/aggregator.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"aggregator.js","sourceRoot":"","sources":["aggregator.ts"],"names":["AggregatorDirective","AggregatorCtrl","AggregatorCtrl.constructor","AggregatorCtrl.getVisibleParameters"],"mappings":";;;IAsBA;QACIA,MAAMA,CAACA;YACHA,gBAAgBA,EAAEA,IAAIA;YACtBA,UAAUA,EAAEA,cAAcA;YAC1BA,YAAYA,EAAEA,MAAMA;YACpBA,QAAQA,EAAEA,GAAGA;YACbA,KAAKA,EAAEA;gBACHA,QAAQA,EAAEA,GAAGA;gBACbA,KAAKA,EAAEA,GAAGA;aACbA;YACDA,WAAWA,EAAEA,qEAAqEA;SACrFA,CAACA;IACNA,CAACA;IAZD,qDAYC,CAAA;;;;;;;;YA7BD;gBAKIC;oBAFOC,gBAAWA,GAAYA,KAAKA,CAACA;oBAGhCA,IAAIA,CAACA,WAAWA,GAAGA,CAACA,gBAACA,CAACA,KAAKA,CAACA,IAAIA,CAACA,KAAKA,CAACA,eAAeA,CAACA,IAAIA,IAAIA,CAACA,KAAKA,CAACA,eAAeA,CAACA,OAAOA,CAACA;oBAC9FA,IAAIA,CAACA,iBAAiBA,GAAGA,IAAIA,CAACA,WAAWA,GAAGA,IAAIA,CAACA,oBAAoBA,EAAEA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,UAAUA,CAACA;gBACpGA,CAACA;gBAEOD,6CAAoBA,GAA5BA;oBACIE,IAAMA,wBAAwBA,GAC1BA,IAAIA,CAACA,KAAKA,CAACA,eAAeA,CAACA,mBAAmBA,CAACA,GAAGA,CAACA,UAACA,SAASA,IAAKA,OAAAA,SAASA,CAACA,IAAIA,EAAdA,CAAcA,CAACA,CAACA;oBACtFA,MAAMA,CAACA,IAAIA,CAACA,KAAKA,CAACA,UAAUA,CAACA,MAAMA,CAACA,UAACA,SAASA,IAAKA,OAAAA,CAACA,gBAACA,CAACA,QAAQA,CAACA,wBAAwBA,EAAEA,SAASA,CAACA,IAAIA,CAACA,EAArDA,CAAqDA,CAACA,CAACA;gBAC9GA,CAACA;gBACLF,qBAACA;YAADA,CAACA,AAfD,IAeC;YAfD,2CAeC,CAAA"} -------------------------------------------------------------------------------- /dist/directives/aggregator.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {Aggregator} from "../beans/aggregators/aggregator"; 3 | import {AggregatorParameter} from "../beans/aggregators/parameters/aggregator_parameter"; 4 | import "./aggregator_editor"; 5 | 6 | export class AggregatorCtrl { 7 | public value: Aggregator; 8 | public visibleParameters: AggregatorParameter[]; 9 | public isAutoValue: boolean = false; 10 | 11 | constructor() { 12 | this.isAutoValue = !_.isNil(this.value.autoValueSwitch) && this.value.autoValueSwitch.enabled; 13 | this.visibleParameters = this.isAutoValue ? this.getVisibleParameters() : this.value.parameters; 14 | } 15 | 16 | private getVisibleParameters(): AggregatorParameter[] { 17 | const dependentParametersTypes = 18 | this.value.autoValueSwitch.dependentParameters.map((parameter) => parameter.type); 19 | return this.value.parameters.filter((parameter) => !_.includes(dependentParametersTypes, parameter.type)); 20 | } 21 | } 22 | 23 | export function AggregatorDirective() { 24 | return { 25 | bindToController: true, 26 | controller: AggregatorCtrl, 27 | controllerAs: "ctrl", 28 | restrict: "E", 29 | scope: { 30 | onRemove: "&", 31 | value: "=" 32 | }, 33 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/aggregator.html" 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /dist/directives/aggregator_editor.d.ts: -------------------------------------------------------------------------------- 1 | export declare function AggregatorEditorDirective(): { 2 | link: (scope: any) => void; 3 | restrict: string; 4 | scope: boolean; 5 | templateUrl: string; 6 | }; 7 | -------------------------------------------------------------------------------- /dist/directives/aggregator_editor.js: -------------------------------------------------------------------------------- 1 | System.register(["lodash"], function(exports_1) { 2 | var lodash_1; 3 | function AggregatorEditorLink(scope) { 4 | scope.newAggregator = null; 5 | scope.pickAggregator = function (aggregatorName) { 6 | scope.newAggregator = lodash_1.default.cloneDeep(lodash_1.default.values(lodash_1.default.pickBy(scope.ctrl.availableAggregators, { name: aggregatorName }))[0]); 7 | }; 8 | scope.isAutoValue = function () { 9 | return !lodash_1.default.isNil(scope.newAggregator.autoValueSwitch) && scope.newAggregator.autoValueSwitch.enabled; 10 | }; 11 | } 12 | function AggregatorEditorDirective() { 13 | return { 14 | link: AggregatorEditorLink, 15 | restrict: "E", 16 | scope: false, 17 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/aggregator.editor.html" 18 | }; 19 | } 20 | exports_1("AggregatorEditorDirective", AggregatorEditorDirective); 21 | return { 22 | setters:[ 23 | function (lodash_1_1) { 24 | lodash_1 = lodash_1_1; 25 | }], 26 | execute: function() { 27 | } 28 | } 29 | }); 30 | //# sourceMappingURL=aggregator_editor.js.map -------------------------------------------------------------------------------- /dist/directives/aggregator_editor.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"aggregator_editor.js","sourceRoot":"","sources":["aggregator_editor.ts"],"names":["AggregatorEditorLink","AggregatorEditorDirective"],"mappings":";;IAEA,8BAA8B,KAAK;QAC/BA,KAAKA,CAACA,aAAaA,GAAGA,IAAIA,CAACA;QAC3BA,KAAKA,CAACA,cAAcA,GAAGA,UAACA,cAAcA;YAClCA,KAAKA,CAACA,aAAaA,GAAGA,gBAACA,CAACA,SAASA,CAACA,gBAACA,CAACA,MAAMA,CAACA,gBAACA,CAACA,MAAMA,CAC/CA,KAAKA,CAACA,IAAIA,CAACA,oBAAoBA,EAAEA,EAACA,IAAIA,EAAEA,cAAcA,EAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;QACtEA,CAACA,CAACA;QAEFA,KAAKA,CAACA,WAAWA,GAAGA;YAChBA,MAAMA,CAACA,CAACA,gBAACA,CAACA,KAAKA,CAACA,KAAKA,CAACA,aAAaA,CAACA,eAAeA,CAACA,IAAIA,KAAKA,CAACA,aAAaA,CAACA,eAAeA,CAACA,OAAOA,CAACA;QACxGA,CAACA,CAACA;IACNA,CAACA;IAED;QACIC,MAAMA,CAACA;YACHA,IAAIA,EAAEA,oBAAoBA;YAC1BA,QAAQA,EAAEA,GAAGA;YACbA,KAAKA,EAAEA,KAAKA;YACZA,WAAWA,EAAEA,4EAA4EA;SAC5FA,CAACA;IACNA,CAACA;IAPD,iEAOC,CAAA"} -------------------------------------------------------------------------------- /dist/directives/aggregator_editor.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | 3 | function AggregatorEditorLink(scope) { 4 | scope.newAggregator = null; 5 | scope.pickAggregator = (aggregatorName) => { 6 | scope.newAggregator = _.cloneDeep(_.values(_.pickBy( 7 | scope.ctrl.availableAggregators, {name: aggregatorName}))[0]); 8 | }; 9 | 10 | scope.isAutoValue = () => { 11 | return !_.isNil(scope.newAggregator.autoValueSwitch) && scope.newAggregator.autoValueSwitch.enabled; 12 | }; 13 | } 14 | 15 | export function AggregatorEditorDirective() { 16 | return { 17 | link: AggregatorEditorLink, 18 | restrict: "E", 19 | scope: false, 20 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/aggregator.editor.html" 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /dist/directives/aggregators.d.ts: -------------------------------------------------------------------------------- 1 | import { Aggregator } from "../beans/aggregators/aggregator"; 2 | export declare class AggregatorsCtrl { 3 | entries: Aggregator[]; 4 | availableAggregators: Aggregator[]; 5 | add(entry: any): void; 6 | remove(entry: any): void; 7 | } 8 | export declare function AggregatorsDirective(): { 9 | bindToController: boolean; 10 | controller: typeof AggregatorsCtrl; 11 | controllerAs: string; 12 | restrict: string; 13 | scope: { 14 | availableAggregators: string; 15 | entries: string; 16 | }; 17 | templateUrl: string; 18 | }; 19 | -------------------------------------------------------------------------------- /dist/directives/aggregators.js: -------------------------------------------------------------------------------- 1 | System.register(["lodash", "./aggregator_editor"], function(exports_1) { 2 | var lodash_1; 3 | var AggregatorsCtrl; 4 | function AggregatorsDirective() { 5 | return { 6 | bindToController: true, 7 | controller: AggregatorsCtrl, 8 | controllerAs: "ctrl", 9 | restrict: "E", 10 | scope: { 11 | availableAggregators: "=", 12 | entries: "=" 13 | }, 14 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/aggregators.html" 15 | }; 16 | } 17 | exports_1("AggregatorsDirective", AggregatorsDirective); 18 | return { 19 | setters:[ 20 | function (lodash_1_1) { 21 | lodash_1 = lodash_1_1; 22 | }, 23 | function (_1) {}], 24 | execute: function() { 25 | AggregatorsCtrl = (function () { 26 | function AggregatorsCtrl() { 27 | } 28 | AggregatorsCtrl.prototype.add = function (entry) { 29 | this.entries.push(entry); 30 | }; 31 | AggregatorsCtrl.prototype.remove = function (entry) { 32 | this.entries = lodash_1.default.without(this.entries, entry); 33 | }; 34 | return AggregatorsCtrl; 35 | })(); 36 | exports_1("AggregatorsCtrl", AggregatorsCtrl); 37 | } 38 | } 39 | }); 40 | //# sourceMappingURL=aggregators.js.map -------------------------------------------------------------------------------- /dist/directives/aggregators.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"aggregators.js","sourceRoot":"","sources":["aggregators.ts"],"names":["AggregatorsDirective","AggregatorsCtrl","AggregatorsCtrl.constructor","AggregatorsCtrl.add","AggregatorsCtrl.remove"],"mappings":";;;IAiBA;QACIA,MAAMA,CAACA;YACHA,gBAAgBA,EAAEA,IAAIA;YACtBA,UAAUA,EAAEA,eAAeA;YAC3BA,YAAYA,EAAEA,MAAMA;YACpBA,QAAQA,EAAEA,GAAGA;YACbA,KAAKA,EAAEA;gBACHA,oBAAoBA,EAAEA,GAAGA;gBACzBA,OAAOA,EAAEA,GAAGA;aACfA;YACDA,WAAWA,EAAEA,sEAAsEA;SACtFA,CAACA;IACNA,CAACA;IAZD,uDAYC,CAAA;;;;;;;;YAzBD;gBAAAC;gBAWAC,CAACA;gBAPUD,6BAAGA,GAAVA,UAAWA,KAAKA;oBACZE,IAAIA,CAACA,OAAOA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;gBAC7BA,CAACA;gBAEMF,gCAAMA,GAAbA,UAAcA,KAAKA;oBACfG,IAAIA,CAACA,OAAOA,GAAGA,gBAACA,CAACA,OAAOA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,KAAKA,CAACA,CAACA;gBAClDA,CAACA;gBACLH,sBAACA;YAADA,CAACA,AAXD,IAWC;YAXD,6CAWC,CAAA"} -------------------------------------------------------------------------------- /dist/directives/aggregators.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {Aggregator} from "../beans/aggregators/aggregator"; 3 | import "./aggregator_editor"; 4 | 5 | export class AggregatorsCtrl { 6 | public entries: Aggregator[]; 7 | public availableAggregators: Aggregator[]; 8 | 9 | public add(entry): void { 10 | this.entries.push(entry); 11 | } 12 | 13 | public remove(entry): void { 14 | this.entries = _.without(this.entries, entry); 15 | } 16 | } 17 | 18 | export function AggregatorsDirective() { 19 | return { 20 | bindToController: true, 21 | controller: AggregatorsCtrl, 22 | controllerAs: "ctrl", 23 | restrict: "E", 24 | scope: { 25 | availableAggregators: "=", 26 | entries: "=" 27 | }, 28 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/aggregators.html" 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /dist/directives/auto_value_switch.d.ts: -------------------------------------------------------------------------------- 1 | import { AggregatorParameter } from "../beans/aggregators/parameters/aggregator_parameter"; 2 | export declare class AutoValueSwitch { 3 | dependentParameters: AggregatorParameter[]; 4 | enabled: boolean; 5 | constructor(dependentParameters: AggregatorParameter[]); 6 | } 7 | -------------------------------------------------------------------------------- /dist/directives/auto_value_switch.js: -------------------------------------------------------------------------------- 1 | System.register([], function(exports_1) { 2 | var AutoValueSwitch; 3 | return { 4 | setters:[], 5 | execute: function() { 6 | AutoValueSwitch = (function () { 7 | function AutoValueSwitch(dependentParameters) { 8 | this.enabled = false; 9 | this.dependentParameters = dependentParameters; 10 | } 11 | return AutoValueSwitch; 12 | })(); 13 | exports_1("AutoValueSwitch", AutoValueSwitch); 14 | } 15 | } 16 | }); 17 | //# sourceMappingURL=auto_value_switch.js.map -------------------------------------------------------------------------------- /dist/directives/auto_value_switch.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"auto_value_switch.js","sourceRoot":"","sources":["auto_value_switch.ts"],"names":["AutoValueSwitch","AutoValueSwitch.constructor"],"mappings":";;;;;YACA;gBAIIA,yBAAYA,mBAA0CA;oBAF/CC,YAAOA,GAAYA,KAAKA,CAACA;oBAG5BA,IAAIA,CAACA,mBAAmBA,GAAGA,mBAAmBA,CAACA;gBACnDA,CAACA;gBACLD,sBAACA;YAADA,CAACA,AAPD,IAOC;YAPD,6CAOC,CAAA"} -------------------------------------------------------------------------------- /dist/directives/auto_value_switch.ts: -------------------------------------------------------------------------------- 1 | import {AggregatorParameter} from "../beans/aggregators/parameters/aggregator_parameter"; 2 | export class AutoValueSwitch { 3 | public dependentParameters: AggregatorParameter[]; 4 | public enabled: boolean = false; 5 | 6 | constructor(dependentParameters: AggregatorParameter[]) { 7 | this.dependentParameters = dependentParameters; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /dist/directives/group_by/group_by_tags.d.ts: -------------------------------------------------------------------------------- 1 | export declare class GroupByTagsCtrl { 2 | tags: string[]; 3 | selectedTags: { 4 | [key: string]: boolean; 5 | }; 6 | inputVisible: boolean; 7 | allowedValues: string[]; 8 | constructor(); 9 | onChange(): void; 10 | addCustom(tag: string): void; 11 | } 12 | export declare function GroupByTagsDirective(): { 13 | bindToController: boolean; 14 | controller: typeof GroupByTagsCtrl; 15 | controllerAs: string; 16 | restrict: string; 17 | scope: { 18 | allowedValues: string; 19 | tags: string; 20 | }; 21 | templateUrl: string; 22 | }; 23 | -------------------------------------------------------------------------------- /dist/directives/group_by/group_by_tags.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"group_by_tags.js","sourceRoot":"","sources":["group_by_tags.ts"],"names":["GroupByTagsDirective","GroupByTagsCtrl","GroupByTagsCtrl.constructor","GroupByTagsCtrl.onChange","GroupByTagsCtrl.addCustom"],"mappings":";;;IAwBA;QACIA,MAAMA,CAACA;YACHA,gBAAgBA,EAAEA,IAAIA;YACtBA,UAAUA,EAAEA,eAAeA;YAC3BA,YAAYA,EAAEA,MAAMA;YACpBA,QAAQA,EAAEA,GAAGA;YACbA,KAAKA,EAAEA;gBACHA,aAAaA,EAAEA,GAAGA;gBAClBA,IAAIA,EAAEA,GAAGA;aACZA;YACDA,WAAWA,EAAEA,wEAAwEA;SACxFA,CAACA;IACNA,CAACA;IAZD,uDAYC,CAAA;;;;;;;YAlCD;gBAMIC;oBANJC,iBAoBCA;oBAlBUA,iBAAYA,GAA+BA,EAAEA,CAACA;oBAKjDA,IAAIA,CAACA,IAAIA,CAACA,OAAOA,CAACA,UAACA,GAAGA,IAAKA,OAAAA,KAAIA,CAACA,YAAYA,CAACA,GAAGA,CAACA,GAAGA,IAAIA,EAA7BA,CAA6BA,CAACA,CAACA;gBAC9DA,CAACA;gBAEMD,kCAAQA,GAAfA;oBACIE,IAAIA,CAACA,IAAIA,GAAGA,gBAACA,CAACA,IAAIA,CAACA,gBAACA,CAACA,MAAMA,CAACA,IAAIA,CAACA,YAAYA,CAACA,CAACA,CAACA;gBACpDA,CAACA;gBAEMF,mCAASA,GAAhBA,UAAiBA,GAAWA;oBACxBG,EAAEA,CAACA,CAACA,CAACA,gBAACA,CAACA,OAAOA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;wBAClBA,IAAIA,CAACA,YAAYA,CAACA,GAAGA,CAACA,GAAGA,IAAIA,CAACA;oBAClCA,CAACA;oBACDA,IAAIA,CAACA,YAAYA,GAAGA,CAACA,IAAIA,CAACA,YAAYA,CAACA;gBAC3CA,CAACA;gBACLH,sBAACA;YAADA,CAACA,AApBD,IAoBC;YApBD,6CAoBC,CAAA"} -------------------------------------------------------------------------------- /dist/directives/group_by/group_by_tags.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | 3 | export class GroupByTagsCtrl { 4 | public tags: string[]; 5 | public selectedTags: { [key: string]: boolean } = {}; 6 | public inputVisible: boolean; 7 | public allowedValues: string[]; 8 | 9 | constructor() { 10 | this.tags.forEach((tag) => this.selectedTags[tag] = true); 11 | } 12 | 13 | public onChange(): void { 14 | this.tags = _.keys(_.pickBy(this.selectedTags)); 15 | } 16 | 17 | public addCustom(tag: string): void { 18 | if (!_.isEmpty(tag)) { 19 | this.selectedTags[tag] = true; 20 | } 21 | this.inputVisible = !this.inputVisible; 22 | } 23 | } 24 | 25 | export function GroupByTagsDirective() { 26 | return { 27 | bindToController: true, 28 | controller: GroupByTagsCtrl, 29 | controllerAs: "ctrl", 30 | restrict: "E", 31 | scope: { 32 | allowedValues: "=", 33 | tags: "=" 34 | }, 35 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/group.by.tags.html" 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /dist/directives/group_by/group_by_time.d.ts: -------------------------------------------------------------------------------- 1 | import { GroupByTimeEntry } from "group_by_time_entry"; 2 | export declare class GroupByTimeCtrl { 3 | entries: GroupByTimeEntry[]; 4 | inputVisible: boolean; 5 | allowedUnitValues: string[]; 6 | constructor(); 7 | add(entry: any): void; 8 | remove(entry: any): void; 9 | private isValidEntry(entry); 10 | } 11 | export declare function GroupByTimeDirective(): { 12 | bindToController: boolean; 13 | controller: typeof GroupByTimeCtrl; 14 | controllerAs: string; 15 | restrict: string; 16 | scope: { 17 | entries: string; 18 | }; 19 | templateUrl: string; 20 | }; 21 | -------------------------------------------------------------------------------- /dist/directives/group_by/group_by_time.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"group_by_time.js","sourceRoot":"","sources":["group_by_time.ts"],"names":["GroupByTimeDirective","GroupByTimeCtrl","GroupByTimeCtrl.constructor","GroupByTimeCtrl.add","GroupByTimeCtrl.remove","GroupByTimeCtrl.isValidEntry"],"mappings":";;;IA6BA;QACIA,MAAMA,CAACA;YACHA,gBAAgBA,EAAEA,IAAIA;YACtBA,UAAUA,EAAEA,eAAeA;YAC3BA,YAAYA,EAAEA,MAAMA;YACpBA,QAAQA,EAAEA,GAAGA;YACbA,KAAKA,EAAEA;gBACHA,OAAOA,EAAEA,GAAGA;aACfA;YACDA,WAAWA,EAAEA,wEAAwEA;SACxFA,CAACA;IACNA,CAACA;IAXD,uDAWC,CAAA;;;;;;;;;;YApCD;gBAKIC;oBAHOC,iBAAYA,GAAYA,KAAKA,CAACA;oBAC9BA,sBAAiBA,GAAaA,kBAAUA,CAACA,gBAAQA,CAACA,CAACA;oBAGtDA,IAAIA,CAACA,OAAOA,GAAGA,IAAIA,CAACA,OAAOA,IAAIA,EAAEA,CAACA;gBACtCA,CAACA;gBAEMD,6BAAGA,GAAVA,UAAWA,KAAKA;oBACZE,EAAEA,CAACA,CAACA,IAAIA,CAACA,YAAYA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;wBAC3BA,IAAIA,CAACA,OAAOA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;oBAC7BA,CAACA;oBACDA,IAAIA,CAACA,YAAYA,GAAGA,CAACA,IAAIA,CAACA,YAAYA,CAACA;gBAC3CA,CAACA;gBAEMF,gCAAMA,GAAbA,UAAcA,KAAKA;oBACfG,IAAIA,CAACA,OAAOA,GAAGA,gBAACA,CAACA,OAAOA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,KAAKA,CAACA,CAACA;gBAClDA,CAACA;gBAEOH,sCAAYA,GAApBA,UAAqBA,KAAKA;oBACtBI,MAAMA,CAACA,CAACA,KAAKA,CAACA,KAAKA,CAACA,QAAQA,CAACA,IAAIA,CAACA,KAAKA,CAACA,KAAKA,CAACA,KAAKA,CAACA,CAACA;gBACzDA,CAACA;gBACLJ,sBAACA;YAADA,CAACA,AAvBD,IAuBC;YAvBD,6CAuBC,CAAA"} -------------------------------------------------------------------------------- /dist/directives/group_by/group_by_time.ts: -------------------------------------------------------------------------------- 1 | import {GroupByTimeEntry} from "group_by_time_entry"; 2 | import _ from "lodash"; 3 | import {EnumValues, TimeUnit} from "../../beans/aggregators/utils"; 4 | 5 | export class GroupByTimeCtrl { 6 | public entries: GroupByTimeEntry[]; 7 | public inputVisible: boolean = false; 8 | public allowedUnitValues: string[] = EnumValues(TimeUnit); 9 | 10 | constructor() { 11 | this.entries = this.entries || []; 12 | } 13 | 14 | public add(entry): void { 15 | if (this.isValidEntry(entry)) { 16 | this.entries.push(entry); 17 | } 18 | this.inputVisible = !this.inputVisible; 19 | } 20 | 21 | public remove(entry): void { 22 | this.entries = _.without(this.entries, entry); 23 | } 24 | 25 | private isValidEntry(entry): boolean { 26 | return !isNaN(entry.interval) && !isNaN(entry.count); 27 | } 28 | } 29 | 30 | export function GroupByTimeDirective() { 31 | return { 32 | bindToController: true, 33 | controller: GroupByTimeCtrl, 34 | controllerAs: "ctrl", 35 | restrict: "E", 36 | scope: { 37 | entries: "=" 38 | }, 39 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/group.by.time.html" 40 | }; 41 | } 42 | -------------------------------------------------------------------------------- /dist/directives/group_by/group_by_time_entry.d.ts: -------------------------------------------------------------------------------- 1 | export declare class GroupByTimeEntry { 2 | interval: string; 3 | unit: string; 4 | count: number; 5 | constructor(interval: string, unit: string, count: number); 6 | } 7 | -------------------------------------------------------------------------------- /dist/directives/group_by/group_by_time_entry.js: -------------------------------------------------------------------------------- 1 | System.register([], function(exports_1) { 2 | var GroupByTimeEntry; 3 | return { 4 | setters:[], 5 | execute: function() { 6 | GroupByTimeEntry = (function () { 7 | function GroupByTimeEntry(interval, unit, count) { 8 | this.interval = undefined; 9 | this.unit = undefined; 10 | this.count = undefined; 11 | this.interval = interval; 12 | this.unit = unit; 13 | this.count = count; 14 | } 15 | return GroupByTimeEntry; 16 | })(); 17 | exports_1("GroupByTimeEntry", GroupByTimeEntry); 18 | } 19 | } 20 | }); 21 | //# sourceMappingURL=group_by_time_entry.js.map -------------------------------------------------------------------------------- /dist/directives/group_by/group_by_time_entry.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"group_by_time_entry.js","sourceRoot":"","sources":["group_by_time_entry.ts"],"names":["GroupByTimeEntry","GroupByTimeEntry.constructor"],"mappings":";;;;;YAAA;gBAKIA,0BAAYA,QAAgBA,EAAEA,IAAYA,EAAEA,KAAaA;oBAJlDC,aAAQA,GAAWA,SAASA,CAACA;oBAC7BA,SAAIA,GAAWA,SAASA,CAACA;oBACzBA,UAAKA,GAAWA,SAASA,CAACA;oBAG7BA,IAAIA,CAACA,QAAQA,GAAGA,QAAQA,CAACA;oBACzBA,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;oBACjBA,IAAIA,CAACA,KAAKA,GAAGA,KAAKA,CAACA;gBACvBA,CAACA;gBACLD,uBAACA;YAADA,CAACA,AAVD,IAUC;YAVD,+CAUC,CAAA"} -------------------------------------------------------------------------------- /dist/directives/group_by/group_by_time_entry.ts: -------------------------------------------------------------------------------- 1 | export class GroupByTimeEntry { 2 | public interval: string = undefined; 3 | public unit: string = undefined; 4 | public count: number = undefined; 5 | 6 | constructor(interval: string, unit: string, count: number) { 7 | this.interval = interval; 8 | this.unit = unit; 9 | this.count = count; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /dist/directives/group_by/group_by_value.d.ts: -------------------------------------------------------------------------------- 1 | export declare class GroupByValueCtrl { 2 | entries: string[]; 3 | inputVisible: boolean; 4 | add(value: any): void; 5 | remove(entry: any): void; 6 | } 7 | export declare function GroupByValueDirective(): { 8 | bindToController: boolean; 9 | controller: typeof GroupByValueCtrl; 10 | controllerAs: string; 11 | restrict: string; 12 | scope: { 13 | entries: string; 14 | }; 15 | templateUrl: string; 16 | }; 17 | -------------------------------------------------------------------------------- /dist/directives/group_by/group_by_value.js: -------------------------------------------------------------------------------- 1 | System.register(["lodash"], function(exports_1) { 2 | var lodash_1; 3 | var GroupByValueCtrl; 4 | function GroupByValueDirective() { 5 | return { 6 | bindToController: true, 7 | controller: GroupByValueCtrl, 8 | controllerAs: "ctrl", 9 | restrict: "E", 10 | scope: { 11 | entries: "=" 12 | }, 13 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/group.by.value.html" 14 | }; 15 | } 16 | exports_1("GroupByValueDirective", GroupByValueDirective); 17 | return { 18 | setters:[ 19 | function (lodash_1_1) { 20 | lodash_1 = lodash_1_1; 21 | }], 22 | execute: function() { 23 | GroupByValueCtrl = (function () { 24 | function GroupByValueCtrl() { 25 | } 26 | GroupByValueCtrl.prototype.add = function (value) { 27 | if (value && lodash_1.default.isNumber(parseInt(value, 10))) { 28 | this.entries.push(value); 29 | } 30 | this.inputVisible = !this.inputVisible; 31 | }; 32 | GroupByValueCtrl.prototype.remove = function (entry) { 33 | this.entries = lodash_1.default.without(this.entries, entry); 34 | }; 35 | return GroupByValueCtrl; 36 | })(); 37 | exports_1("GroupByValueCtrl", GroupByValueCtrl); 38 | } 39 | } 40 | }); 41 | //# sourceMappingURL=group_by_value.js.map -------------------------------------------------------------------------------- /dist/directives/group_by/group_by_value.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"group_by_value.js","sourceRoot":"","sources":["group_by_value.ts"],"names":["GroupByValueDirective","GroupByValueCtrl","GroupByValueCtrl.constructor","GroupByValueCtrl.add","GroupByValueCtrl.remove"],"mappings":";;;IAkBA;QACIA,MAAMA,CAACA;YACHA,gBAAgBA,EAAEA,IAAIA;YACtBA,UAAUA,EAAEA,gBAAgBA;YAC5BA,YAAYA,EAAEA,MAAMA;YACpBA,QAAQA,EAAEA,GAAGA;YACbA,KAAKA,EAAEA;gBACHA,OAAOA,EAAEA,GAAGA;aACfA;YACDA,WAAWA,EAAEA,yEAAyEA;SACzFA,CAACA;IACNA,CAACA;IAXD,yDAWC,CAAA;;;;;;;YA3BD;gBAAAC;gBAcAC,CAACA;gBAVUD,8BAAGA,GAAVA,UAAWA,KAAKA;oBACZE,EAAEA,CAACA,CAACA,KAAKA,IAAIA,gBAACA,CAACA,QAAQA,CAACA,QAAQA,CAACA,KAAKA,EAAEA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA;wBAC3CA,IAAIA,CAACA,OAAOA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;oBAC7BA,CAACA;oBACDA,IAAIA,CAACA,YAAYA,GAAGA,CAACA,IAAIA,CAACA,YAAYA,CAACA;gBAC3CA,CAACA;gBAEMF,iCAAMA,GAAbA,UAAcA,KAAKA;oBACfG,IAAIA,CAACA,OAAOA,GAAGA,gBAACA,CAACA,OAAOA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,KAAKA,CAACA,CAACA;gBAClDA,CAACA;gBACLH,uBAACA;YAADA,CAACA,AAdD,IAcC;YAdD,+CAcC,CAAA"} -------------------------------------------------------------------------------- /dist/directives/group_by/group_by_value.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | 3 | export class GroupByValueCtrl { 4 | public entries: string[]; 5 | public inputVisible: boolean; 6 | 7 | public add(value) { 8 | if (value && _.isNumber(parseInt(value, 10))) { 9 | this.entries.push(value); 10 | } 11 | this.inputVisible = !this.inputVisible; 12 | } 13 | 14 | public remove(entry) { 15 | this.entries = _.without(this.entries, entry); 16 | } 17 | } 18 | 19 | export function GroupByValueDirective() { 20 | return { 21 | bindToController: true, 22 | controller: GroupByValueCtrl, 23 | controllerAs: "ctrl", 24 | restrict: "E", 25 | scope: { 26 | entries: "=" 27 | }, 28 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/group.by.value.html" 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /dist/directives/metric_name_field.d.ts: -------------------------------------------------------------------------------- 1 | export declare class MetricNameFieldCtrl { 2 | private uiSegmentSrv; 3 | value: string; 4 | metricNames: string[]; 5 | alias: string; 6 | segment: any; 7 | aliasInputVisible: boolean; 8 | aliasAddedVisible: boolean; 9 | private $q; 10 | private $scope; 11 | private promiseUtils; 12 | /** @ngInject **/ 13 | constructor($scope: any, $q: any, uiSegmentSrv: any); 14 | onChange(segment: any): void; 15 | suggestMetrics(): string[]; 16 | setAlias(alias: any): void; 17 | } 18 | export declare class MetricNameFieldLink { 19 | constructor(scope: any, element: any); 20 | } 21 | export declare function MetricNameFieldDirective(): { 22 | bindToController: boolean; 23 | controller: typeof MetricNameFieldCtrl; 24 | controllerAs: string; 25 | link: typeof MetricNameFieldLink; 26 | restrict: string; 27 | scope: { 28 | alias: string; 29 | metricNames: string; 30 | value: string; 31 | }; 32 | templateUrl: string; 33 | }; 34 | -------------------------------------------------------------------------------- /dist/directives/tag_input.d.ts: -------------------------------------------------------------------------------- 1 | export declare class TagInputCtrl { 2 | private uiSegmentSrv; 3 | tagValues: string[]; 4 | private $scope; 5 | private promiseUtils; 6 | /** @ngInject **/ 7 | constructor($scope: any, $q: any, uiSegmentSrv: any); 8 | getTags(): Promise; 9 | } 10 | export declare class TagInputLink { 11 | constructor(scope: any, element: any); 12 | } 13 | export declare function TagInputDirective(): { 14 | bindToController: boolean; 15 | controller: typeof TagInputCtrl; 16 | controllerAs: string; 17 | link: typeof TagInputLink; 18 | restrict: string; 19 | scope: { 20 | onChange: string; 21 | segment: string; 22 | tagValues: string; 23 | }; 24 | templateUrl: string; 25 | }; 26 | -------------------------------------------------------------------------------- /dist/directives/tag_input.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"tag_input.js","sourceRoot":"","sources":["tag_input.ts"],"names":["TagInputDirective","TagInputCtrl","TagInputCtrl.constructor","TagInputCtrl.getTags","TagInputLink","TagInputLink.constructor"],"mappings":";;QAGM,2BAA2B;IAgCjC;QACIA,MAAMA,CAACA;YACHA,gBAAgBA,EAAEA,IAAIA;YACtBA,UAAUA,EAAEA,YAAYA;YACxBA,YAAYA,EAAEA,MAAMA;YACpBA,IAAIA,EAAEA,YAAYA;YAClBA,QAAQA,EAAEA,GAAGA;YACbA,KAAKA,EAAEA;gBACHA,QAAQA,EAAEA,GAAGA;gBACbA,OAAOA,EAAEA,GAAGA;gBACZA,SAASA,EAAEA,GAAGA;aACjBA;YACDA,WAAWA,EAAEA,oEAAoEA;SACpFA,CAACA;IACNA,CAACA;IAdD,iDAcC,CAAA;;;;;;;;;;YA9CK,2BAA2B,GAAG,EAAE,CAAC;YAEvC;gBAKIC,iBAAiBA;gBACjBA,sBAAYA,MAAMA,EAAEA,EAAEA,EAAUA,YAAYA;oBAAZC,iBAAYA,GAAZA,YAAYA,CAAAA;oBACxCA,IAAIA,CAACA,YAAYA,GAAGA,IAAIA,4BAAYA,CAACA,EAAEA,CAACA,CAACA;oBACzCA,IAAIA,CAACA,MAAMA,GAAGA,MAAMA,CAACA;gBACzBA,CAACA;gBAEMD,8BAAOA,GAAdA;oBAAAE,iBAQCA;oBAPGA,IAAMA,KAAKA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,gBAAgBA,EAAEA,CAACA;oBAC7CA,MAAMA,CAACA,IAAIA,CAACA,YAAYA,CAACA,eAAeA,CAACA,IAAIA,CAACA,SAASA;yBAClDA,MAAMA,CAACA,UAACA,QAAQA,IAAKA,OAAAA,gBAACA,CAACA,QAAQA,CAACA,QAAQA,EAAEA,KAAKA,CAACA,EAA3BA,CAA2BA,CAACA;yBACjDA,KAAKA,CAACA,CAACA,EAAEA,2BAA2BA,CAACA;yBACrCA,GAAGA,CAACA,UAACA,QAAQA;wBACVA,MAAMA,CAACA,KAAIA,CAACA,YAAYA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA;oBAClDA,CAACA,CAACA,CAACA,CAACA;gBACZA,CAACA;gBACLF,mBAACA;YAADA,CAACA,AApBD,IAoBC;YApBD,uCAoBC,CAAA;YAED;gBACIG,sBAAYA,KAAKA,EAAEA,OAAOA;oBACtBC,KAAKA,CAACA,gBAAgBA,GAAGA;wBACrBA,MAAMA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA,CAACA,KAAKA,CAACA;oBAC7DA,CAACA,CAACA;gBACNA,CAACA;gBACLD,mBAACA;YAADA,CAACA,AAND,IAMC;YAND,uCAMC,CAAA"} -------------------------------------------------------------------------------- /dist/directives/tag_input.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {PromiseUtils} from "../utils/promise_utils"; 3 | 4 | const TAG_VALUE_SUGGESTIONS_LIMIT = 20; 5 | 6 | export class TagInputCtrl { 7 | public tagValues: string[]; 8 | private $scope: any; 9 | private promiseUtils: PromiseUtils; 10 | 11 | /** @ngInject **/ 12 | constructor($scope, $q, private uiSegmentSrv) { 13 | this.promiseUtils = new PromiseUtils($q); 14 | this.$scope = $scope; 15 | } 16 | 17 | public getTags(): Promise { 18 | const query = this.$scope.getTagInputValue(); 19 | return this.promiseUtils.resolvedPromise(this.tagValues 20 | .filter((tagValue) => _.includes(tagValue, query)) 21 | .slice(0, TAG_VALUE_SUGGESTIONS_LIMIT) 22 | .map((tagValue) => { 23 | return this.uiSegmentSrv.newSegment(tagValue); 24 | })); 25 | } 26 | } 27 | 28 | export class TagInputLink { 29 | constructor(scope, element) { 30 | scope.getTagInputValue = () => { 31 | return element[0].getElementsByTagName("input")[0].value; 32 | }; 33 | } 34 | } 35 | 36 | export function TagInputDirective() { 37 | return { 38 | bindToController: true, 39 | controller: TagInputCtrl, 40 | controllerAs: "ctrl", 41 | link: TagInputLink, 42 | restrict: "E", 43 | scope: { 44 | onChange: "&", 45 | segment: "=", 46 | tagValues: "=", 47 | }, 48 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/tag.input.html" 49 | }; 50 | } 51 | -------------------------------------------------------------------------------- /dist/directives/tags_select.d.ts: -------------------------------------------------------------------------------- 1 | export declare class TagsSelectCtrl { 2 | private uiSegmentSrv; 3 | tagValues: string[]; 4 | selectedValues: string[]; 5 | segments: any[]; 6 | /** @ngInject **/ 7 | constructor(uiSegmentSrv: any); 8 | onChange(): void; 9 | remove(segment: any): void; 10 | private update(); 11 | } 12 | export declare function TagsSelectDirective(): { 13 | bindToController: boolean; 14 | controller: typeof TagsSelectCtrl; 15 | controllerAs: string; 16 | restrict: string; 17 | scope: { 18 | selectedValues: string; 19 | tagName: string; 20 | tagValues: string; 21 | }; 22 | templateUrl: string; 23 | }; 24 | -------------------------------------------------------------------------------- /dist/directives/tags_select.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | 3 | export class TagsSelectCtrl { 4 | public tagValues: string[]; 5 | public selectedValues: string[]; 6 | public segments: any[]; 7 | 8 | /** @ngInject **/ 9 | constructor(private uiSegmentSrv) { 10 | this.selectedValues = this.selectedValues || []; 11 | if (this.tagValues.length > 1) { 12 | this.segments = this.selectedValues 13 | .map((tagValue) => this.uiSegmentSrv.newSegment(tagValue)); 14 | this.segments.push(this.uiSegmentSrv.newPlusButton()); 15 | } 16 | } 17 | 18 | public onChange(): void { 19 | if (!_.isNil(_.last(this.segments).value)) { 20 | this.segments.push(this.uiSegmentSrv.newPlusButton()); 21 | } 22 | this.update(); 23 | } 24 | 25 | public remove(segment): void { 26 | this.segments = _.without(this.segments, segment); 27 | this.update(); 28 | } 29 | 30 | private update(): void { 31 | this.selectedValues = this.segments 32 | .map((tagSegment) => tagSegment.value) 33 | .filter((value) => !_.isNil(value)); 34 | } 35 | } 36 | 37 | export function TagsSelectDirective() { 38 | return { 39 | bindToController: true, 40 | controller: TagsSelectCtrl, 41 | controllerAs: "ctrl", 42 | restrict: "E", 43 | scope: { 44 | selectedValues: "=", 45 | tagName: "=", 46 | tagValues: "=" 47 | }, 48 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/tags.select.html" 49 | }; 50 | } 51 | -------------------------------------------------------------------------------- /dist/img/kairosdb_logo_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/kairosdb-datasource/4359eeb2f1e7cbc757d18a9f31f862587239908c/dist/img/kairosdb_logo_large.png -------------------------------------------------------------------------------- /dist/img/kairosdb_logo_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/kairosdb-datasource/4359eeb2f1e7cbc757d18a9f31f862587239908c/dist/img/kairosdb_logo_small.png -------------------------------------------------------------------------------- /dist/module.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import { KairosDBConfigCtrl } from "./core/config_ctrl"; 3 | import { KairosDBDatasource } from "./core/datasource"; 4 | import { KairosDBQueryCtrl } from "./core/query_ctrl"; 5 | declare class KairosDBQueryOptionsCtrl { 6 | static templateUrl: string; 7 | } 8 | export { KairosDBDatasource as Datasource, KairosDBQueryCtrl as QueryCtrl, KairosDBConfigCtrl as ConfigCtrl, KairosDBQueryOptionsCtrl as QueryOptionsCtrl }; 9 | -------------------------------------------------------------------------------- /dist/module.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"module.js","sourceRoot":"","sources":["module.ts"],"names":["KairosDBQueryOptionsCtrl","KairosDBQueryOptionsCtrl.constructor"],"mappings":"AAAA,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAiB/E;gBAAAA;gBAEAC,CAACA;gBADiBD,oCAAWA,GAAGA,6BAA6BA,CAACA;gBAC9DA,+BAACA;YAADA,CAACA,AAFD,IAEC;YAGyB,wDAAU;YACX,sDAAS;YACR,yDAAU;YACJ,uDAAgB;YAGhD,iBAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;iBAC/B,SAAS,CAAC,kBAAkB,EAAE,6CAAyB,CAAC;iBACxD,SAAS,CAAC,YAAY,EAAE,gCAAmB,CAAC;iBAC5C,SAAS,CAAC,aAAa,EAAE,kCAAoB,CAAC;iBAC9C,SAAS,CAAC,iBAAiB,EAAE,4CAAwB,CAAC;iBACtD,SAAS,CAAC,YAAY,EAAE,iCAAmB,CAAC;iBAC5C,SAAS,CAAC,UAAU,EAAE,6BAAiB,CAAC;iBACxC,SAAS,CAAC,cAAc,EAAE,sCAAqB,CAAC;iBAChD,SAAS,CAAC,aAAa,EAAE,oCAAoB,CAAC;iBAC9C,SAAS,CAAC,aAAa,EAAE,oCAAoB,CAAC,CAAC"} -------------------------------------------------------------------------------- /dist/partials/aggregator.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 6 |
7 |
8 | 11 |
12 |
13 | 16 |
17 |
18 | 23 |
24 |
25 |
26 |
27 |
28 | -------------------------------------------------------------------------------- /dist/partials/aggregators.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 7 |
8 | 9 |
10 |
11 |
12 |
13 | 14 | 15 |
-------------------------------------------------------------------------------- /dist/partials/config.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /dist/partials/group.by.editor.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 | -------------------------------------------------------------------------------- /dist/partials/group.by.time.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 6 |
7 |
8 | 14 |
15 |
16 | 19 | 23 | 26 |
27 |
28 | 33 |
34 |
35 |
36 |
37 |
38 | -------------------------------------------------------------------------------- /dist/partials/group.by.value.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 6 |
7 | 8 |
9 | 15 | 17 | 22 |
23 |
24 |
25 |
26 |
27 | -------------------------------------------------------------------------------- /dist/partials/metric.name.field.html: -------------------------------------------------------------------------------- 1 |
2 | 4 | 5 | 10 | 11 | 14 | 15 | 17 | 18 | 23 | 26 | 27 | 32 |
33 | -------------------------------------------------------------------------------- /dist/partials/metric.name.row.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 11 |
12 |
13 | 14 | 16 | 17 |
18 |
19 |
20 |
21 | -------------------------------------------------------------------------------- /dist/partials/metric.names.loading.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | 7 |
8 |
9 | 12 |
13 |
14 |
15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /dist/partials/query.editor.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /dist/partials/query.options.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | -------------------------------------------------------------------------------- /dist/partials/tag.input.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /dist/partials/tags.editor.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 7 |
8 |
9 | 12 | 15 |
16 |
17 | 20 |
21 |
22 |
23 |
24 |
25 | 26 |
27 | -------------------------------------------------------------------------------- /dist/partials/tags.select.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 6 |
7 | 8 |
9 | 12 |
13 | 14 |
15 |
16 |
17 |
18 | 19 |
20 |
21 | 24 |
25 | 26 |
27 | 28 |
29 | 30 | 31 | 32 |
33 |
34 | 35 |
36 |
37 |
38 |
39 | -------------------------------------------------------------------------------- /dist/plugin.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "grafana-kairosdb-datasource", 3 | "name": "KairosDB", 4 | "type": "datasource", 5 | "metrics": true, 6 | "annotations": false, 7 | "staticRoot": ".", 8 | "info": { 9 | "description": "datasource plugin for KairosDB", 10 | "keywords": [ 11 | "kairosdb", 12 | "cassandra" 13 | ], 14 | "logos": { 15 | "small": "img/kairosdb_logo_small.png", 16 | "large": "img/kairosdb_logo_large.png" 17 | }, 18 | "links": [ 19 | { 20 | "name": "GitHub", 21 | "url": "https://github.com/grafana/kairosdb-datasource" 22 | }, 23 | { 24 | "name": "License", 25 | "url": "https://github.com/grafana/kairosdb-datasource/blob/master/LICENSE" 26 | } 27 | ], 28 | "version": "3.0.2", 29 | "updated": "2018-07-02" 30 | }, 31 | "dependencies": { 32 | "grafanaVersion": "4.6.2+", 33 | "plugins": [] 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /dist/utils/promise_utils.d.ts: -------------------------------------------------------------------------------- 1 | export declare class PromiseUtils { 2 | private $q; 3 | constructor($q: any); 4 | resolvedPromise(value?: any): any; 5 | } 6 | -------------------------------------------------------------------------------- /dist/utils/promise_utils.js: -------------------------------------------------------------------------------- 1 | System.register([], function(exports_1) { 2 | var PromiseUtils; 3 | return { 4 | setters:[], 5 | execute: function() { 6 | PromiseUtils = (function () { 7 | function PromiseUtils($q) { 8 | this.$q = $q; 9 | } 10 | PromiseUtils.prototype.resolvedPromise = function (value) { 11 | var defer = this.$q.defer(); 12 | defer.resolve(value); 13 | return defer.promise; 14 | }; 15 | return PromiseUtils; 16 | })(); 17 | exports_1("PromiseUtils", PromiseUtils); 18 | } 19 | } 20 | }); 21 | //# sourceMappingURL=promise_utils.js.map -------------------------------------------------------------------------------- /dist/utils/promise_utils.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"promise_utils.js","sourceRoot":"","sources":["promise_utils.ts"],"names":["PromiseUtils","PromiseUtils.constructor","PromiseUtils.resolvedPromise"],"mappings":";;;;;YAAA;gBAEIA,sBAAYA,EAAEA;oBACVC,IAAIA,CAACA,EAAEA,GAAGA,EAAEA,CAACA;gBACjBA,CAACA;gBAEMD,sCAAeA,GAAtBA,UAAuBA,KAAWA;oBAC9BE,IAAMA,KAAKA,GAAGA,IAAIA,CAACA,EAAEA,CAACA,KAAKA,EAAEA,CAACA;oBAC9BA,KAAKA,CAACA,OAAOA,CAACA,KAAKA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,KAAKA,CAACA,OAAOA,CAACA;gBACzBA,CAACA;gBACLF,mBAACA;YAADA,CAACA,AAXD,IAWC;YAXD,uCAWC,CAAA"} -------------------------------------------------------------------------------- /dist/utils/promise_utils.ts: -------------------------------------------------------------------------------- 1 | export class PromiseUtils { 2 | private $q: any; 3 | constructor($q) { 4 | this.$q = $q; 5 | } 6 | 7 | public resolvedPromise(value?: any) { 8 | const defer = this.$q.defer(); 9 | defer.resolve(value); 10 | return defer.promise; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /dist/utils/templating_function_resolver.d.ts: -------------------------------------------------------------------------------- 1 | import { TemplatingUtils } from "./templating_utils"; 2 | export declare class TemplatingFunctionResolver { 3 | private static FUNCTION_ARGUMENTS_SEPARATOR; 4 | private static FILTER_ARGUMENT_SEPARATOR; 5 | private static FILTER_ARGUMENT_REGEXP; 6 | private templatingUtils; 7 | constructor(templatingUtils: TemplatingUtils); 8 | unpackFunction(matchedFunction: any, functionBody: string): () => Promise; 9 | private mapToFilter(filter); 10 | private isFilterArgument(argument); 11 | } 12 | -------------------------------------------------------------------------------- /dist/utils/templating_utils.d.ts: -------------------------------------------------------------------------------- 1 | export declare class TemplatingUtils { 2 | static MULTI_VALUE_SEPARATOR: string; 3 | private static MULTI_VALUE_REGEX; 4 | private static MULTI_VALUE_BOUNDARIES; 5 | private templateSrv; 6 | private scopedVars; 7 | constructor(templateSrv: any, scopedVars: any); 8 | replace(expression: string): string[]; 9 | replaceAll(expressions: string[]): string[]; 10 | } 11 | -------------------------------------------------------------------------------- /dist/utils/templating_utils.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"templating_utils.js","sourceRoot":"","sources":["templating_utils.ts"],"names":["TemplatingUtils","TemplatingUtils.constructor","TemplatingUtils.replace","TemplatingUtils.replaceAll"],"mappings":";;;;;;;;;YAEA;gBAOIA,yBAAYA,WAAgBA,EAAEA,UAAeA;oBACzCC,IAAIA,CAACA,WAAWA,GAAGA,WAAWA,CAACA;oBAC/BA,IAAIA,CAACA,UAAUA,GAAGA,UAAUA,CAACA;gBACjCA,CAACA;gBAEMD,iCAAOA,GAAdA,UAAeA,UAAkBA;oBAC7BE,IAAMA,kBAAkBA,GAAGA,IAAIA,CAACA,WAAWA,CAACA,OAAOA,CAACA,UAAUA,EAAEA,IAAIA,CAACA,UAAUA,CAACA,CAACA;oBACjFA,IAAMA,kBAAkBA,GAAGA,kBAAkBA,CAACA,KAAKA,CAACA,eAAeA,CAACA,iBAAiBA,CAACA,CAACA;oBAEvFA,EAAEA,CAACA,CAACA,CAACA,gBAACA,CAACA,KAAKA,CAACA,kBAAkBA,CAACA,CAACA,CAACA,CAACA;wBAC/BA,IAAIA,cAAcA,GAAGA,CAACA,kBAAkBA,CAACA,CAACA;wBAC1CA,kBAAkBA,CAACA,OAAOA,CAACA,UAACA,UAAUA;4BAClCA,IAAMA,MAAMA,GAAGA,UAAUA,CAACA,OAAOA,CAACA,eAAeA,CAACA,sBAAsBA,EAAEA,EAAEA,CAACA;iCACxEA,KAAKA,CAACA,eAAeA,CAACA,qBAAqBA,CAACA,CAACA;4BAClDA,cAAcA,GAAGA,gBAACA,CAACA,OAAOA,CAACA,MAAMA,EAAEA,UAACA,KAAKA;gCACrCA,MAAMA,CAACA,cAAcA,CAACA,GAAGA,CAACA,UAACA,aAAaA;oCACpCA,MAAMA,CAACA,aAAaA,CAACA,OAAOA,CAACA,UAAUA,EAAEA,KAAKA,CAACA,CAACA;gCACpDA,CAACA,CAACA,CAACA;4BACPA,CAACA,CAACA,CAACA;wBACPA,CAACA,CAACA,CAACA;wBACHA,MAAMA,CAACA,cAAcA,CAACA;oBAC1BA,CAACA;oBACDA,MAAMA,CAACA,CAACA,kBAAkBA,CAACA,CAACA;gBAChCA,CAACA;gBAEMF,oCAAUA,GAAjBA,UAAkBA,WAAqBA;oBAAvCG,iBAECA;oBADGA,MAAMA,CAACA,gBAACA,CAACA,OAAOA,CAACA,WAAWA,CAACA,GAAGA,CAACA,UAACA,UAAUA,IAAKA,OAAAA,KAAIA,CAACA,OAAOA,CAACA,UAAUA,CAACA,EAAxBA,CAAwBA,CAACA,CAACA,CAACA;gBAChFA,CAACA;gBAjCaH,qCAAqBA,GAAWA,GAAGA,CAACA;gBACnCA,iCAAiBA,GAAWA,QAAQA,CAACA;gBACrCA,sCAAsBA,GAAWA,OAAOA,CAACA;gBAgC5DA,sBAACA;YAADA,CAACA,AAnCD,IAmCC;YAnCD,6CAmCC,CAAA"} -------------------------------------------------------------------------------- /dist/utils/templating_utils.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | 3 | export class TemplatingUtils { 4 | public static MULTI_VALUE_SEPARATOR: string = ","; 5 | private static MULTI_VALUE_REGEX: RegExp = /{.*?}/g; 6 | private static MULTI_VALUE_BOUNDARIES: RegExp = /[{}]/g; 7 | private templateSrv: any; 8 | private scopedVars: any; 9 | 10 | constructor(templateSrv: any, scopedVars: any) { 11 | this.templateSrv = templateSrv; 12 | this.scopedVars = scopedVars; 13 | } 14 | 15 | public replace(expression: string): string[] { 16 | const replacedExpression = this.templateSrv.replace(expression, this.scopedVars); 17 | const matchedMultiValues = replacedExpression.match(TemplatingUtils.MULTI_VALUE_REGEX); 18 | 19 | if (!_.isNil(matchedMultiValues)) { 20 | let replacedValues = [replacedExpression]; 21 | matchedMultiValues.forEach((multiValue) => { 22 | const values = multiValue.replace(TemplatingUtils.MULTI_VALUE_BOUNDARIES, "") 23 | .split(TemplatingUtils.MULTI_VALUE_SEPARATOR); 24 | replacedValues = _.flatMap(values, (value) => { 25 | return replacedValues.map((replacedValue) => { 26 | return replacedValue.replace(multiValue, value); 27 | }); 28 | }); 29 | }); 30 | return replacedValues; 31 | } 32 | return [replacedExpression]; 33 | } 34 | 35 | public replaceAll(expressions: string[]): string[] { 36 | return _.flatten(expressions.map((expression) => this.replace(expression))); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /dist/utils/time_unit_utils.d.ts: -------------------------------------------------------------------------------- 1 | import { TimeUnit } from "../beans/aggregators/utils"; 2 | export declare class TimeUnitUtils { 3 | static extractUnit(interval: string): string; 4 | static extractValue(interval: string): string; 5 | static convertTimeUnit(unit: string): string; 6 | static getShortUnit(unit: string): string; 7 | static getString(unit: TimeUnit): string; 8 | private static TIME_UNIT_STRINGS; 9 | private static SHORT_UNITS; 10 | private static LONG_UNITS; 11 | } 12 | -------------------------------------------------------------------------------- /dist/utils/time_unit_utils.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"time_unit_utils.js","sourceRoot":"","sources":["time_unit_utils.ts"],"names":["TimeUnitUtils","TimeUnitUtils.constructor","TimeUnitUtils.extractUnit","TimeUnitUtils.extractValue","TimeUnitUtils.convertTimeUnit","TimeUnitUtils.getShortUnit","TimeUnitUtils.getString"],"mappings":";;;;;;;;;;;;YAGA;gBAAAA;gBA6BAC,CAACA;gBA5BiBD,yBAAWA,GAAzBA,UAA0BA,QAAgBA;oBACtCE,IAAMA,SAASA,GAAWA,IAAIA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;oBACtDA,MAAMA,CAACA,QAAQA,CAACA,OAAOA,CAACA,SAASA,EAAEA,EAAEA,CAACA,CAACA;gBAC3CA,CAACA;gBAEaF,0BAAYA,GAA1BA,UAA2BA,QAAgBA;oBACvCG,MAAMA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,QAAQA,EAAEA,CAACA;gBAC3CA,CAACA;gBAEaH,6BAAeA,GAA7BA,UAA8BA,IAAYA;oBACtCI,MAAMA,CAACA,aAAaA,CAACA,WAAWA,CAACA,IAAIA,CAACA,IAAIA,aAAaA,CAACA,UAAUA,CAACA,IAAIA,CAACA,CAACA;gBAC7EA,CAACA;gBAEaJ,0BAAYA,GAA1BA,UAA2BA,IAAYA;oBACnCK,MAAMA,CAACA,gBAACA,CAACA,MAAMA,CAACA,aAAaA,CAACA,WAAWA,CAACA,CAACA,IAAIA,CAACA,CAACA;gBACrDA,CAACA;gBAEaL,uBAASA,GAAvBA,UAAwBA,IAAcA;oBAClCM,MAAMA,CAACA,gBAAQA,CAACA,IAAIA,CAACA,CAACA;gBAC1BA,CAACA;gBAEcN,+BAAiBA,GAAGA,gBAACA,CAACA,MAAMA,CAACA,kBAAUA,CAACA,gBAAQA,CAACA,CAACA,CAACA;gBACnDA,yBAAWA,GAAGA,gBAACA,CAACA,SAASA,CACpCA,CAACA,IAAIA,EAAEA,GAAGA,EAAEA,GAAGA,EAAEA,GAAGA,EAAEA,GAAGA,EAAEA,GAAGA,EAAEA,GAAGA,EAAEA,GAAGA,CAACA,EACzCA,aAAaA,CAACA,iBAAiBA,CAACA,CAACA;gBACtBA,wBAAUA,GAAGA,gBAACA,CAACA,SAASA,CACnCA,CAACA,aAAaA,EAAEA,QAAQA,EAAEA,QAAQA,EAAEA,MAAMA,EAAEA,KAAKA,EAAEA,MAAMA,EAAEA,OAAOA,EAAEA,MAAMA,CAACA,EAC3EA,aAAaA,CAACA,iBAAiBA,CAACA,CAACA;gBACzCA,oBAACA;YAADA,CAACA,AA7BD,IA6BC;YA7BD,yCA6BC,CAAA"} -------------------------------------------------------------------------------- /dist/utils/time_unit_utils.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {EnumValues, TimeUnit} from "../beans/aggregators/utils"; 3 | 4 | export class TimeUnitUtils { 5 | public static extractUnit(interval: string): string { 6 | const timeValue: string = this.extractValue(interval); 7 | return interval.replace(timeValue, ""); 8 | } 9 | 10 | public static extractValue(interval: string): string { 11 | return parseFloat(interval).toString(); 12 | } 13 | 14 | public static convertTimeUnit(unit: string): string { 15 | return TimeUnitUtils.SHORT_UNITS[unit] || TimeUnitUtils.LONG_UNITS[unit]; 16 | } 17 | 18 | public static getShortUnit(unit: string): string { 19 | return _.invert(TimeUnitUtils.SHORT_UNITS)[unit]; 20 | } 21 | 22 | public static getString(unit: TimeUnit): string { 23 | return TimeUnit[unit]; 24 | } 25 | 26 | private static TIME_UNIT_STRINGS = _.values(EnumValues(TimeUnit)); 27 | private static SHORT_UNITS = _.zipObject( 28 | ["ms", "s", "m", "h", "d", "w", "M", "y"], 29 | TimeUnitUtils.TIME_UNIT_STRINGS); 30 | private static LONG_UNITS = _.zipObject( 31 | ["millisecond", "second", "minute", "hour", "day", "week", "month", "year"], 32 | TimeUnitUtils.TIME_UNIT_STRINGS); 33 | } 34 | -------------------------------------------------------------------------------- /plugin.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "grafana-kairosdb-datasource", 3 | "name": "KairosDB", 4 | "type": "datasource", 5 | "metrics": true, 6 | "annotations": false, 7 | "staticRoot": ".", 8 | "info": { 9 | "description": "datasource plugin for KairosDB", 10 | "keywords": [ 11 | "kairosdb", 12 | "cassandra" 13 | ], 14 | "logos": { 15 | "small": "img/kairosdb_logo_small.png", 16 | "large": "img/kairosdb_logo_large.png" 17 | }, 18 | "links": [ 19 | { 20 | "name": "GitHub", 21 | "url": "https://github.com/grafana/kairosdb-datasource" 22 | }, 23 | { 24 | "name": "License", 25 | "url": "https://github.com/grafana/kairosdb-datasource/blob/master/LICENSE" 26 | } 27 | ], 28 | "version": "3.0.2", 29 | "updated": "2018-07-02" 30 | }, 31 | "dependencies": { 32 | "grafanaVersion": "4.6.2+", 33 | "plugins": [] 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /specs/beans/function.test.ts: -------------------------------------------------------------------------------- 1 | import {TemplatingFunction} from "../../src/beans/function"; 2 | 3 | describe("TemplatingFunction", () => { 4 | it("should pass all arguments to body", () => { 5 | // given 6 | const name: string = "name"; 7 | const body: any = sinon.spy(); 8 | const templatingFunction: TemplatingFunction = new TemplatingFunction(name, body); 9 | const functionArgs: string[] = ["function arg1", "function 2", "function arg3"]; 10 | // when 11 | templatingFunction.run(functionArgs); 12 | // then 13 | body.getCall(0).args.should.deep.equal(functionArgs); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /specs/beans/request/metric_tags.test.ts: -------------------------------------------------------------------------------- 1 | import {MetricTags} from "../../../src/beans/request/metric_tags"; 2 | 3 | describe("MetricTags", () => { 4 | const metricTags: MetricTags = new MetricTags(); 5 | 6 | it("should update info correctly", () => { 7 | // given 8 | // tslint:disable 9 | const tags = { 10 | "tag1": ["just", "a", "set", "of", "tags"], 11 | "another tag": ["another tag", "with multiword", "values"], 12 | "simple tag": ["single value"], 13 | "an empty tag": [] 14 | }; 15 | // tslint:enable 16 | 17 | // when 18 | metricTags.updateTags(tags); 19 | // then 20 | // tslint:disable 21 | expect(metricTags.size).to.equal(4); 22 | expect(metricTags.combinations).to.equal(15); 23 | expect(metricTags.size).to.equal(4); 24 | expect(metricTags.combinations).to.equal(15); 25 | expect(metricTags.multiValuedTags).to.deep.equal(["tag1", "another tag"]); 26 | expect(metricTags.initialized).to.be.true; 27 | }); 28 | }); -------------------------------------------------------------------------------- /specs/core/datasource.test.ts: -------------------------------------------------------------------------------- 1 | import {KairosDBDatasource} from "../../src/core/datasource"; 2 | import {buildNoopTemplatingSrvMock} from "../mocks"; 3 | 4 | describe("KairosDBDatasource", () => { 5 | const instanceSettings = {type: "type", url: "url", name: "name"}; 6 | const promiseUtils = sinon.spy(); 7 | 8 | it("should handle metric tags response correctly", () => { 9 | // given 10 | const metricName = "metricName"; 11 | const expectedTags = ["tag", "another tag", "metricTag"]; 12 | const response = { 13 | data: { 14 | queries: [{ 15 | results: [ 16 | { 17 | tags: expectedTags 18 | } 19 | ] 20 | }] 21 | } 22 | }; 23 | const backendSrv = { 24 | datasourceRequest: () => { 25 | return { 26 | then: (responseHandler) => responseHandler(response) 27 | }; 28 | } 29 | }; 30 | const datasource: KairosDBDatasource = 31 | new KairosDBDatasource(instanceSettings, promiseUtils, backendSrv, buildNoopTemplatingSrvMock()); 32 | // when 33 | const metricTags = datasource.getMetricTags(metricName); 34 | // then 35 | metricTags.should.equal(expectedTags); 36 | }); 37 | }); 38 | -------------------------------------------------------------------------------- /specs/directives/aggregator_editor.test.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "../../src/beans/aggregators/aggregator"; 2 | import {AggregatorEditorDirective} from "../../src/directives/aggregator_editor"; 3 | 4 | describe("AggregatorEditorController", () => { 5 | it("should add picks (clones) aggregator correctly", () => { 6 | // given 7 | const aggregatorName: string = "Aggregator 1"; 8 | const aggregator: Aggregator = new Aggregator(aggregatorName); 9 | const scope = { 10 | ctrl: { 11 | availableAggregators: [aggregator] 12 | } 13 | }; 14 | const link = AggregatorEditorDirective().link; 15 | link(scope); 16 | // when 17 | scope.pickAggregator(aggregatorName); 18 | // then 19 | scope.newAggregator.should.not.equal(aggregator); 20 | scope.newAggregator.should.deep.equal(aggregator); 21 | }); 22 | }); 23 | -------------------------------------------------------------------------------- /specs/directives/aggregators.test.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "../../src/beans/aggregators/aggregator"; 2 | import {RangeAggregator} from "../../src/beans/aggregators/range_aggregator"; 3 | import {AggregatorsCtrl} from "../../src/directives/aggregators"; 4 | 5 | describe("AggregatorsController", () => { 6 | const aggregatorCtrl: AggregatorsCtrl = new AggregatorsCtrl(); 7 | aggregatorCtrl.entries = []; 8 | 9 | it("should add aggregator", () => { 10 | // given 11 | const aggregator: Aggregator = new Aggregator("aggregator name"); 12 | // when 13 | aggregatorCtrl.add(aggregator); 14 | // then 15 | aggregatorCtrl.entries.should.contain(aggregator); 16 | }); 17 | 18 | it("should remove aggregator", () => { 19 | // given 20 | const aggregator: Aggregator = new Aggregator("aggregator name"); 21 | aggregatorCtrl.add(aggregator); 22 | // when 23 | aggregatorCtrl.remove(aggregator); 24 | // then 25 | aggregatorCtrl.entries.should.not.contain(aggregator); 26 | }); 27 | 28 | it("should allow to add more aggregators of the same type", () => { 29 | // given 30 | const aggregator1: Aggregator = new RangeAggregator("agg1"); 31 | const aggregator2: Aggregator = new RangeAggregator("agg2"); 32 | // when 33 | aggregatorCtrl.add(aggregator1); 34 | aggregatorCtrl.add(aggregator2); 35 | // then 36 | aggregatorCtrl.entries.should.contain(aggregator1); 37 | aggregatorCtrl.entries.should.contain(aggregator2); 38 | }); 39 | }); 40 | -------------------------------------------------------------------------------- /specs/mocks.ts: -------------------------------------------------------------------------------- 1 | import {SamplingConverter} from "../src/core/request/sampling_converter"; 2 | 3 | export const buildTemplatingSrvMock = (variables) => { 4 | return { 5 | replace: (expression) => { 6 | let replacedExpression = expression; 7 | _.forOwn(variables, (values, key) => { 8 | const templatedValue = values.length > 1 ? "{" + _.join(values, ",") + "}" : values[0]; 9 | replacedExpression = replacedExpression.replace("$" + key, templatedValue); 10 | replacedExpression = replacedExpression.replace("[[" + key + "]]", templatedValue); 11 | }); 12 | return replacedExpression; 13 | } 14 | }; 15 | }; 16 | 17 | export const buildNoopTemplatingSrvMock = () => { 18 | return { 19 | replace: (expression) => expression 20 | }; 21 | }; 22 | 23 | export const buildSamplingConverterMock = (interval, unit, applicable) => { 24 | const converterMock = sinon.mock(SamplingConverter); 25 | converterMock.isApplicable = () => applicable; 26 | converterMock.convert = (ignore1, ignore2) => { 27 | return {interval, unit}; 28 | }; 29 | sinon.stub(converterMock, "isApplicable").callThrough(); 30 | sinon.stub(converterMock, "convert").callThrough(); 31 | return converterMock; 32 | }; 33 | -------------------------------------------------------------------------------- /src/beans/aggregators/aggregator.ts: -------------------------------------------------------------------------------- 1 | import {AutoValueSwitch} from "../../directives/auto_value_switch"; 2 | import {AggregatorParameter} from "./parameters/aggregator_parameter"; 3 | 4 | export class Aggregator { 5 | public name: string; 6 | public parameters: AggregatorParameter[] = []; 7 | public autoValueSwitch: AutoValueSwitch = undefined; 8 | 9 | constructor(name: string) { 10 | this.name = name; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/beans/aggregators/aggregators.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "./aggregator"; 2 | import {DivideAggregator} from "./divide_aggregator"; 3 | import {PercentileAggregator} from "./percentile_aggregator"; 4 | import {RangeAggregator} from "./range_aggregator"; 5 | import {RateAggregator} from "./rate_aggregator"; 6 | import {SamplerAggregator} from "./sampler_aggregator"; 7 | import {ScaleAggregator} from "./scale_aggregator"; 8 | import {SmaAggregator} from "./sma_aggregator"; 9 | import {TrimAggregator} from "./trim_aggregator"; 10 | 11 | export const AGGREGATORS = [ 12 | new RangeAggregator("avg"), 13 | new RangeAggregator("dev"), 14 | new RangeAggregator("count"), 15 | new RangeAggregator("first"), 16 | new RangeAggregator("gaps"), 17 | new RangeAggregator("last"), 18 | new RangeAggregator("least_squares"), 19 | new RangeAggregator("max"), 20 | new RangeAggregator("min"), 21 | new RangeAggregator("gaps"), 22 | new PercentileAggregator(), 23 | new SmaAggregator(), 24 | new RangeAggregator("sum"), 25 | new Aggregator("diff"), 26 | new DivideAggregator(), 27 | new RateAggregator(), 28 | new SamplerAggregator(), 29 | new ScaleAggregator(), 30 | new TrimAggregator() 31 | ]; 32 | -------------------------------------------------------------------------------- /src/beans/aggregators/divide_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "./aggregator"; 2 | import {AnyAggregatorParameter} from "./parameters/any_aggregator_parameter"; 3 | 4 | export class DivideAggregator extends Aggregator { 5 | constructor() { 6 | super("div"); 7 | this.parameters = this.parameters.concat([new AnyAggregatorParameter("divisor", "by")]); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/beans/aggregators/parameters/aggregator_parameter.ts: -------------------------------------------------------------------------------- 1 | abstract class AggregatorParameter { 2 | public name: string; 3 | public text: string; 4 | public value: string; 5 | public type: string; 6 | 7 | constructor(name: string, text: string = name, value: string = null) { 8 | this.name = name; 9 | this.text = text; 10 | this.value = value; 11 | } 12 | } 13 | 14 | export { AggregatorParameter }; 15 | -------------------------------------------------------------------------------- /src/beans/aggregators/parameters/alignment_aggregator_parameter.ts: -------------------------------------------------------------------------------- 1 | import {Alignment} from "../utils"; 2 | import {EnumAggregatorParameter} from "./enum_aggregator_parameter"; 3 | 4 | export class AlignmentAggregatorParameter extends EnumAggregatorParameter { 5 | constructor() { 6 | super("sampling", Alignment, "align by", "NONE"); 7 | this.type = "alignment"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/beans/aggregators/parameters/any_aggregator_parameter.ts: -------------------------------------------------------------------------------- 1 | import {AggregatorParameter} from "./aggregator_parameter"; 2 | 3 | export class AnyAggregatorParameter extends AggregatorParameter { 4 | constructor(name: string, text: string = name, value: any = null) { 5 | super(name, text, value); 6 | this.type = "any"; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/beans/aggregators/parameters/enum_aggregator_parameter.ts: -------------------------------------------------------------------------------- 1 | import {EnumValues} from "../utils"; 2 | import {LimitedAggregatorParameter} from "./limited_aggregator_parameter"; 3 | 4 | export class EnumAggregatorParameter extends LimitedAggregatorParameter { 5 | constructor(name: string, type: any, text: string = name, value: any = null) { 6 | super(name, EnumValues(type), text, value); 7 | this.type = "enum"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/beans/aggregators/parameters/limited_aggregator_parameter.ts: -------------------------------------------------------------------------------- 1 | import {AggregatorParameter} from "./aggregator_parameter"; 2 | export class LimitedAggregatorParameter extends AggregatorParameter { 3 | private allowedValues: any[]; 4 | 5 | constructor(name: string, allowedValues: any[], text: string = name, value: any = null) { 6 | super(name, text, value); 7 | this.allowedValues = allowedValues; 8 | this.type = "limited"; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/beans/aggregators/parameters/sampling_aggregator_parameter.ts: -------------------------------------------------------------------------------- 1 | import {AnyAggregatorParameter} from "./any_aggregator_parameter"; 2 | 3 | export class SamplingAggregatorParameter extends AnyAggregatorParameter { 4 | public static TYPE = "sampling"; 5 | 6 | constructor(text: string = name, value: any = null) { 7 | super("value", text, value); 8 | this.type = SamplingAggregatorParameter.TYPE; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/beans/aggregators/parameters/sampling_unit_aggregator_parameter.ts: -------------------------------------------------------------------------------- 1 | import {TimeUnit} from "../utils"; 2 | import {EnumAggregatorParameter} from "./enum_aggregator_parameter"; 3 | 4 | export class SamplingUnitAggregatorParameter extends EnumAggregatorParameter { 5 | public static TYPE = "sampling_unit"; 6 | 7 | constructor() { 8 | super("unit", TimeUnit, "unit", "HOURS"); 9 | this.type = SamplingUnitAggregatorParameter.TYPE; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/beans/aggregators/percentile_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {AnyAggregatorParameter} from "./parameters/any_aggregator_parameter"; 2 | import {RangeAggregator} from "./range_aggregator"; 3 | 4 | export class PercentileAggregator extends RangeAggregator { 5 | constructor() { 6 | super("percentile"); 7 | this.parameters = this.parameters.concat([new AnyAggregatorParameter("percentile")]); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/beans/aggregators/range_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {AutoValueSwitch} from "../../directives/auto_value_switch"; 2 | import {Aggregator} from "./aggregator"; 3 | import {AlignmentAggregatorParameter} from "./parameters/alignment_aggregator_parameter"; 4 | import {SamplingAggregatorParameter} from "./parameters/sampling_aggregator_parameter"; 5 | import {SamplingUnitAggregatorParameter} from "./parameters/sampling_unit_aggregator_parameter"; 6 | 7 | export class RangeAggregator extends Aggregator { 8 | constructor(name: string) { 9 | super(name); 10 | const samplingAggregatorParameter = new SamplingAggregatorParameter("every", "1"); 11 | const samplingUnitAggregatorParameter = new SamplingUnitAggregatorParameter(); 12 | this.parameters = this.parameters.concat([ 13 | new AlignmentAggregatorParameter(), 14 | samplingAggregatorParameter, 15 | samplingUnitAggregatorParameter 16 | ]); 17 | this.autoValueSwitch = new AutoValueSwitch([samplingAggregatorParameter, samplingUnitAggregatorParameter]); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/beans/aggregators/rate_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "./aggregator"; 2 | 3 | import {AlignmentAggregatorParameter} from "./parameters/alignment_aggregator_parameter"; 4 | import {EnumAggregatorParameter} from "./parameters/enum_aggregator_parameter"; 5 | import {TimeUnit} from "./utils"; 6 | 7 | export class RateAggregator extends Aggregator { 8 | constructor() { 9 | super("rate"); 10 | this.parameters = this.parameters.concat([ 11 | new AlignmentAggregatorParameter(), 12 | new EnumAggregatorParameter("unit", TimeUnit, "every") 13 | ]); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/beans/aggregators/sampler_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "./aggregator"; 2 | import {EnumAggregatorParameter} from "./parameters/enum_aggregator_parameter"; 3 | import {TimeUnit} from "./utils"; 4 | 5 | export class SamplerAggregator extends Aggregator { 6 | constructor() { 7 | super("sampler"); 8 | this.parameters = this.parameters.concat([new EnumAggregatorParameter("unit", TimeUnit, "every")]); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/beans/aggregators/scale_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "./aggregator"; 2 | import {AnyAggregatorParameter} from "./parameters/any_aggregator_parameter"; 3 | 4 | export class ScaleAggregator extends Aggregator { 5 | constructor() { 6 | super("scale"); 7 | this.parameters = this.parameters.concat([new AnyAggregatorParameter("factor", "by")]); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/beans/aggregators/sma_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "./aggregator"; 2 | import {AnyAggregatorParameter} from "./parameters/any_aggregator_parameter"; 3 | 4 | export class SmaAggregator extends Aggregator { 5 | constructor() { 6 | super("sma"); 7 | this.parameters = this.parameters.concat([new AnyAggregatorParameter("size")]); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/beans/aggregators/trim_aggregator.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "./aggregator"; 2 | import {EnumAggregatorParameter} from "./parameters/enum_aggregator_parameter"; 3 | import {Trim} from "./utils"; 4 | 5 | export class TrimAggregator extends Aggregator { 6 | constructor() { 7 | super("trim"); 8 | this.parameters = this.parameters.concat([new EnumAggregatorParameter("trim", Trim, "by")]); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/beans/aggregators/utils.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | 3 | export enum TimeUnit { 4 | MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS 5 | } 6 | 7 | export enum Trim { 8 | first, last, both 9 | } 10 | 11 | export enum Alignment { 12 | NONE, START_TIME, SAMPLING 13 | } 14 | 15 | export function EnumValues(enumType) { 16 | return _.pickBy(_.values(enumType), (value) => !_.isNumber(value)); 17 | } 18 | -------------------------------------------------------------------------------- /src/beans/function.ts: -------------------------------------------------------------------------------- 1 | export class TemplatingFunction { 2 | public name: string; 3 | public body: any; 4 | public regexp: string; 5 | 6 | constructor(name: string, body: any) { 7 | this.name = name; 8 | this.body = body; 9 | this.regexp = this.getRegexp(); 10 | } 11 | 12 | public run(args: string[]) { 13 | return this.body(...args); 14 | } 15 | 16 | private getRegexp(): string { 17 | return "^" + this.name + "\\(([\\S ]+)\\)" + "$"; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/beans/request/datapoints_query.ts: -------------------------------------------------------------------------------- 1 | import {MetricQuery} from "./metric_query"; 2 | 3 | // todo: to be replaced with grafana-sdk-mock 4 | export interface Moment { 5 | unix(); 6 | } 7 | 8 | export class DatapointsQuery { 9 | public start_absolute: number; 10 | public end_absolute: number; 11 | public metrics: MetricQuery[]; 12 | public cache_time: number = 0; 13 | 14 | constructor(startAbsolute: Moment, endAbsolute: Moment, metrics: MetricQuery[]) { 15 | this.start_absolute = startAbsolute.unix() * 1000; 16 | this.end_absolute = endAbsolute.unix() * 1000; 17 | this.metrics = metrics; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/beans/request/group_by.ts: -------------------------------------------------------------------------------- 1 | import {GroupByTimeEntry} from "../../directives/group_by/group_by_time_entry"; 2 | 3 | export class GroupBy { 4 | public tags: string[] = []; 5 | public value: string[] = []; 6 | public time: GroupByTimeEntry[] = []; 7 | } 8 | -------------------------------------------------------------------------------- /src/beans/request/metric_query.ts: -------------------------------------------------------------------------------- 1 | export class MetricQuery { 2 | public name: string; 3 | public tags: any; 4 | public limit: number = 0; 5 | public aggregators: any[]; 6 | public group_by: any[]; 7 | 8 | constructor(name: string, tags: any, aggregators: any[], group_by: any[]) { 9 | this.name = name; 10 | this.tags = tags; 11 | this.aggregators = aggregators; 12 | this.group_by = group_by; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/beans/request/metric_tags.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | 3 | export class MetricTags { 4 | public tags: {[key: string]: string[]} = {}; 5 | public size: number; 6 | public initialized: boolean = false; 7 | public combinations: number; 8 | public multiValuedTags: string[]; 9 | 10 | public updateTags(tags) { 11 | this.tags = tags; 12 | this.updateInfo(); 13 | this.initialized = true; 14 | } 15 | 16 | private updateInfo() { 17 | const notEmptyTags = _.pickBy(this.tags, (value) => value.length); 18 | this.combinations = 19 | _.reduce(_.map(notEmptyTags, (values) => values.length), (length1, length2) => length1 * length2); 20 | this.multiValuedTags = _.keys(_.pickBy(notEmptyTags, (tagValues) => tagValues.length > 1)); 21 | this.size = _.keys(this.tags).length; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/beans/request/target.ts: -------------------------------------------------------------------------------- 1 | import {Aggregator} from "../aggregators/aggregator"; 2 | import {GroupBy} from "./group_by"; 3 | 4 | export class KairosDBTarget { 5 | public metricName: string = undefined; 6 | public alias: string = undefined; 7 | public tags: {[key: string]: string[]} = {}; 8 | public groupBy: GroupBy = new GroupBy(); 9 | public aggregators: Aggregator[] = []; 10 | } 11 | -------------------------------------------------------------------------------- /src/controllers/templating_functions_ctrl.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {TemplatingFunction} from "../beans/function"; 3 | import {TemplatingFunctionResolver} from "../utils/templating_function_resolver"; 4 | 5 | export class TemplatingFunctionsCtrl { 6 | private functions: TemplatingFunction[] = []; 7 | private templatingFunctionResolver: TemplatingFunctionResolver; 8 | 9 | constructor(templatingFunctionResolver: TemplatingFunctionResolver) { 10 | this.templatingFunctionResolver = templatingFunctionResolver; 11 | } 12 | 13 | public register(func: TemplatingFunction) { 14 | this.functions.push(func); 15 | } 16 | 17 | public resolve(functionBody: string) { 18 | const matchedFunction = _.find(this.functions, (func) => new RegExp(func.regexp).test(functionBody)); 19 | return this.templatingFunctionResolver.unpackFunction(matchedFunction, functionBody); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/core/config_ctrl.ts: -------------------------------------------------------------------------------- 1 | export class KairosDBConfigCtrl { 2 | public static templateUrl: string = "partials/config.html"; 3 | public current: any; 4 | } 5 | -------------------------------------------------------------------------------- /src/core/metric_names_store.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {PromiseUtils} from "../utils/promise_utils"; 3 | import {KairosDBDatasource} from "./datasource"; 4 | 5 | export class MetricNamesStore { 6 | private initialized: boolean = false; 7 | private datasource: KairosDBDatasource; 8 | private cacheKey: string; 9 | private fetchingPromise: any; 10 | private promiseUtils: PromiseUtils; 11 | private metricNames: string[]; 12 | 13 | constructor(datasource: KairosDBDatasource, promiseUtils: PromiseUtils, datasourceUrl: string) { 14 | this.cacheKey = "KAIROSDB_METRIC_NAMES_" + datasourceUrl; 15 | this.promiseUtils = promiseUtils; 16 | this.datasource = datasource; 17 | } 18 | 19 | public getMetricNames(): Promise { 20 | if (this.cacheInitialized()) { 21 | return this.promiseUtils.resolvedPromise(this.metricNames); 22 | } else if (this.fetchingPromise) { 23 | return this.fetchingPromise; 24 | } else { 25 | return this.fetch(); 26 | } 27 | } 28 | 29 | private cacheInitialized() { 30 | return !_.isUndefined(window[this.cacheKey]); 31 | } 32 | 33 | private fetch(): Promise { 34 | this.fetchingPromise = this.datasource.getMetricNames() 35 | .then((response) => response.data.results) 36 | .then((metricNames) => { 37 | this.metricNames = metricNames; 38 | window[this.cacheKey] = metricNames; 39 | this.initialized = true; 40 | return this.metricNames; 41 | }); 42 | return this.fetchingPromise; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/core/request/sampling_converter.ts: -------------------------------------------------------------------------------- 1 | import kbn from "app/core/utils/kbn"; 2 | import {TimeUnit} from "../../beans/aggregators/utils"; 3 | import {TimeUnitUtils} from "../../utils/time_unit_utils"; 4 | 5 | export class SamplingConverter { 6 | private static MILLISECONDS_STRING = TimeUnitUtils.getString(TimeUnit.MILLISECONDS); 7 | 8 | public convert(value, unit) { 9 | if (unit === SamplingConverter.MILLISECONDS_STRING) { 10 | throw new Error("Value must be integer when using milliseconds"); 11 | } 12 | const shortUnit = TimeUnitUtils.getShortUnit(unit); 13 | return { 14 | interval: this.convertToMiliseconds(parseFloat(value), shortUnit).toString(), 15 | unit: TimeUnitUtils.getString(TimeUnit.MILLISECONDS) 16 | }; 17 | } 18 | 19 | public isApplicable(value): boolean { 20 | return this.isFloat(value); 21 | } 22 | 23 | private isFloat(value): boolean { 24 | return value % 1 !== 0; 25 | } 26 | 27 | private convertToMiliseconds(value: number, shortUnit: string): number { 28 | return Math.round(kbn.intervals_in_seconds[shortUnit] * value * 1000); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/core/request/target_validator.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {KairosDBTarget} from "../../beans/request/target"; 3 | 4 | export class TargetValidator { 5 | public areValidTargets(targets): boolean { 6 | return targets && targets.every((target) => this.isValidTarget(target.query)); 7 | } 8 | 9 | public isValidTarget(target: KairosDBTarget): boolean { 10 | return !_.isNil(target) && !_.isEmpty(target.metricName); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/core/response/response_handler.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {SeriesNameBuilder} from "./series_name_builder"; 3 | 4 | export class KairosDBResponseHandler { 5 | private seriesNameBuilder: SeriesNameBuilder; 6 | 7 | constructor(seriesNameBuilder: SeriesNameBuilder) { 8 | this.seriesNameBuilder = seriesNameBuilder; 9 | } 10 | 11 | public convertToDatapoints(data, aliases: string[]) { 12 | const datapoints = _.zip(aliases, data.queries) 13 | .map((pair) => { 14 | return {alias: pair[0], results: pair[1].results}; 15 | }) 16 | .map((entry) => _.map(entry.results, (result) => { 17 | return { 18 | datapoints: result.values.map((value) => value.reverse()), 19 | target: this.seriesNameBuilder.build(result.name, entry.alias, result.group_by) 20 | }; 21 | })); 22 | 23 | return {data: _.flatten(datapoints)}; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/css/plugin.css: -------------------------------------------------------------------------------- 1 | .group-by-tag-checkbox input + label::before, 2 | .group-by-tag-checkbox input + label::after { 3 | transition: none !important; 4 | background: #292929 none; 5 | } 6 | 7 | .group-by-tag-checkbox { 8 | margin-left: -3px; 9 | } 10 | 11 | .group-by-tag-checkbox input + label::before { 12 | color: #eb6618; 13 | } 14 | 15 | .group-by-tag-checkbox:hover input + label::before { 16 | color: #eb6618; 17 | } 18 | 19 | .group-by-tag-checkbox input + label::after { 20 | color: #5bbf00; 21 | } 22 | 23 | .group-by-tag-checkbox:hover input + label::after { 24 | color: #5bbf00; 25 | } 26 | 27 | .tag-label { 28 | margin-left: 2px; 29 | margin-right: 0; 30 | } 31 | 32 | .tag-switch { 33 | padding-right: 4px; 34 | } -------------------------------------------------------------------------------- /src/directives/aggregator.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {Aggregator} from "../beans/aggregators/aggregator"; 3 | import {AggregatorParameter} from "../beans/aggregators/parameters/aggregator_parameter"; 4 | import "./aggregator_editor"; 5 | 6 | export class AggregatorCtrl { 7 | public value: Aggregator; 8 | public visibleParameters: AggregatorParameter[]; 9 | public isAutoValue: boolean = false; 10 | 11 | constructor() { 12 | this.isAutoValue = !_.isNil(this.value.autoValueSwitch) && this.value.autoValueSwitch.enabled; 13 | this.visibleParameters = this.isAutoValue ? this.getVisibleParameters() : this.value.parameters; 14 | } 15 | 16 | private getVisibleParameters(): AggregatorParameter[] { 17 | const dependentParametersTypes = 18 | this.value.autoValueSwitch.dependentParameters.map((parameter) => parameter.type); 19 | return this.value.parameters.filter((parameter) => !_.includes(dependentParametersTypes, parameter.type)); 20 | } 21 | } 22 | 23 | export function AggregatorDirective() { 24 | return { 25 | bindToController: true, 26 | controller: AggregatorCtrl, 27 | controllerAs: "ctrl", 28 | restrict: "E", 29 | scope: { 30 | onRemove: "&", 31 | value: "=" 32 | }, 33 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/aggregator.html" 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /src/directives/aggregator_editor.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | 3 | function AggregatorEditorLink(scope) { 4 | scope.newAggregator = null; 5 | scope.pickAggregator = (aggregatorName) => { 6 | scope.newAggregator = _.cloneDeep(_.values(_.pickBy( 7 | scope.ctrl.availableAggregators, {name: aggregatorName}))[0]); 8 | }; 9 | 10 | scope.isAutoValue = () => { 11 | return !_.isNil(scope.newAggregator.autoValueSwitch) && scope.newAggregator.autoValueSwitch.enabled; 12 | }; 13 | } 14 | 15 | export function AggregatorEditorDirective() { 16 | return { 17 | link: AggregatorEditorLink, 18 | restrict: "E", 19 | scope: false, 20 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/aggregator.editor.html" 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /src/directives/aggregators.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {Aggregator} from "../beans/aggregators/aggregator"; 3 | import "./aggregator_editor"; 4 | 5 | export class AggregatorsCtrl { 6 | public entries: Aggregator[]; 7 | public availableAggregators: Aggregator[]; 8 | 9 | public add(entry): void { 10 | this.entries.push(entry); 11 | } 12 | 13 | public remove(entry): void { 14 | this.entries = _.without(this.entries, entry); 15 | } 16 | } 17 | 18 | export function AggregatorsDirective() { 19 | return { 20 | bindToController: true, 21 | controller: AggregatorsCtrl, 22 | controllerAs: "ctrl", 23 | restrict: "E", 24 | scope: { 25 | availableAggregators: "=", 26 | entries: "=" 27 | }, 28 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/aggregators.html" 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /src/directives/auto_value_switch.ts: -------------------------------------------------------------------------------- 1 | import {AggregatorParameter} from "../beans/aggregators/parameters/aggregator_parameter"; 2 | export class AutoValueSwitch { 3 | public dependentParameters: AggregatorParameter[]; 4 | public enabled: boolean = false; 5 | 6 | constructor(dependentParameters: AggregatorParameter[]) { 7 | this.dependentParameters = dependentParameters; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/directives/group_by/group_by_tags.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | 3 | export class GroupByTagsCtrl { 4 | public tags: string[]; 5 | public selectedTags: { [key: string]: boolean } = {}; 6 | public inputVisible: boolean; 7 | public allowedValues: string[]; 8 | 9 | constructor() { 10 | this.tags.forEach((tag) => this.selectedTags[tag] = true); 11 | } 12 | 13 | public onChange(): void { 14 | this.tags = _.keys(_.pickBy(this.selectedTags)); 15 | } 16 | 17 | public addCustom(tag: string): void { 18 | if (!_.isEmpty(tag)) { 19 | this.selectedTags[tag] = true; 20 | } 21 | this.inputVisible = !this.inputVisible; 22 | } 23 | } 24 | 25 | export function GroupByTagsDirective() { 26 | return { 27 | bindToController: true, 28 | controller: GroupByTagsCtrl, 29 | controllerAs: "ctrl", 30 | restrict: "E", 31 | scope: { 32 | allowedValues: "=", 33 | tags: "=" 34 | }, 35 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/group.by.tags.html" 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /src/directives/group_by/group_by_time.ts: -------------------------------------------------------------------------------- 1 | import {GroupByTimeEntry} from "group_by_time_entry"; 2 | import _ from "lodash"; 3 | import {EnumValues, TimeUnit} from "../../beans/aggregators/utils"; 4 | 5 | export class GroupByTimeCtrl { 6 | public entries: GroupByTimeEntry[]; 7 | public inputVisible: boolean = false; 8 | public allowedUnitValues: string[] = EnumValues(TimeUnit); 9 | 10 | constructor() { 11 | this.entries = this.entries || []; 12 | } 13 | 14 | public add(entry): void { 15 | if (this.isValidEntry(entry)) { 16 | this.entries.push(entry); 17 | } 18 | this.inputVisible = !this.inputVisible; 19 | } 20 | 21 | public remove(entry): void { 22 | this.entries = _.without(this.entries, entry); 23 | } 24 | 25 | private isValidEntry(entry): boolean { 26 | return !isNaN(entry.interval) && !isNaN(entry.count); 27 | } 28 | } 29 | 30 | export function GroupByTimeDirective() { 31 | return { 32 | bindToController: true, 33 | controller: GroupByTimeCtrl, 34 | controllerAs: "ctrl", 35 | restrict: "E", 36 | scope: { 37 | entries: "=" 38 | }, 39 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/group.by.time.html" 40 | }; 41 | } 42 | -------------------------------------------------------------------------------- /src/directives/group_by/group_by_time_entry.ts: -------------------------------------------------------------------------------- 1 | export class GroupByTimeEntry { 2 | public interval: string = undefined; 3 | public unit: string = undefined; 4 | public count: number = undefined; 5 | 6 | constructor(interval: string, unit: string, count: number) { 7 | this.interval = interval; 8 | this.unit = unit; 9 | this.count = count; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/directives/group_by/group_by_value.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | 3 | export class GroupByValueCtrl { 4 | public entries: string[]; 5 | public inputVisible: boolean; 6 | 7 | public add(value) { 8 | if (value && _.isNumber(parseInt(value, 10))) { 9 | this.entries.push(value); 10 | } 11 | this.inputVisible = !this.inputVisible; 12 | } 13 | 14 | public remove(entry) { 15 | this.entries = _.without(this.entries, entry); 16 | } 17 | } 18 | 19 | export function GroupByValueDirective() { 20 | return { 21 | bindToController: true, 22 | controller: GroupByValueCtrl, 23 | controllerAs: "ctrl", 24 | restrict: "E", 25 | scope: { 26 | entries: "=" 27 | }, 28 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/group.by.value.html" 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /src/directives/tag_input.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {PromiseUtils} from "../utils/promise_utils"; 3 | 4 | const TAG_VALUE_SUGGESTIONS_LIMIT = 20; 5 | 6 | export class TagInputCtrl { 7 | public tagValues: string[]; 8 | private $scope: any; 9 | private promiseUtils: PromiseUtils; 10 | 11 | /** @ngInject **/ 12 | constructor($scope, $q, private uiSegmentSrv) { 13 | this.promiseUtils = new PromiseUtils($q); 14 | this.$scope = $scope; 15 | } 16 | 17 | public getTags(): Promise { 18 | const query = this.$scope.getTagInputValue(); 19 | return this.promiseUtils.resolvedPromise(this.tagValues 20 | .filter((tagValue) => _.includes(tagValue, query)) 21 | .slice(0, TAG_VALUE_SUGGESTIONS_LIMIT) 22 | .map((tagValue) => { 23 | return this.uiSegmentSrv.newSegment(tagValue); 24 | })); 25 | } 26 | } 27 | 28 | export class TagInputLink { 29 | constructor(scope, element) { 30 | scope.getTagInputValue = () => { 31 | return element[0].getElementsByTagName("input")[0].value; 32 | }; 33 | } 34 | } 35 | 36 | export function TagInputDirective() { 37 | return { 38 | bindToController: true, 39 | controller: TagInputCtrl, 40 | controllerAs: "ctrl", 41 | link: TagInputLink, 42 | restrict: "E", 43 | scope: { 44 | onChange: "&", 45 | segment: "=", 46 | tagValues: "=", 47 | }, 48 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/tag.input.html" 49 | }; 50 | } 51 | -------------------------------------------------------------------------------- /src/directives/tags_select.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | 3 | export class TagsSelectCtrl { 4 | public tagValues: string[]; 5 | public selectedValues: string[]; 6 | public segments: any[]; 7 | 8 | /** @ngInject **/ 9 | constructor(private uiSegmentSrv) { 10 | this.selectedValues = this.selectedValues || []; 11 | if (this.tagValues.length > 1) { 12 | this.segments = this.selectedValues 13 | .map((tagValue) => this.uiSegmentSrv.newSegment(tagValue)); 14 | this.segments.push(this.uiSegmentSrv.newPlusButton()); 15 | } 16 | } 17 | 18 | public onChange(): void { 19 | if (!_.isNil(_.last(this.segments).value)) { 20 | this.segments.push(this.uiSegmentSrv.newPlusButton()); 21 | } 22 | this.update(); 23 | } 24 | 25 | public remove(segment): void { 26 | this.segments = _.without(this.segments, segment); 27 | this.update(); 28 | } 29 | 30 | private update(): void { 31 | this.selectedValues = this.segments 32 | .map((tagSegment) => tagSegment.value) 33 | .filter((value) => !_.isNil(value)); 34 | } 35 | } 36 | 37 | export function TagsSelectDirective() { 38 | return { 39 | bindToController: true, 40 | controller: TagsSelectCtrl, 41 | controllerAs: "ctrl", 42 | restrict: "E", 43 | scope: { 44 | selectedValues: "=", 45 | tagName: "=", 46 | tagValues: "=" 47 | }, 48 | templateUrl: "public/plugins/grafana-kairosdb-datasource/partials/tags.select.html" 49 | }; 50 | } 51 | -------------------------------------------------------------------------------- /src/img/kairosdb_logo_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/kairosdb-datasource/4359eeb2f1e7cbc757d18a9f31f862587239908c/src/img/kairosdb_logo_large.png -------------------------------------------------------------------------------- /src/img/kairosdb_logo_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/kairosdb-datasource/4359eeb2f1e7cbc757d18a9f31f862587239908c/src/img/kairosdb_logo_small.png -------------------------------------------------------------------------------- /src/partials/aggregator.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 6 |
7 |
8 | 11 |
12 |
13 | 16 |
17 |
18 | 23 |
24 |
25 |
26 |
27 |
28 | -------------------------------------------------------------------------------- /src/partials/aggregators.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 7 |
8 | 9 |
10 |
11 |
12 |
13 | 14 | 15 |
-------------------------------------------------------------------------------- /src/partials/config.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/partials/group.by.editor.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 | -------------------------------------------------------------------------------- /src/partials/group.by.time.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 6 |
7 |
8 | 14 |
15 |
16 | 19 | 23 | 26 |
27 |
28 | 33 |
34 |
35 |
36 |
37 |
38 | -------------------------------------------------------------------------------- /src/partials/group.by.value.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 6 |
7 | 8 |
9 | 15 | 17 | 22 |
23 |
24 |
25 |
26 |
27 | -------------------------------------------------------------------------------- /src/partials/metric.name.field.html: -------------------------------------------------------------------------------- 1 |
2 | 4 | 5 | 10 | 11 | 14 | 15 | 17 | 18 | 23 | 26 | 27 | 32 |
33 | -------------------------------------------------------------------------------- /src/partials/metric.name.row.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 11 |
12 |
13 | 14 | 16 | 17 |
18 |
19 |
20 |
21 | -------------------------------------------------------------------------------- /src/partials/metric.names.loading.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | 7 |
8 |
9 | 12 |
13 |
14 |
15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /src/partials/query.editor.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/partials/query.options.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | -------------------------------------------------------------------------------- /src/partials/tag.input.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/partials/tags.editor.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 7 |
8 |
9 | 12 | 15 |
16 |
17 | 20 |
21 |
22 |
23 |
24 |
25 | 26 |
27 | -------------------------------------------------------------------------------- /src/partials/tags.select.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 6 |
7 | 8 |
9 | 12 |
13 | 14 |
15 |
16 |
17 |
18 | 19 |
20 |
21 | 24 |
25 | 26 |
27 | 28 |
29 | 30 | 31 | 32 |
33 |
34 | 35 |
36 |
37 |
38 |
39 | -------------------------------------------------------------------------------- /src/utils/promise_utils.ts: -------------------------------------------------------------------------------- 1 | export class PromiseUtils { 2 | private $q: any; 3 | constructor($q) { 4 | this.$q = $q; 5 | } 6 | 7 | public resolvedPromise(value?: any) { 8 | const defer = this.$q.defer(); 9 | defer.resolve(value); 10 | return defer.promise; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/utils/templating_utils.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | 3 | export class TemplatingUtils { 4 | public static MULTI_VALUE_SEPARATOR: string = ","; 5 | private static MULTI_VALUE_REGEX: RegExp = /{.*?}/g; 6 | private static MULTI_VALUE_BOUNDARIES: RegExp = /[{}]/g; 7 | private templateSrv: any; 8 | private scopedVars: any; 9 | 10 | constructor(templateSrv: any, scopedVars: any) { 11 | this.templateSrv = templateSrv; 12 | this.scopedVars = scopedVars; 13 | } 14 | 15 | public replace(expression: string): string[] { 16 | const replacedExpression = this.templateSrv.replace(expression, this.scopedVars); 17 | const matchedMultiValues = replacedExpression.match(TemplatingUtils.MULTI_VALUE_REGEX); 18 | 19 | if (!_.isNil(matchedMultiValues)) { 20 | let replacedValues = [replacedExpression]; 21 | matchedMultiValues.forEach((multiValue) => { 22 | const values = multiValue.replace(TemplatingUtils.MULTI_VALUE_BOUNDARIES, "") 23 | .split(TemplatingUtils.MULTI_VALUE_SEPARATOR); 24 | replacedValues = _.flatMap(values, (value) => { 25 | return replacedValues.map((replacedValue) => { 26 | return replacedValue.replace(multiValue, value); 27 | }); 28 | }); 29 | }); 30 | return replacedValues; 31 | } 32 | return [replacedExpression]; 33 | } 34 | 35 | public replaceAll(expressions: string[]): string[] { 36 | return _.flatten(expressions.map((expression) => this.replace(expression))); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/utils/time_unit_utils.ts: -------------------------------------------------------------------------------- 1 | import _ from "lodash"; 2 | import {EnumValues, TimeUnit} from "../beans/aggregators/utils"; 3 | 4 | export class TimeUnitUtils { 5 | public static extractUnit(interval: string): string { 6 | const timeValue: string = this.extractValue(interval); 7 | return interval.replace(timeValue, ""); 8 | } 9 | 10 | public static extractValue(interval: string): string { 11 | return parseFloat(interval).toString(); 12 | } 13 | 14 | public static convertTimeUnit(unit: string): string { 15 | return TimeUnitUtils.SHORT_UNITS[unit] || TimeUnitUtils.LONG_UNITS[unit]; 16 | } 17 | 18 | public static getShortUnit(unit: string): string { 19 | return _.invert(TimeUnitUtils.SHORT_UNITS)[unit]; 20 | } 21 | 22 | public static getString(unit: TimeUnit): string { 23 | return TimeUnit[unit]; 24 | } 25 | 26 | private static TIME_UNIT_STRINGS = _.values(EnumValues(TimeUnit)); 27 | private static SHORT_UNITS = _.zipObject( 28 | ["ms", "s", "m", "h", "d", "w", "M", "y"], 29 | TimeUnitUtils.TIME_UNIT_STRINGS); 30 | private static LONG_UNITS = _.zipObject( 31 | ["millisecond", "second", "minute", "hour", "day", "week", "month", "year"], 32 | TimeUnitUtils.TIME_UNIT_STRINGS); 33 | } 34 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSeverity": "error", 3 | "extends": [ 4 | "tslint:recommended" 5 | ], 6 | "jsRules": { 7 | }, 8 | "rules": { 9 | "trailing-comma": false, 10 | "one-variable-per-declaration": false, 11 | "no-reference": false, 12 | "variable-name": [ 13 | false, 14 | "allow-snake-case" 15 | ], 16 | "jsdoc-format": false, 17 | "interface-name": false, 18 | "max-classes-per-file": false, 19 | "max-line-length": [true, 140], 20 | "object-literal-sort-keys": false 21 | }, 22 | "rulesDirectory": [] 23 | } 24 | --------------------------------------------------------------------------------