1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/didiopensource-KnowStreaming

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
brokers-information.tsx 4.6 КБ
Копировать Редактировать Исходные данные Просмотреть построчно История
zengqiao Отправлено 5 лет назад c6e4b60
import * as React from 'react';
import './index.less';
import { topic, ITopicBroker, IBrokerInfo } from 'store/topic';
import { Table, Tooltip } from 'component/antd';
import Url from 'lib/url-parser';
import { SearchAndFilterContainer } from 'container/search-filter';
import { observer } from 'mobx-react';
import { pagination } from 'constants/table';
@observer
export class BrokersInformation extends SearchAndFilterContainer {
public clusterId: number;
public topicName: string;
public from: string;
public isPhysical: boolean;
public state = {
searchKey: '',
};
public brokerColumns = [{
title: 'BrokerID',
key: 'brokerId',
dataIndex: 'brokerId',
width: '10%',
sorter: (a: ITopicBroker, b: ITopicBroker) => b.brokerId - a.brokerId,
render: (t: string, record: ITopicBroker) => {
return ( // alive true==可点击,false==不可点击
<>
{record.alive ?
<a href={`${this.urlPrefix}/admin/broker-detail?clusterId=${record.clusterId}&brokerId=${t}`}>{t}</a>
: <a style={{ cursor: 'not-allowed', color: '#999' }}>{t}</a>}
</>
);
},
}, {
title: 'Host',
key: 'host',
dataIndex: 'host',
width: '20%',
render: (text: string) => <Tooltip placement="bottomLeft" title={text}>{text}</Tooltip>,
}, {
title: 'Leader个数',
key: 'leaderPartitionIdListLength',
dataIndex: 'leaderPartitionIdList',
width: '10%',
sorter: (a: ITopicBroker, b: ITopicBroker) => b.leaderPartitionIdList.length - a.leaderPartitionIdList.length,
render: (t: []) => t.length,
}, {
title: '分区LeaderID',
key: 'leaderPartitionIdList',
dataIndex: 'leaderPartitionIdList',
width: '25%',
onCell: () => ({
style: {
maxWidth: 180,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
render: (t: []) => {
return (
<Tooltip placement="bottomLeft" title={t.join('')}>
{t.map(i => <span key={i} className="p-params">{i}</span>)}
</Tooltip>
);
},
}, {
title: '分区个数',
key: 'partitionNum',
dataIndex: 'partitionNum',
width: '10%',
sorter: (a: ITopicBroker, b: ITopicBroker) => b.partitionNum - a.partitionNum,
}, {
title: '分区ID',
key: 'partitionIdList',
dataIndex: 'partitionIdList',
width: '25%',
onCell: () => ({
style: {
maxWidth: 180,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
render: (t: []) => {
return (
<Tooltip placement="bottomLeft" title={t.join('')}>
{t.map(i => <span key={i} className="p-params">{i}</span>)}
</Tooltip>
);
},
}];
constructor(props: any) {
super(props);
const url = Url();
this.clusterId = Number(url.search.clusterId);
this.topicName = url.search.topic;
this.from = decodeURIComponent(url.search.from);
this.isPhysical = this.from.includes('expert');
}
public getMoreDetail = (record: ITopicBroker) => {
return (
<div className="p-description">
<p><span>BrokerID: </span>{record.brokerId}</p>
<p><span>Host:</span>{record.host}</p>
<p><span>LeaderID: </span>{record.leaderPartitionIdList.join(',')}(共{record.leaderPartitionIdList.length}个)</p>
<p><span>分区ID:</span>{record.partitionIdList.join(',')}(共{record.partitionIdList.length}个)</p>
</div>
);
}
public getData<T extends IBrokerInfo>(origin: T[]) {
let data: T[] = origin;
let { searchKey } = this.state;
searchKey = (searchKey + '').trim().toLowerCase();
data = searchKey ? origin.filter((item: IBrokerInfo) =>
(item.host !== undefined && item.host !== null) && item.host.toLowerCase().includes(searchKey as string),
) : origin ;
return data;
}
public renderMore() {
const { searchKey } = this.state;
return (
<>
<div className="k-row">
<ul className="k-tab">
<li>Broker信息</li>
{this.renderSearch('', '请输入Host')}
</ul>
<div style={searchKey ? { minHeight: 370 } : null}>
<Table
columns={this.brokerColumns}
dataSource={this.getData(topic.brokerInfo)}
rowKey="key"
pagination={pagination}
/>
</div>
</div>
</>
);
}
public componentDidMount() {
topic.getBrokerInfo(this.clusterId, this.topicName);
}
public render() {
return (
<>
{this.renderMore()}
</>
);
}
}

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/didiopensource-KnowStreaming.git
git@gitlife.ru:oschina-mirror/didiopensource-KnowStreaming.git
oschina-mirror
didiopensource-KnowStreaming
didiopensource-KnowStreaming
v2.1.0