You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

56 lines
1.6 KiB

import React, { PureComponent } from 'react';
import { connect, ConnectedProps } from 'react-redux';
import { AdHocVariableFilter, AdHocVariableModel } from 'app/features/variables/types';
import { VariablePickerProps } from '../../pickers/types';
import { addFilter, changeFilter, removeFilter } from '../actions';
import { AdHocFilter } from './AdHocFilter';
const mapDispatchToProps = {
addFilter,
removeFilter,
changeFilter,
};
const connector = connect(null, mapDispatchToProps);
interface OwnProps extends VariablePickerProps<AdHocVariableModel> {}
type Props = OwnProps & ConnectedProps<typeof connector>;
/**
* Thin wrapper over AdHocFilter to add redux actions and change the props so it can be used for ad hoc variable
* control.
*/
export class AdHocPickerUnconnected extends PureComponent<Props> {
addFilter = (filter: AdHocVariableFilter) => {
this.props.addFilter(this.props.variable.id, filter);
};
removeFilter = (index: number) => {
this.props.removeFilter(this.props.variable.id, index);
};
changeFilter = (index: number, filter: AdHocVariableFilter) => {
this.props.changeFilter(this.props.variable.id, {
index,
filter,
});
};
render() {
const { filters, datasource } = this.props.variable;
return (
<AdHocFilter
datasource={datasource}
filters={filters}
addFilter={this.addFilter}
removeFilter={this.removeFilter}
changeFilter={this.changeFilter}
/>
);
}
}
export const AdHocPicker = connector(AdHocPickerUnconnected);
AdHocPicker.displayName = 'AdHocPicker';