@@ -13,6 +13,8 @@ import { jsonLogStore, updateJSONRequestLabels } from '../store/JSONLogStore';
1313import JSONFieldsModal , { getJSONFields } from './JSONFieldsModal' ;
1414import { snapshotStore } from '../store/SnapshotStore' ;
1515import { logViewerStore } from '../store/LogViewerStore' ;
16+ import JSONSimpleFields from './JSONSimpleFields' ;
17+ import JSONFieldsMethods from './JSONFieldsMethod' ;
1618
1719type Props = {
1820 open : boolean ,
@@ -74,6 +76,7 @@ const HelpDialog = observer(({ open, onClose }: Props) => {
7476 ) ;
7577 }
7678
79+ jsonLogStore . init ( ) ;
7780 return (
7881 < > < Dialog
7982 maxWidth = { 'lg' }
@@ -262,7 +265,7 @@ const HelpDialog = observer(({ open, onClose }: Props) => {
262265 < h5 > Annotating JSON Fields</ h5 >
263266 Selected JSON fields can be annotated with labels.
264267 < p > </ p >
265- < div style = { { marginRight : '1rem' } } >
268+ < div style = { { margin : '0 1rem' } } >
266269 < button className = "btn btn-lg btn-primary"
267270 style = { { marginBottom : "1rem" } }
268271 onClick = { async ( ) => {
@@ -278,59 +281,11 @@ const HelpDialog = observer(({ open, onClose }: Props) => {
278281 Annotate JSON Fields
279282 </ button >
280283 </ div >
281- < h5 > Extract Date, Level, App Name and Message</ h5 >
282- A custom script can be defined to extract the date, level, app name and message from the JSON log data.
283284 < p > </ p >
284- < div style = { { marginRight : '1rem' } } >
285- < button className = "btn btn-lg btn-success"
286- style = { { marginBottom : "1rem" } }
287- onClick = { async ( ) => {
288- await jsonLogStore . init ( ) ;
289- setJsonFields ( getJSONFields ( ) ) ;
290- setShowJSONFieldsModal ( true ) ;
291- } } >
292- < div className = 'fa fa-calendar'
293- style = { {
294- marginRight : '.5rem'
295- } }
296- />
297- Extract Date...
298- </ button >
299- </ div >
300- < p > </ p >
301- < h5 > Example log message:</ h5 >
302- < pre >
303- < div > { '{' } </ div >
304- < div > "date": "2023-09-12T18:03:33.496Z"</ div >
305- < div > "level": "info"</ div >
306- < div > "pod_name": "my-pod-name"</ div >
307- < div > "message": "This is a test message."</ div >
308- < div > { '}' } </ div >
309- </ pre >
310- < p > </ p >
311- < h5 > Example extract function:</ h5 >
312- < pre >
313- < div > // Function called to extract < b > date</ b > , < b > level</ b > , < b > app name</ b > and < b > message</ b > </ div >
314- < div > //</ div >
315- < div > // @param < b > preJSONString</ b > : string - optional non-JSON string proceeding JSON object</ div >
316- < div > // @param < b > jsonObject</ b > : { '{}' } - JSON log data</ div >
317- < div > // @returns { '{' } < b > date</ b > : Date, < b > level</ b > : string, < b > appName</ b > : string, < b > message</ b > : string{ '}' } </ div >
318- < div > //</ div >
319- < div > // < b > appName</ b > is the pod name, process ID... </ div >
320- < div > //</ div >
321- < div > const myFunction = function(preJSONString, jsonObject) { '{' } </ div >
322- < div > let date = new Date(jsonObject.date);</ div >
323- < div > let level = jsonObject.level;</ div >
324- < div > let appName = jsonObject.pod_name;</ div >
325- < div > let message = jsonObject.message;</ div >
326- < div > let additionalJSON = { '{}' } ;</ div >
327- < div > return { '{date, level, appName, message, additionalJSON}' } ;</ div >
328- < div > { '}' } </ div >
329- </ pre >
330285 < h5 > Import JSON Log</ h5 >
331286 Click this button to import a JSON log file.
332287 < p > </ p >
333- < div style = { { marginRight : '1rem' } } >
288+ < div style = { { margin : '0 1rem' } } >
334289 < button className = "btn btn-lg btn-primary"
335290 style = { { marginBottom : "1rem" } }
336291 onClick = { ( ) => {
@@ -345,6 +300,34 @@ const HelpDialog = observer(({ open, onClose }: Props) => {
345300 Import JSON Log
346301 </ button >
347302 </ div >
303+ < p > </ p >
304+ < h5 > Date, Level, App Name and Message</ h5 >
305+ Use the < b > Simple</ b > or < b > Advanced</ b > method to identify the date, level, app name and message fields in the JSON log entry.
306+ < div style = { { margin : '0 1rem' } } >
307+ < JSONFieldsMethods />
308+ { jsonLogStore . getMethod ( ) === 'simple' ?
309+ < JSONSimpleFields />
310+ :
311+ < >
312+ Write your own JavaScript to extract the date, level, app name and message fields.
313+ < p > </ p >
314+ < button className = "btn btn-lg btn-success"
315+ style = { { marginBottom : "1rem" } }
316+ onClick = { async ( ) => {
317+ await jsonLogStore . init ( ) ;
318+ setJsonFields ( getJSONFields ( ) ) ;
319+ setShowJSONFieldsModal ( true ) ;
320+ } } >
321+ < div className = 'fa fa-calendar'
322+ style = { {
323+ marginRight : '.5rem'
324+ } }
325+ />
326+ Edit JavaScript
327+ </ button >
328+ </ >
329+ }
330+ </ div >
348331 </ TabPanel >
349332 </ TabContext >
350333 </ div >
@@ -359,19 +342,22 @@ const HelpDialog = observer(({ open, onClose }: Props) => {
359342 onClose = { ( ) => setShowSessionModal ( false ) }
360343 store = { sessionStore }
361344 />
362- < JSONFieldsModal
363- open = { showJSONFieldsModal }
364- onClose = { ( ) => {
365- setShowJSONFieldsModal ( false ) ;
366- snapshotStore . setUpdating ( true ) ;
367- setTimeout ( ( ) => {
368- updateJSONRequestLabels ( ) ;
369- snapshotStore . setUpdating ( false ) ;
370- } ) ;
371- } }
372- store = { jsonLogStore }
373- jsonFields = { jsonFields }
374- />
345+ { showJSONFieldsModal &&
346+ < JSONFieldsModal
347+ open = { showJSONFieldsModal }
348+ onClose = { ( ) => {
349+ setShowJSONFieldsModal ( false ) ;
350+ snapshotStore . setUpdating ( true ) ;
351+ setTimeout ( ( ) => {
352+ updateJSONRequestLabels ( ) ;
353+ snapshotStore . setUpdating ( false ) ;
354+ } ) ;
355+ } }
356+ store = { jsonLogStore }
357+ jsonFields = { jsonFields }
358+ selectTab = 'scripts'
359+ />
360+ }
375361 </ >
376362 ) ;
377363} ) ;
0 commit comments