Files
grafana/public/app/plugins/datasource/stackdriver/components/AlignmentPeriods.tsx

57 lines
1.7 KiB
TypeScript
Raw Normal View History

import React, { FC } from 'react';
2018-12-20 13:36:10 +01:00
import _ from 'lodash';
import kbn from 'app/core/utils/kbn';
2019-01-02 15:07:38 +01:00
import { MetricSelect } from 'app/core/components/Select/MetricSelect';
import { alignmentPeriods, alignOptions } from '../constants';
import { TemplateSrv } from 'app/features/templating/template_srv';
2018-12-20 13:36:10 +01:00
export interface Props {
onChange: (alignmentPeriod: any) => void;
templateSrv: TemplateSrv;
2018-12-20 13:36:10 +01:00
alignmentPeriod: string;
perSeriesAligner: string;
usedAlignmentPeriod: string;
2018-12-20 13:36:10 +01:00
}
export const AlignmentPeriods: FC<Props> = ({
alignmentPeriod,
templateSrv,
onChange,
perSeriesAligner,
usedAlignmentPeriod,
}) => {
const alignment = alignOptions.find(ap => ap.value === templateSrv.replace(perSeriesAligner));
const formatAlignmentText = `${kbn.secondsToHms(usedAlignmentPeriod)} interval (${alignment ? alignment.text : ''})`;
2018-12-20 13:36:10 +01:00
return (
2019-01-08 13:00:31 +01:00
<>
2018-12-20 13:36:10 +01:00
<div className="gf-form-inline">
<div className="gf-form">
<label className="gf-form-label query-keyword width-9">Alignment Period</label>
2019-01-02 15:07:38 +01:00
<MetricSelect
onChange={onChange}
2019-01-02 15:07:38 +01:00
value={alignmentPeriod}
variables={templateSrv.variables}
options={[
{
label: 'Alignment options',
expanded: true,
options: alignmentPeriods.map(ap => ({
...ap,
label: ap.text,
})),
},
]}
2018-12-20 13:36:10 +01:00
placeholder="Select Alignment"
className="width-15"
/>
</div>
2019-01-08 16:08:09 +01:00
<div className="gf-form gf-form--grow">
{usedAlignmentPeriod && <label className="gf-form-label gf-form-label--grow">{formatAlignmentText}</label>}
2019-01-08 16:08:09 +01:00
</div>
2018-12-20 13:36:10 +01:00
</div>
2019-01-08 13:00:31 +01:00
</>
2018-12-20 13:36:10 +01:00
);
};