文件操作 - PromSettings.tsx
返回文件管理
返回主菜单
删除本文件
文件: /usr/share/grafana/public/app/plugins/datasource/prometheus/configuration/PromSettings.tsx
编辑文件内容
import React, { SyntheticEvent } from 'react'; import { EventsWithValidation, InlineFormLabel, regexValidation, LegacyForms } from '@grafana/ui'; const { Select, Input, FormField, Switch } = LegacyForms; import { SelectableValue, onUpdateDatasourceJsonDataOptionChecked, DataSourcePluginOptionsEditorProps, } from '@grafana/data'; import { PromOptions } from '../types'; const httpOptions = [ { value: 'GET', label: 'GET' }, { value: 'POST', label: 'POST' }, ]; type Props = Pick<DataSourcePluginOptionsEditorProps<PromOptions>, 'options' | 'onOptionsChange'>; export const PromSettings = (props: Props) => { const { options, onOptionsChange } = props; return ( <> <div className="gf-form-group"> <div className="gf-form-inline"> <div className="gf-form"> <FormField label="Scrape interval" labelWidth={13} inputEl={ <Input className="width-6" value={options.jsonData.timeInterval} spellCheck={false} placeholder="15s" onChange={onChangeHandler('timeInterval', options, onOptionsChange)} validationEvents={promSettingsValidationEvents} /> } tooltip="Set this to the typical scrape and evaluation interval configured in Prometheus. Defaults to 15s." /> </div> </div> <div className="gf-form-inline"> <div className="gf-form"> <FormField label="Query timeout" labelWidth={13} inputEl={ <Input className="width-6" value={options.jsonData.queryTimeout} onChange={onChangeHandler('queryTimeout', options, onOptionsChange)} spellCheck={false} placeholder="60s" validationEvents={promSettingsValidationEvents} /> } tooltip="Set the Prometheus query timeout." /> </div> </div> <div className="gf-form"> <InlineFormLabel width={13} tooltip="Specify the HTTP Method to query Prometheus. (POST is only available in Prometheus >= v2.1.0)" > HTTP Method </InlineFormLabel> <Select options={httpOptions} value={httpOptions.find(o => o.value === options.jsonData.httpMethod)} onChange={onChangeHandler('httpMethod', options, onOptionsChange)} width={7} /> </div> </div> <h3 className="page-heading">Misc</h3> <div className="gf-form-group"> <div className="gf-form"> <Switch checked={options.jsonData.disableMetricsLookup} label="Disable metrics lookup" labelClass="width-14" onChange={onUpdateDatasourceJsonDataOptionChecked(props, 'disableMetricsLookup')} tooltip="Checking this option will disable the metrics chooser and metric/label support in the query field's autocomplete. This helps if you have performance issues with bigger Prometheus instances." /> </div> <div className="gf-form-inline"> <div className="gf-form max-width-30"> <FormField label="Custom query parameters" labelWidth={14} tooltip="Add Custom parameters to Prometheus or Thanos queries." inputEl={ <Input className="width-25" value={options.jsonData.customQueryParameters} onChange={onChangeHandler('customQueryParameters', options, onOptionsChange)} spellCheck={false} placeholder="Example: max_source_resolution=5m&timeout=10" /> } /> </div> </div> </div> </> ); }; export const promSettingsValidationEvents = { [EventsWithValidation.onBlur]: [ regexValidation( /^$|^\d+(ms|[Mwdhmsy])$/, 'Value is not valid, you can use number with time unit specifier: y, M, w, d, h, m, s' ), ], }; export const getValueFromEventItem = (eventItem: SyntheticEvent<HTMLInputElement> | SelectableValue<string>) => { if (!eventItem) { return ''; } if (eventItem.hasOwnProperty('currentTarget')) { return eventItem.currentTarget.value; } return (eventItem as SelectableValue<string>).value; }; const onChangeHandler = ( key: keyof PromOptions, options: Props['options'], onOptionsChange: Props['onOptionsChange'] ) => (eventItem: SyntheticEvent<HTMLInputElement> | SelectableValue<string>) => { onOptionsChange({ ...options, jsonData: { ...options.jsonData, [key]: getValueFromEventItem(eventItem), }, }); };
修改文件时间
将文件时间修改为当前时间的前一年
删除文件