Skip to content

Commit

Permalink
feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
robertMileaNi committed Aug 20, 2024
1 parent 1b41f1f commit 76ca906
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 12 deletions.
3 changes: 1 addition & 2 deletions src/datasources/asset/AssetDataSource.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import {
import { BackendSrv, getBackendSrv, getTemplateSrv, TemplateSrv } from '@grafana/runtime';
import { DataSourceBase } from 'core/DataSourceBase';
import {
AssetCalibrationForecastGroupByType,
AssetCalibrationForecastQuery,
AssetFilterProperties,
AssetMetadataQuery,
Expand Down Expand Up @@ -36,7 +35,7 @@ export class AssetDataSource extends DataSourceBase<AssetQuery> {
queryKind: AssetQueryType.Metadata,
workspace: '',
minionIds: [],
groupBy: [AssetCalibrationForecastGroupByType.Month]
groupBy: []
};

async runQuery(query: AssetQuery, options: DataQueryRequest): Promise<DataFrameDTO> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { screen, waitFor, waitForElementToBeRemoved } from '@testing-library/react';
import { screen, waitFor } from '@testing-library/react';
import { setupRenderer } from '../../../test/fixtures';
import { SystemMetadata } from '../../system/types';
import { AssetDataSource } from '../AssetDataSource';
import { AssetQueryEditor } from './AssetQueryEditor';
import { AssetCalibrationForecastGroupByType, AssetCalibrationForecastQuery, AssetMetadataQuery, AssetQuery, AssetQueryType } from '../types';
import { AssetCalibrationForecastGroupByType, AssetCalibrationForecastQuery, AssetMetadataQuery, AssetQueryType } from '../types';
import { select } from 'react-select-event';

const fakeSystems: SystemMetadata[] = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ export function QueryCalibrationForecastEditor({ query, handleQueryChange, datas

const tooltips = {
calibrationForecast: {
groupBy: `Group the calibration forecast by day, week, or month.`,
timeSpan: `The number of days to forecast calibration.`,
groupBy: `Group the calibration forecast by day, week, or month. Only one time based grouping is allowed.`
},
};
8 changes: 7 additions & 1 deletion src/datasources/asset/components/AssetQueryEditor.test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { AssetDataSource } from "../AssetDataSource"
import { setupRenderer } from "test/fixtures"
import { AssetCalibrationForecastGroupByType, AssetCalibrationForecastQuery, AssetMetadataQuery, AssetQuery, AssetQueryType } from "../types"
import { AssetCalibrationForecastGroupByType, AssetCalibrationForecastQuery, AssetMetadataQuery, AssetQuery, AssetQueryLabel, AssetQueryType } from "../types"
import { screen, waitFor, waitForElementToBeRemoved } from "@testing-library/react"
import { AssetQueryEditor } from "./AssetQueryEditor"
import { select } from "react-select-event";
Expand Down Expand Up @@ -43,6 +43,9 @@ it('renders with initial query and updates when user makes changes', async () =>
const [onChange] = render({ queryKind: AssetQueryType.Metadata, minionIds: ['1'], workspace: '2' } as AssetMetadataQuery);
await workspacesLoaded();

// User selects metadata
expect(screen.getByRole('radio', { name: AssetQueryType.Metadata })).toBeChecked();

// Renders saved query
expect(screen.getByText('Other workspace')).toBeInTheDocument();
expect(screen.getByText('1')).toBeInTheDocument();
Expand Down Expand Up @@ -75,6 +78,9 @@ it('renders with initial query and updates when user makes changes', async () =>
it('renders with query type calibration forecast and updates when user makes changes', async () => {
const [onChange] = render({ queryKind: AssetQueryType.CalibrationForecast, groupBy: [AssetCalibrationForecastGroupByType.Month] } as AssetCalibrationForecastQuery);

// User selects calibration forecast
expect(screen.getByRole('radio', { name: AssetQueryLabel.CalibrationForecast })).toBeChecked();

// User selects group by
await select(screen.getAllByRole('combobox')[0], AssetCalibrationForecastGroupByType.Day , { container: document.body });
await waitFor(() => {
Expand Down
19 changes: 14 additions & 5 deletions src/datasources/asset/components/AssetQueryEditor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from 'react';
import { QueryEditorProps } from '@grafana/data';
import { InlineField } from 'core/components/InlineField';
import { AssetDataSource } from '../AssetDataSource';
import { AssetCalibrationForecastQuery, AssetMetadataQuery, AssetQuery, AssetQueryType } from '../types';
import { AssetCalibrationForecastQuery, AssetMetadataQuery, AssetQuery, AssetQueryLabel, AssetQueryType } from '../types';
import { RadioButtonGroup } from '@grafana/ui';

import _ from 'lodash';
Expand All @@ -27,18 +27,27 @@ export function AssetQueryEditor({ query, onChange, onRunQuery, datasource }: Pr

return (
<div style={{ position: 'relative' }}>
<InlineField label="Query type" labelWidth={22}>
<InlineField label="Query type" labelWidth={22} tooltip={tooltips.queryType}>
<RadioButtonGroup options={queryTypeOptions} onChange={handleQueryTypeChange} value={query.queryKind} />
</InlineField>
{query.queryKind === AssetQueryType.CalibrationForecast &&
QueryCalibrationForecastEditor({ query: query as AssetCalibrationForecastQuery, handleQueryChange, datasource })}
QueryCalibrationForecastEditor({
query: query as AssetCalibrationForecastQuery,
handleQueryChange,
datasource,
})}
{query.queryKind === AssetQueryType.Metadata &&
QueryMetadataEditor({ query: query as AssetMetadataQuery, handleQueryChange, datasource })}
</div>
);
}

const queryTypeOptions = [
{ label: AssetQueryType.Metadata, value: AssetQueryType.Metadata },
{ label: 'Calibration forecast', value: AssetQueryType.CalibrationForecast },
{ label: AssetQueryLabel.Metadata, value: AssetQueryType.Metadata },
{ label: AssetQueryLabel.CalibrationForecast, value: AssetQueryType.CalibrationForecast },
];

const tooltips = {
queryType: `Metadata allows you to visualize the properties of one or more assets.
Calibration forecast allows you visualize the upcoming asset calibrations in the configured timeframe.`,
};
5 changes: 5 additions & 0 deletions src/datasources/asset/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ export enum AssetQueryType {
CalibrationForecast = "Calibration Forecast",
}

export enum AssetQueryLabel {
Metadata = "Metadata",
CalibrationForecast = "Calibration Forecast",
}

export enum AssetCalibrationForecastGroupByType {
Day = "Day",
Week = "Week",
Expand Down

0 comments on commit 76ca906

Please sign in to comment.