From eda26f27565ff9fc408b1aff825cd1349a11613c Mon Sep 17 00:00:00 2001 From: polarising-java <57811604+polarising-java@users.noreply.github.com> Date: Thu, 19 Nov 2020 19:52:59 +0000 Subject: [PATCH] fix(ui): incomplete list of topics on select (#516) close #513 --- client/src/containers/Tail/Tail.jsx | 61 ++++++++++----------- client/src/containers/Topic/Topic/Topic.jsx | 11 +--- 2 files changed, 31 insertions(+), 41 deletions(-) diff --git a/client/src/containers/Tail/Tail.jsx b/client/src/containers/Tail/Tail.jsx index 02a76be8d..cc3871774 100644 --- a/client/src/containers/Tail/Tail.jsx +++ b/client/src/containers/Tail/Tail.jsx @@ -3,7 +3,7 @@ import Dropdown from 'react-bootstrap/Dropdown'; import _ from 'lodash'; import Input from '../../components/Form/Input'; import Header from '../Header'; -import { uriLiveTail, uriTopics } from '../../utils/endpoints'; +import {uriLiveTail, uriTopicsName} from '../../utils/endpoints'; import Table from '../../components/Table'; import AceEditor from 'react-ace'; import 'ace-builds/webpack-resolver'; @@ -35,33 +35,31 @@ class Tail extends Root { componentDidMount = async () => { const { clusterId } = this.props.match.params; - const { state } = this.props.location; + const query = new URLSearchParams(this.props.location.search); - let data = await this.getApi(uriTopics(clusterId, '', 'ALL', '')); + let data = await this.getApi(uriTopicsName(clusterId)); data = data.data; let topics = []; - if (state && state.topicId && state.topicId.length > 0) { - topics = [{ name: state.topicId }]; + if (query && query.get('topicId')) { + topics = [ query.get('topicId') ]; } if (data) { - if (data.results) { - this.setState({ topics: data.results, selectedTopics: topics }, () => { - if (state && state.topicId && state.topicId.length > 0) { - this.setState({ selectedStatus: STATUS.STARTED }); - this.startEventSource(); - } - }); - } else { - this.setState({ topics: [], selectedTopics: topics }, () => { - if (state && state.topicId && state.topicId.length > 0) { - this.setState({ selectedStatus: STATUS.STARTED }); - this.startEventSource(); - } - }); - } + this.setState({ topics: data, selectedTopics: topics }, () => { + if (query && query.get('topicId')) { + this.setState({ selectedStatus: STATUS.STARTED }); + this.startEventSource(); + } + }); + } else { + this.setState({ topics: [], selectedTopics: topics }, () => { + if (query && query.get('topicId')) { + this.setState({ selectedStatus: STATUS.STARTED }); + this.startEventSource(); + } + }); } - }; + } componentWillUnmount = () => { super.componentWillUnmount(); @@ -71,11 +69,8 @@ class Tail extends Root { startEventSource = () => { const { clusterId } = this.props.match.params; const { search, selectedTopics, maxRecords } = this.state; - let topicsToCall = selectedTopics.map(topic => { - return topic.name; - }); this.eventSource = new EventSource( - uriLiveTail(clusterId, search, topicsToCall, JSON.stringify(maxRecords)) + uriLiveTail(clusterId, search, selectedTopics, JSON.stringify(maxRecords)) ); let self = this; this.eventSource.addEventListener('tailBody', function(e) { @@ -112,11 +107,11 @@ class Tail extends Root { let selectedTopics = this.state.selectedTopics; if ( selectedTopics.find(el => { - return el.name === topic.name; + return el === topic; }) ) { let updatedSelected = _.remove(selectedTopics, el => { - return el.name !== topic.name; + return el !== topic; }); this.setState({ selectedTopics: updatedSelected @@ -140,14 +135,14 @@ class Tail extends Root { {topics .filter(topic => { if (dropdownSearch.length > 0) { - return topic.name.includes(dropdownSearch); + return topic.includes(dropdownSearch); } return topic; }) .map((topic, index) => { - let selected = selectedTopics.find(selected => selected.name === topic.name); + let selected = selectedTopics.find(selected => selected === topic); return ( -