From 3bb4644aa981ccffa718f9f7dc9986712c16ae58 Mon Sep 17 00:00:00 2001 From: Andrew Watkins Date: Wed, 30 May 2018 10:53:37 -0700 Subject: [PATCH] Enable filtering with TagValueListItem Co-authored-by: Andrew Watkins Co-authored-by: Chris Henn --- ui/src/ifql/components/TagValueListItem.tsx | 48 +++++++++++++++++---- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/ui/src/ifql/components/TagValueListItem.tsx b/ui/src/ifql/components/TagValueListItem.tsx index bcd305f37b..b2ed5a4ac1 100644 --- a/ui/src/ifql/components/TagValueListItem.tsx +++ b/ui/src/ifql/components/TagValueListItem.tsx @@ -1,4 +1,4 @@ -import React, {PureComponent, MouseEvent} from 'react' +import React, {PureComponent, MouseEvent, ChangeEvent} from 'react' import {tagKeys as fetchTagKeys} from 'src/shared/apis/v2/metaQueries' import parseValuesColumn from 'src/shared/parsing/v2/tags' @@ -18,6 +18,7 @@ interface State { isOpen: boolean tags: string[] loading: RemoteDataState + searchTerm: string } class TagValueListItem extends PureComponent { @@ -27,12 +28,13 @@ class TagValueListItem extends PureComponent { isOpen: false, tags: [], loading: RemoteDataState.NotStarted, + searchTerm: '', } } public render() { const {db, service, value} = this.props - const {tags} = this.state + const {searchTerm} = this.state return (
@@ -45,12 +47,26 @@ class TagValueListItem extends PureComponent { <> {this.isLoading && } {!this.isLoading && ( - + <> +
+ +
+ + )} )} @@ -68,6 +84,12 @@ class TagValueListItem extends PureComponent { return [...filter, {key: tag, value}] } + private get tags(): string[] { + const {tags, searchTerm} = this.state + const term = searchTerm.toLocaleLowerCase() + return tags.filter(t => t.toLocaleLowerCase().includes(term)) + } + private async getTags() { const {db, service} = this.props @@ -89,6 +111,10 @@ class TagValueListItem extends PureComponent { return `ifql-schema-tree ifql-tree-node ${openClass}` } + private handleInputClick = (e: MouseEvent) => { + e.stopPropagation() + } + private handleClick = (e: MouseEvent) => { e.stopPropagation() @@ -99,6 +125,12 @@ class TagValueListItem extends PureComponent { this.setState({isOpen: !this.state.isOpen}) } + private onSearch = (e: ChangeEvent) => { + this.setState({ + searchTerm: e.target.value, + }) + } + private get isFetchable(): boolean { const {isOpen, loading} = this.state