datajunction-ui
Version:
DataJunction Metrics Platform UI
173 lines (171 loc) • 4.79 kB
JSX
import { Light as SyntaxHighlighter } from 'react-syntax-highlighter';
import { solarizedDark } from 'react-syntax-highlighter/src/styles/hljs';
import React from 'react';
export default function QueryInfo({
id,
state,
engine_name,
engine_version,
errors,
links,
output_table,
scheduled,
started,
finished,
numRows,
isList = false,
}) {
return isList === false ? (
<div className="table-responsive">
<table className="card-inner-table table">
<thead className="fs-7 fw-bold text-gray-400 border-bottom-0">
<tr>
<th>Query ID</th>
<th>Engine</th>
<th>State</th>
<th>Scheduled</th>
<th>Started</th>
<th>Errors</th>
<th>Links</th>
<th>Output Table</th>
<th>Number of Rows</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<span className="rounded-pill badge bg-secondary-soft">{id}</span>
</td>
<td>
<span className="rounded-pill badge bg-secondary-soft">
{engine_name}
{' - '}
{engine_version}
</span>
</td>
<td>{state}</td>
<td>{scheduled}</td>
<td>{started}</td>
<td>
{errors?.length ? (
errors.map((e, idx) => (
<p key={`error-${idx}`}>
<span className="rounded-pill badge bg-secondary-error">
{e}
</span>
</p>
))
) : (
<></>
)}
</td>
<td>
{links?.length ? (
links.map((link, idx) => (
<p key={idx}>
<a href={link} target="_blank" rel="noreferrer">
{link}
</a>
</p>
))
) : (
<></>
)}
</td>
<td>{output_table}</td>
<td>{numRows}</td>
</tr>
</tbody>
</table>
</div>
) : (
<div className="rightbottom">
<ul style={{ padding: '20px' }}>
<li className={'query-info'}>
<label>Query ID</label>{' '}
<span className="tag_value rounded-pill badge">
{links?.length ? (
<a
href={links[links.length - 1]}
target={'_blank'}
rel="noreferrer"
>
{id}
</a>
) : (
id
)}
</span>
</li>
<li className={'query-info'}>
<label>State</label>
<span className="tag_value rounded-pill badge">{state}</span>
</li>
<li className={'query-info'}>
<label>Engine</label>{' '}
<span className="tag_value rounded-pill badge">
{engine_name}
{' - '}
{engine_version}
</span>
</li>
<li className={'query-info'}>
<label>Scheduled</label> {scheduled}
</li>
<li className={'query-info'}>
<label>Started</label> {started}
</li>
<li className={'query-info'}>
<label>Finished</label> {finished}
</li>
<li className={'query-info'}>
<label>Logs</label>{' '}
{errors?.length ? (
errors.map(error => (
<div
style={{
height: '800px',
width: '80%',
overflow: 'scroll',
borderRadius: '0',
border: '1px solid #ccc',
}}
className="queryrunner-query"
>
<SyntaxHighlighter
language="javascript"
style={solarizedDark}
wrapLines={true}
>
{error}
</SyntaxHighlighter>
</div>
))
) : (
<></>
)}
</li>
<li className={'query-info'}>
<label>Links:</label>{' '}
{links?.length ? (
links.map((link, idx) => (
<p key={idx}>
<a href={link} target="_blank" rel="noreferrer">
{link}
</a>
</p>
))
) : (
<></>
)}
</li>
<li className={'query-info'}>
<label>Output Table:</label> {output_table}
</li>
<li className={'query-info'}>
<label>Rows:</label> {numRows}
</li>
</ul>
</div>
);
}