| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- import _ from 'lodash';
- import { QueryCtrl } from 'app/plugins/sdk';
- import { defaultQuery } from './runStreams';
- import { getBackendSrv } from 'app/core/services/backend_srv';
- import { dateTime } from '@grafana/data';
- export const defaultPulse: any = {
- timeStep: 60,
- onCount: 3,
- onValue: 2,
- offCount: 3,
- offValue: 1,
- };
- export const defaultCSVWave: any = {
- timeStep: 60,
- valuesCSV: '0,0,2,2,1,1',
- };
- const showLabelsFor = ['random_walk', 'predictable_pulse', 'predictable_csv_wave'];
- export class TestDataQueryCtrl extends QueryCtrl {
- static templateUrl = 'partials/query.editor.html';
- scenarioList: any;
- scenario: any;
- newPointValue: number;
- newPointTime: any;
- selectedPoint: any;
- showLabels = false;
- /** @ngInject */
- constructor($scope: any, $injector: any) {
- super($scope, $injector);
- this.target.scenarioId = this.target.scenarioId || 'random_walk';
- this.scenarioList = [];
- this.newPointTime = dateTime();
- this.selectedPoint = { text: 'Select point', value: null };
- this.showLabels = showLabelsFor.includes(this.target.scenarioId);
- }
- getPoints() {
- return _.map(this.target.points, (point, index) => {
- return {
- text: dateTime(point[1]).format('MMMM Do YYYY, H:mm:ss') + ' : ' + point[0],
- value: index,
- };
- });
- }
- pointSelected(option: any) {
- this.selectedPoint = option;
- }
- deletePoint() {
- this.target.points.splice(this.selectedPoint.value, 1);
- this.selectedPoint = { text: 'Select point', value: null };
- this.refresh();
- }
- addPoint() {
- this.target.points = this.target.points || [];
- this.target.points.push([this.newPointValue, this.newPointTime.valueOf()]);
- this.target.points = _.sortBy(this.target.points, p => p[1]);
- this.refresh();
- }
- $onInit() {
- return getBackendSrv()
- .get('/api/tsdb/testdata/scenarios')
- .then((res: any) => {
- this.scenarioList = res;
- this.scenario = _.find(this.scenarioList, { id: this.target.scenarioId });
- });
- }
- scenarioChanged() {
- this.scenario = _.find(this.scenarioList, { id: this.target.scenarioId });
- this.target.stringInput = this.scenario.stringInput;
- this.showLabels = showLabelsFor.includes(this.target.scenarioId);
- if (this.target.scenarioId === 'manual_entry') {
- this.target.points = this.target.points || [];
- } else {
- delete this.target.points;
- }
- if (this.target.scenarioId === 'streaming_client') {
- this.target.stream = _.defaults(this.target.stream || {}, defaultQuery);
- } else {
- delete this.target.stream;
- }
- if (this.target.scenarioId === 'predictable_pulse') {
- this.target.pulseWave = _.defaults(this.target.pulseWave || {}, defaultPulse);
- } else {
- delete this.target.pulseWave;
- }
- if (this.target.scenarioId === 'predictable_csv_wave') {
- this.target.csvWave = _.defaults(this.target.csvWave || {}, defaultCSVWave);
- } else {
- delete this.target.csvWave;
- }
- this.refresh();
- }
- streamChanged() {
- this.refresh();
- }
- }
|