Fix topic messages (#664)

This commit is contained in:
Oleg Shur 2021-07-12 13:58:12 +03:00 committed by GitHub
parent 73d4e48941
commit bf6dd6c91b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 52 additions and 76 deletions

View file

@ -0,0 +1,25 @@
import React from 'react';
import JSONTree from 'react-json-tree';
import theme from './theme';
interface FullMessageProps {
message: string;
}
const FullMessage: React.FC<FullMessageProps> = ({ message }) => {
try {
return (
<JSONTree
data={JSON.parse(message)}
theme={theme}
shouldExpandNode={() => true}
hideRoot
/>
);
} catch (e) {
return <p>{JSON.stringify(message)}</p>;
}
};
export default FullMessage;

View file

@ -1,7 +1,6 @@
import React from 'react';
import JSONTree from 'react-json-tree';
import theme from './theme';
import FullMessage from './FullMessage';
interface MessageContentProps {
message: string;
@ -9,25 +8,15 @@ interface MessageContentProps {
const MessageContent: React.FC<MessageContentProps> = ({ message }) => {
const [isFolded, setIsFolded] = React.useState(message.length > 250);
let fullMessage: Record<string, string> | string;
const cutMessage = `${message.slice(0, 250)}...`;
try {
fullMessage = JSON.parse(message);
} catch (e) {
fullMessage = message;
}
return (
<div className="is-flex is-flex-direction-column is-align-items-center">
<div className="is-flex is-flex-direction-column">
{isFolded ? (
<p className="has-content-overflow-ellipsis">{cutMessage}</p>
<p className="has-content-overflow-ellipsis">
{`${message.slice(0, 250)}...`}
</p>
) : (
<JSONTree
data={fullMessage}
theme={theme}
shouldExpandNode={() => true}
hideRoot
/>
<FullMessage message={message} />
)}
{isFolded && (
<button

View file

@ -33,7 +33,7 @@ const MessageItem: React.FC<MessageItemProp> = ({
<td style={{ width: 150 }}>{offset}</td>
<td style={{ width: 100 }}>{partition}</td>
<td style={{ wordBreak: 'break-word' }}>
<MessageContent message={JSON.stringify(content, null, '\t')} />
{content && <MessageContent message={content} />}
</td>
<td className="has-text-right">
<Dropdown

View file

@ -228,8 +228,8 @@ const Messages: React.FC<Props> = ({
return (
<div>
<div className="columns">
<div className="column is-one-fifth">
<div className="columns is-align-items-flex-end">
<div className="column is-3">
<label className="label">Partitions</label>
<MultiSelect
options={partitions.map((p) => ({
@ -242,7 +242,7 @@ const Messages: React.FC<Props> = ({
labelledBy="Select partitions"
/>
</div>
<div className="column is-one-fifth">
<div className="column is-2">
<label className="label">Seek Type</label>
<div className="select is-block">
<select
@ -256,7 +256,7 @@ const Messages: React.FC<Props> = ({
</select>
</div>
</div>
<div className="column is-one-fifth">
<div className="column is-2">
{selectedSeekType === SeekType.OFFSET ? (
<>
<label className="label">Offset</label>
@ -284,7 +284,7 @@ const Messages: React.FC<Props> = ({
</>
)}
</div>
<div className="column is-two-fifths">
<div className="column is-3">
<label className="label">Search</label>
<input
id="searchText"
@ -296,6 +296,13 @@ const Messages: React.FC<Props> = ({
onChange={handleQueryChange}
/>
</div>
<div className="column is-2">
<input
type="submit"
className="button is-primary is-fullwidth"
onClick={handleFiltersSubmit}
/>
</div>
</div>
<div className="columns">
<div className="column is-half">
@ -311,13 +318,6 @@ const Messages: React.FC<Props> = ({
<label htmlFor="switchRoundedDefault">Newest first</label>
</div>
</div>
<div className="column is-half" style={{ textAlign: 'right' }}>
<input
type="submit"
className="button is-primary"
onClick={handleFiltersSubmit}
/>
</div>
</div>
<MessagesTable messages={messages} onNext={onNext} />
</div>

View file

@ -16,7 +16,7 @@ const MessagesTable: React.FC<MessagesTableProp> = ({ messages, onNext }) => {
return (
<>
<table className="table is-fullwidth">
<table className="table is-fullwidth is-narrow">
<thead>
<tr>
<th>Timestamp</th>

View file

@ -2,7 +2,7 @@
exports[`MessageContent when it is folded matches the snapshot 1`] = `
<div
className="is-flex is-flex-direction-column is-align-items-center"
className="is-flex is-flex-direction-column"
>
<p
className="has-content-overflow-ellipsis"
@ -32,11 +32,10 @@ Amet officia eu veni...
exports[`MessageContent when it is unfolded matches the snapshot 1`] = `
<div
className="is-flex is-flex-direction-column is-align-items-center"
className="is-flex is-flex-direction-column"
>
<JSONTree
collectionLimit={50}
data="{
<FullMessage
message="{
\\"_id\\": \\"609fab8aed527f514f4e648d\\",
\\"name\\": \\"in nostrud\\",
\\"desc\\": \\"Dolore nostrud commodo magna velit ut magna voluptate sint aute. Excepteur aute culpa culpa dolor ipsum. Tempor est ut officia tempor laborum consectetur.
@ -50,41 +49,6 @@ Cupidatat deserunt mollit tempor aliqua. Fugiat ullamco magna pariatur quis null
\\"degreee\\": \\"master\\",
\\"degreeeee\\": \\"bachelor\\"
}"
getItemString={[Function]}
hideRoot={true}
invertTheme={true}
isCustomNode={[Function]}
keyPath={
Array [
"root",
]
}
labelRenderer={[Function]}
postprocessValue={[Function]}
shouldExpandNode={[Function]}
theme={
Object {
"author": "seth wright (http://sethawright.com)",
"base00": "#1d1f21",
"base01": "#282a2e",
"base02": "#373b41",
"base03": "#969896",
"base04": "#b4b7b4",
"base05": "#c5c8c6",
"base06": "#e0e0e0",
"base07": "#ffffff",
"base08": "#CC342B",
"base09": "#F96A38",
"base0A": "#FBA922",
"base0B": "#198844",
"base0C": "#3971ED",
"base0D": "#3971ED",
"base0E": "#A36AC7",
"base0F": "#3971ED",
"scheme": "google",
}
}
valueRenderer={[Function]}
/>
</div>
`;

View file

@ -38,7 +38,7 @@ exports[`MessageItem when content is defined matches snapshot 1`] = `
}
>
<MessageContent
message="\\"{\\\\\\"foo\\\\\\":\\\\\\"bar\\\\\\",\\\\\\"key\\\\\\":\\\\\\"val\\\\\\"}\\""
message="{\\"foo\\":\\"bar\\",\\"key\\":\\"val\\"}"
/>
</td>
<td
@ -107,9 +107,7 @@ exports[`MessageItem when content is undefined matches snapshot 1`] = `
"wordBreak": "break-word",
}
}
>
<MessageContent />
</td>
/>
<td
className="has-text-right"
>

View file

@ -3,7 +3,7 @@
exports[`MessagesTable when topic contains messages matches snapshot 1`] = `
<Fragment>
<table
className="table is-fullwidth"
className="table is-fullwidth is-narrow"
>
<thead>
<tr>