Full rework of the query log Squashed commit of the following: commit e8a72eb223551f17e637136713dae03accf8ab9e Author: Andrey Meshkov <am@adguard.com> Date: Thu Jun 18 00:31:53 2020 +0300 fix race in whois test commit 801d28197f888fa21f83c9a0b49e3c9472c08513 Merge: 9d9787fdb1c951fbAuthor: Andrey Meshkov <am@adguard.com> Date: Thu Jun 18 00:28:13 2020 +0300 Merge branch 'master' into feature/1421 commit 9d9787fd79b17f76c7baed52c12ac462fd00a5e4 Merge: 4ce337ca 08e238ab Author: Andrey Meshkov <am@adguard.com> Date: Thu Jun 18 00:27:32 2020 +0300 Merge commit 4ce337ca7aec163edf87a038bb25fb44e64f8613 Author: Andrey Meshkov <am@adguard.com> Date: Thu Jun 18 00:22:49 2020 +0300 -(home): fix whois test commit 08e238ab0e723b1e354f58245e9a8d5017b392c9 Author: ArtemBaskal <a.baskal@adguard.com> Date: Thu Jun 18 00:13:41 2020 +0300 Add comments commit 5f108065952bcc25dce1c2eee3f9401d2641a6e9 Author: ArtemBaskal <a.baskal@adguard.com> Date: Wed Jun 17 23:47:50 2020 +0300 Make tooltip position absolute for touch commit 4c30a583165e5d007d4b01b657de8751a7bd8c7b Author: ArtemBaskal <a.baskal@adguard.com> Date: Wed Jun 17 20:39:44 2020 +0300 Prevent scroll hide for touch devices commit 62da97931f5921613762614717c62c77ddb6b8db Author: ArtemBaskal <a.baskal@adguard.com> Date: Wed Jun 17 20:06:24 2020 +0300 Review changes: ipad tooltip commit 12dddcca8caca51c157b5d25dfa3ca03ba7f0c06 Author: ArtemBaskal <a.baskal@adguard.com> Date: Wed Jun 17 16:59:16 2020 +0300 Add close tooltip event for ipad commit 62191e41d5bf67317f9f1dc6c6af08cbabb4bf90 Author: ArtemBaskal <a.baskal@adguard.com> Date: Wed Jun 17 16:39:40 2020 +0300 Add success toast on logs refresh commit 2ebdd6a8124269d737c8060c3247aaf35d85cb8b Author: ArtemBaskal <a.baskal@adguard.com> Date: Wed Jun 17 16:01:37 2020 +0300 Fix pagination commit 5820c92bacd93d05a3d66d42ee95f099e1c5d9e9 Author: ArtemBaskal <a.baskal@adguard.com> Date: Wed Jun 17 11:31:15 2020 +0300 Revert "Render table in chunks" This reverts commit cdfcd849ccddc1bc35591edac7904129431470c9. commit cdfcd849ccddc1bc35591edac7904129431470c9 Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue Jun 16 18:42:18 2020 +0300 Render table in chunks commit cc8c5e64274bf6e806e2e8a4bf305af745c3ed2a Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue Jun 16 17:35:24 2020 +0300 Add pagination button hover effect commit f7e134091a1556784a5fea9d83c50353536126ef Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue Jun 16 16:28:00 2020 +0300 Make loader position absolute commit a7b887b57d903f1f7ac967b861b5cc677728efc4 Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue Jun 16 15:42:20 2020 +0300 Ignore clients find without params commit ecb322fefd4a161d79f28d17fe27827ee91701e4 Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue Jun 16 15:30:48 2020 +0300 Styles changes commit 9323ce3938bf04e1290eade09201ba0790a250c0 Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue Jun 16 14:32:23 2020 +0300 Review styles changes commit e0faa04ba3643f01b2ca99524cdd52b0731725c7 Merge: 9857682315e71435Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue Jun 16 12:08:45 2020 +0300 Merge branch '1421-new-qlog-v2' into feature/1421 commit 9857682371e8d9a3a91933cfb58a26b3470675d9 Author: ArtemBaskal <a.baskal@adguard.com> Date: Mon Jun 15 18:32:02 2020 +0300 Fix response cell ... and 88 more commits
115 lines
3.6 KiB
JavaScript
115 lines
3.6 KiB
JavaScript
import React, { Component } from 'react';
|
||
import PropTypes from 'prop-types';
|
||
import { withTranslation } from 'react-i18next';
|
||
import ReactTable from 'react-table';
|
||
|
||
import Card from '../../ui/Card';
|
||
import CellWrap from '../../ui/CellWrap';
|
||
|
||
import whoisCell from './whoisCell';
|
||
|
||
const COLUMN_MIN_WIDTH = 200;
|
||
|
||
class AutoClients extends Component {
|
||
columns = [
|
||
{
|
||
Header: this.props.t('table_client'),
|
||
accessor: 'ip',
|
||
minWidth: COLUMN_MIN_WIDTH,
|
||
Cell: CellWrap,
|
||
},
|
||
{
|
||
Header: this.props.t('table_name'),
|
||
accessor: 'name',
|
||
minWidth: COLUMN_MIN_WIDTH,
|
||
Cell: CellWrap,
|
||
},
|
||
{
|
||
Header: this.props.t('source_label'),
|
||
accessor: 'source',
|
||
minWidth: COLUMN_MIN_WIDTH,
|
||
Cell: CellWrap,
|
||
},
|
||
{
|
||
Header: this.props.t('whois'),
|
||
accessor: 'whois_info',
|
||
minWidth: COLUMN_MIN_WIDTH,
|
||
Cell: whoisCell(this.props.t),
|
||
},
|
||
{
|
||
Header: this.props.t('requests_count'),
|
||
accessor: (row) => this.props.normalizedTopClients.auto[row.ip] || 0,
|
||
sortMethod: (a, b) => b - a,
|
||
id: 'statistics',
|
||
minWidth: COLUMN_MIN_WIDTH,
|
||
Cell: (row) => {
|
||
const { value: clientStats } = row;
|
||
|
||
if (clientStats) {
|
||
return (
|
||
<div className="logs__row">
|
||
<div className="logs__text" title={clientStats}>
|
||
{clientStats}
|
||
</div>
|
||
</div>
|
||
);
|
||
}
|
||
|
||
return '–';
|
||
},
|
||
},
|
||
];
|
||
|
||
render() {
|
||
const { t, autoClients } = this.props;
|
||
|
||
return (
|
||
<Card
|
||
title={t('auto_clients_title')}
|
||
subtitle={t('auto_clients_desc')}
|
||
bodyType="card-body box-body--settings"
|
||
>
|
||
<ReactTable
|
||
data={autoClients || []}
|
||
columns={this.columns}
|
||
defaultSorted={[
|
||
{
|
||
id: 'statistics',
|
||
asc: true,
|
||
},
|
||
]}
|
||
className="-striped -highlight card-table-overflow"
|
||
showPagination
|
||
defaultPageSize={10}
|
||
minRows={5}
|
||
showPageSizeOptions={false}
|
||
showPageJump={false}
|
||
renderTotalPagesCount={() => false}
|
||
previousText={
|
||
<svg className="icons icon--small icon--gray w-100 h-100">
|
||
<use xlinkHref="#arrow-left" />
|
||
</svg>}
|
||
nextText={
|
||
<svg className="icons icon--small icon--gray w-100 h-100">
|
||
<use xlinkHref="#arrow-right" />
|
||
</svg>}
|
||
loadingText={t('loading_table_status')}
|
||
pageText=''
|
||
ofText=''
|
||
rowsText={t('rows_table_footer_text')}
|
||
noDataText={t('clients_not_found')}
|
||
getPaginationProps={() => ({ className: 'custom-pagination' })}
|
||
/>
|
||
</Card>
|
||
);
|
||
}
|
||
}
|
||
|
||
AutoClients.propTypes = {
|
||
t: PropTypes.func.isRequired,
|
||
autoClients: PropTypes.array.isRequired,
|
||
normalizedTopClients: PropTypes.object.isRequired,
|
||
};
|
||
|
||
export default withTranslation()(AutoClients);
|