Island: refactor file encryption table to display how many files were encrypted

This commit is contained in:
VakarisZ 2021-07-13 10:17:14 +03:00
parent 4a9062c480
commit 60cac3b287
3 changed files with 38 additions and 34 deletions

View File

@ -1,13 +0,0 @@
import React from 'react';
function renderBool(val: Boolean) {
if(val === true){
return (<p className={"text-success"}>Yes</p>);
} else {
return (<p className={"text-danger"}>No</p>);
}
}
export default renderBool;

View File

@ -0,0 +1,12 @@
import React from 'react';
function renderFileEncryptionStats(successful: number, total: number) {
if(successful > 0){
return (<p className={"text-success"}>{successful} out of {total}</p>);
} else {
return (<p className={"text-danger"}>{successful} out of {total}</p>);
}
}
export default renderFileEncryptionStats;

View File

@ -1,38 +1,29 @@
import React from 'react'; import React from 'react';
import ReactTable from 'react-table'; import ReactTable from 'react-table';
import {renderArray} from '../common/RenderArrays'; import {renderArray} from '../common/RenderArrays';
import renderBool from "../common/RenderBool"; import renderFileEncryptionStats from "../common/renderFileEncryptionStats";
const columns = [
{
Header: 'Ransomware info',
columns: [
{Header: 'Machine', id: 'machine', accessor: x => x.hostname},
{Header: 'Exploits', id: 'exploits', accessor: x => renderArray(x.exploits)},
{Header: 'Files got encrypted?', id: 'files_encrypted', accessor: x => renderBool(x.files_encrypted)}
]
}
];
const pageSize = 10;
type TableRow = {
exploits: [string],
files_encrypted: boolean,
hostname: string
}
type Props = { type Props = {
tableData: [TableRow] tableData: [TableRow]
} }
type TableRow = {
exploits: [string],
total_attempts: number,
successful_encryptions: number,
hostname: string
}
const pageSize = 10;
const FileEncryptionTable = (props: Props) => { const FileEncryptionTable = (props: Props) => {
let defaultPageSize = props.tableData.length > pageSize ? pageSize : props.tableData.length; let defaultPageSize = props.tableData.length > pageSize ? pageSize : props.tableData.length;
let showPagination = props.tableData.length > pageSize; let showPagination = props.tableData.length > pageSize;
return ( return (
<> <>
<h3> <h3 className={'report-section-header'}>
File encryption File encryption
</h3> </h3>
<div className="data-table-container"> <div className="data-table-container">
@ -47,4 +38,18 @@ const FileEncryptionTable = (props: Props) => {
); );
} }
const columns = [
{
Header: 'Ransomware info',
columns: [
{Header: 'Machine', id: 'machine', accessor: x => x.hostname},
{Header: 'Exploits', id: 'exploits', accessor: x => renderArray(x.exploits)},
{Header: 'Files encrypted',
id: 'files_encrypted',
accessor: x => renderFileEncryptionStats(x.successful_encryptions, x.total_attempts)}
]
}
];
export default FileEncryptionTable; export default FileEncryptionTable;