Skip to content

Commit

Permalink
Merge pull request #6 in DNS/adguard-dns from feature/319 to master
Browse files Browse the repository at this point in the history
* commit 'fa8bc570827cae708266901754712fb0c9a1f1ea':
  add reason status
  fix tooltip styles
  add client column and tooltip to blocked requests
  • Loading branch information
adguard-bot-2 committed Sep 5, 2018
2 parents f12ef5d + fa8bc57 commit e62050f
Show file tree
Hide file tree
Showing 6 changed files with 105 additions and 12 deletions.
4 changes: 2 additions & 2 deletions client/src/actions/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { createAction } from 'redux-actions';
import round from 'lodash/round';

import { normalizeHistory, normalizeFilteringStatus } from '../helpers/helpers';
import { normalizeHistory, normalizeFilteringStatus, normalizeLogs } from '../helpers/helpers';
import Api from '../api/Api';

const apiClient = new Api();
Expand Down Expand Up @@ -175,7 +175,7 @@ export const getLogs = () => async (dispatch, getState) => {
const state = getState();
const timer = setInterval(async () => {
if (state.dashboard.isCoreRunning) {
const logs = await apiClient.getQueryLog();
const logs = normalizeLogs(await apiClient.getQueryLog());
dispatch(getLogsSuccess(logs));
clearInterval(timer);
}
Expand Down
26 changes: 26 additions & 0 deletions client/src/components/Logs/Logs.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
.logs__row {
display: flex;
align-items: center;
}

.logs__row--overflow {
overflow: hidden;
}

.logs__row .list-unstyled {
margin-bottom: 0;
overflow: hidden;
}

.logs__text,
.logs__row .list-unstyled li {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}

.logs__row .tooltip-custom {
top: 0;
margin-left: 0;
margin-right: 5px;
}
75 changes: 65 additions & 10 deletions client/src/components/Logs/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import { saveAs } from 'file-saver/FileSaver';
import PageTitle from '../ui/PageTitle';
import Card from '../ui/Card';
import Loading from '../ui/Loading';
import { normalizeLogs } from '../../helpers/helpers';

import Tooltip from '../ui/Tooltip';
import './Logs.css';

const DOWNLOAD_LOG_FILENAME = 'dns-logs.txt';

Expand All @@ -25,36 +25,82 @@ class Logs extends Component {
}
}

renderTooltip(isFiltered, rule) {
if (rule) {
return (isFiltered && <Tooltip text={rule}/>);
}
return '';
}

renderLogs(logs) {
const columns = [{
Header: 'Time',
accessor: 'time',
maxWidth: 150,
maxWidth: 110,
}, {
Header: 'Domain name',
accessor: 'domain',
Cell: (row) => {
const response = row.value;

return (
<div className="logs__row logs__row--overflow" title={response}>
<div className="logs__text">
{response}
</div>
</div>
);
},
}, {
Header: 'Type',
accessor: 'type',
maxWidth: 100,
maxWidth: 60,
}, {
Header: 'Response',
accessor: 'response',
Cell: (row) => {
const responses = row.value;
const { reason } = row.original;
const isFiltered = row ? reason.indexOf('Filtered') === 0 : false;
const parsedFilteredReason = reason.replace('Filtered', 'Filtered by ');
const rule = row && row.original && row.original.rule;

if (isFiltered) {
return (
<div className="logs__row">
{ this.renderTooltip(isFiltered, rule) }
<span>{ parsedFilteredReason }</span>
</div>
);
}

if (responses.length > 0) {
const liNodes = responses.map((response, index) =>
(<li key={index}>{response}</li>));
return (<ul className="list-unstyled">{liNodes}</ul>);
(<li key={index} title={response}>{response}</li>));
return (
<div className="logs__row">
{ this.renderTooltip(isFiltered, rule)}
<ul className="list-unstyled">{liNodes}</ul>
</div>
);
}
return 'Empty';
return (
<div className="logs__row">
{ this.renderTooltip(isFiltered, rule) }
<span>Empty</span>
</div>
);
},
}];
}, {
Header: 'Client',
accessor: 'client',
maxWidth: 250,
},
];

if (logs) {
const normalizedLogs = normalizeLogs(logs);
return (<ReactTable
data={normalizedLogs}
data={logs}
columns={columns}
showPagination={false}
minRows={7}
Expand All @@ -65,6 +111,15 @@ class Logs extends Component {
desc: true,
},
]}
getTrProps={(_state, rowInfo) => {
// highlight filtered requests
if (!rowInfo) {
return {};
}
return {
className: (rowInfo.original.reason.indexOf('Filtered') === 0 ? 'red' : ''),
};
}}
/>);
}
return undefined;
Expand Down
5 changes: 5 additions & 0 deletions client/src/components/ui/ReactTable.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
.ReactTable .rt-th,
.ReactTable .rt-td {
padding: 10px 15px;
overflow: visible;
}

.rt-tr-group .red {
background-color: #fff4f2;
}
1 change: 1 addition & 0 deletions client/src/components/ui/Tooltip.css
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
vertical-align: middle;
width: 18px;
height: 18px;
flex-shrink: 0;
margin-left: 5px;
background-image: url("./svg/help-circle.svg");
background-size: 100%;
Expand Down
6 changes: 6 additions & 0 deletions client/src/helpers/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ export const normalizeLogs = logs => logs.map((log) => {
time,
question,
answer: response,
reason,
client,
rule,
} = log;
const { host: domain, type } = question;
const responsesArray = response ? response.map((response) => {
Expand All @@ -25,6 +28,9 @@ export const normalizeLogs = logs => logs.map((log) => {
domain,
type,
response: responsesArray,
reason,
client,
rule,
};
});

Expand Down

0 comments on commit e62050f

Please sign in to comment.