@@ -4,6 +4,7 @@ import { Tab, TabTitleText } from "@patternfly/react-core"
44const BlockNotFound = lazy ( ( ) => import ( "./BlockNotFound" ) )
55const DefContent = lazy ( ( ) => import ( "./DefContent" ) )
66const UsageTabContent = lazy ( ( ) => import ( "./UsageTabContent" ) )
7+ const ResultTabContent = lazy ( ( ) => import ( "./ResultTabContent" ) )
78const SourceTabContent = lazy ( ( ) => import ( "./SourceTabContent" ) )
89const ContextTabContent = lazy ( ( ) => import ( "./ContextTabContent" ) )
910const SummaryTabContent = lazy ( ( ) => import ( "./SummaryTabContent" ) )
@@ -16,52 +17,6 @@ import {
1617 type NonScalarPdlBlock as Model ,
1718} from "../../helpers"
1819
19- function blockBody ( block : Model ) {
20- const tabs = [
21- < Tab key = { 0 } eventKey = { 0 } title = { < TabTitleText > Summary</ TabTitleText > } >
22- < Suspense >
23- < SummaryTabContent block = { block } />
24- </ Suspense >
25- </ Tab > ,
26- < Tab key = { 1 } eventKey = { 1 } title = { < TabTitleText > Source</ TabTitleText > } >
27- < Suspense >
28- < SourceTabContent block = { block } />
29- </ Suspense >
30- </ Tab > ,
31- < Tab key = { 2 } eventKey = { 2 } title = { < TabTitleText > Trace</ TabTitleText > } >
32- < Suspense >
33- < RawTraceTabContent block = { block } />
34- </ Suspense >
35- </ Tab > ,
36- ]
37-
38- if ( hasContextInformation ( block ) ) {
39- tabs . splice (
40- 1 ,
41- 0 ,
42- < Tab key = { 3 } eventKey = { 3 } title = { < TabTitleText > Messages</ TabTitleText > } >
43- < Suspense >
44- < ContextTabContent block = { block } />
45- </ Suspense >
46- </ Tab > ,
47- )
48- }
49-
50- if ( hasModelUsage ( block ) ) {
51- tabs . splice (
52- 1 ,
53- 0 ,
54- < Tab key = { 4 } eventKey = { 4 } title = { < TabTitleText > Usage</ TabTitleText > } >
55- < Suspense >
56- < UsageTabContent block = { block } />
57- </ Suspense >
58- </ Tab > ,
59- )
60- }
61-
62- return tabs
63- }
64-
6520type Props = {
6621 id : string | null
6722 value : string
@@ -74,26 +29,99 @@ export default function DrawerContentBody({
7429 id,
7530 value,
7631 objectType,
77- model,
32+ model : block ,
7833} : Props ) {
79- if ( ! model ) {
80- return (
81- < Suspense fallback = { < div /> } >
82- < BlockNotFound pdl__id = { id } value = { value } />
83- </ Suspense >
84- )
34+ if ( ! block ) {
35+ return [
36+ < Tab eventKey = { 0 } title = { < TabTitleText > Error</ TabTitleText > } >
37+ < Suspense fallback = { < div /> } >
38+ < BlockNotFound pdl__id = { id } value = { value } />
39+ </ Suspense >
40+ </ Tab > ,
41+ ]
8542 }
8643
8744 switch ( objectType ) {
8845 case "def" : {
89- const value = hasResult ( model ) ? model . pdl__result : undefined
90- return (
46+ const value = hasResult ( block ) ? block . pdl__result : undefined
47+ return [
9148 < Tab eventKey = { 0 } title = { < TabTitleText > Value</ TabTitleText > } >
9249 { ! value ? "Value not found" : < DefContent value = { value } /> }
93- </ Tab >
94- )
50+ </ Tab > ,
51+ ]
52+ }
53+
54+ default : {
55+ // some blocks have nothing interesting to show other than their result
56+ const hasSummary = ! ( block . kind === "data" || block . kind === "code" )
57+
58+ return [
59+ ...( ! hasSummary
60+ ? [ ]
61+ : [
62+ < Tab
63+ key = { 0 }
64+ eventKey = { 0 }
65+ title = { < TabTitleText > Summary</ TabTitleText > }
66+ >
67+ < Suspense >
68+ < SummaryTabContent block = { block } />
69+ </ Suspense >
70+ </ Tab > ,
71+ ] ) ,
72+
73+ ...( ! hasContextInformation ( block )
74+ ? [ ]
75+ : [
76+ < Tab
77+ key = { 3 }
78+ eventKey = { 3 }
79+ title = { < TabTitleText > Messages</ TabTitleText > }
80+ >
81+ < Suspense >
82+ < ContextTabContent block = { block } />
83+ </ Suspense >
84+ </ Tab > ,
85+ ] ) ,
86+
87+ ...( ! hasResult ( block )
88+ ? [ ]
89+ : [
90+ < Tab
91+ key = "result"
92+ eventKey = "result"
93+ title = { < TabTitleText > Result</ TabTitleText > }
94+ >
95+ < Suspense >
96+ < ResultTabContent block = { block } />
97+ </ Suspense >
98+ </ Tab > ,
99+ ] ) ,
100+
101+ ...( ! hasModelUsage ( block )
102+ ? [ ]
103+ : [
104+ < Tab
105+ key = { 4 }
106+ eventKey = { 4 }
107+ title = { < TabTitleText > Usage</ TabTitleText > }
108+ >
109+ < Suspense >
110+ < UsageTabContent block = { block } />
111+ </ Suspense >
112+ </ Tab > ,
113+ ] ) ,
114+ < Tab key = { 1 } eventKey = { 1 } title = { < TabTitleText > Source</ TabTitleText > } >
115+ < Suspense >
116+ < SourceTabContent block = { block } />
117+ </ Suspense >
118+ </ Tab > ,
119+ < Tab key = { 2 } eventKey = { 2 } title = { < TabTitleText > Trace</ TabTitleText > } >
120+ < Suspense >
121+ < RawTraceTabContent block = { block } />
122+ </ Suspense >
123+ </ Tab > ,
124+ ]
95125 }
96- default :
97- return blockBody ( model )
98126 }
99127}
0 commit comments