[UI] Add TopicDetails interface

This commit is contained in:
Oleg Shuralev 2020-01-08 15:41:46 +03:00
parent ff6b28487a
commit dbe497f0f2
No known key found for this signature in database
GPG key ID: 0459DF80E1A2FD1B
5 changed files with 23 additions and 11 deletions

View file

@ -1,10 +1,10 @@
import React from 'react';
import { ClusterId, Topic } from 'types';
import { ClusterId, Topic, TopicDetails } from 'types';
import MetricsWrapper from 'components/common/Dashboard/MetricsWrapper';
import Indicator from 'components/common/Dashboard/Indicator';
import Breadcrumb from 'components/common/Breadcrumb/Breadcrumb';
interface Props extends Topic {
interface Props extends Topic, TopicDetails {
clusterId: ClusterId;
}

View file

@ -1,11 +1,11 @@
import React from 'react';
import { Topic } from 'types';
import { Topic, TopicDetails } from 'types';
import ListItem from './ListItem';
import Breadcrumb from 'components/common/Breadcrumb/Breadcrumb';
interface Props {
topics: Topic[];
externalTopics: Topic[];
topics: (Topic & TopicDetails)[];
externalTopics: (Topic & TopicDetails)[];
}
const List: React.FC<Props> = ({

View file

@ -1,9 +1,8 @@
import React from 'react';
import { NavLink } from 'react-router-dom';
import { Topic } from 'types';
import { Topic, TopicDetails } from 'types';
const ListItem: React.FC<Topic> = ({
const ListItem: React.FC<Topic & TopicDetails> = ({
name,
partitions,
}) => {

View file

@ -12,12 +12,15 @@ const reducer = (state = initialState, action: Action): TopicsState => {
return action.payload.reduce(
(memo, topic) => {
const { name } = topic;
memo.byName[name] = topic;
memo.byName[name] = {
...memo.byName[name],
...topic,
};
memo.allNames.push(name);
return memo;
},
initialState,
state,
);
default:
return state;

View file

@ -15,6 +15,16 @@ export interface TopicPartition {
replicas: TopicReplica[];
}
export interface TopicDetails {
partitionCount?: number;
replicationFactor?: number;
replicas?: number;
segmentSize?: number;
inSyncReplicas?: number;
segmentCount?: number;
underReplicatedPartitions?: number;
}
export interface Topic {
name: TopicName;
internal: boolean;
@ -22,6 +32,6 @@ export interface Topic {
}
export interface TopicsState {
byName: { [topicName: string]: Topic },
byName: { [topicName: string]: Topic & TopicDetails },
allNames: TopicName[],
}