@@ -16,13 +16,15 @@ import HorizontalDivider from 'components/atoms/common/HorizontalDivider';
1616import { JsonView , allExpanded , collapseAllNested , darkStyles , defaultStyles } from 'react-json-view-lite' ;
1717import 'react-json-view-lite/dist/index.css' ;
1818import { LogLevel } from '../flow/graph/GraphLogger' ;
19- import { ShieldCheckIcon , BarsArrowUpIcon , ExclamationTriangleIcon } from '@heroicons/react/24/outline' ;
19+ import GenAIUsageDisclaimer from '../modals/GenAIUsageDisclaimer' ;
20+ import { getLocalStorageItem } from 'utils/common' ;
2021
2122const TabPanelHeader = ( ) => {
2223 const focusTabId = useTabStore ( ( state ) => state . focusTabId ) ;
2324 const tabs = useTabStore ( ( state ) => state . tabs ) ;
2425 const focusTab = tabs . find ( ( t ) => t . id === focusTabId ) ;
2526
27+ const graphRunLogs = useCanvasStore ( ( state ) => state . logs ) ;
2628 const setTimeout = useCanvasStore ( ( state ) => state . setTimeout ) ;
2729
2830 const [ slidingPaneState , setSlidingPaneState ] = useState ( {
@@ -32,6 +34,7 @@ const TabPanelHeader = () => {
3234 subtitle : 'Not Available' ,
3335 } ) ;
3436
37+ const [ genAiUsageDisclaimerModalOpen , setGenAiUsageDisclaimerModalOpen ] = useState ( false ) ;
3538 const [ generateFlowTestModalOpen , setGenerateFlowTestModalOpen ] = useState ( false ) ;
3639
3740 const renderLog = ( log ) => {
@@ -44,26 +47,28 @@ const TabPanelHeader = () => {
4447
4548 if ( log . node != undefined ) {
4649 const type = log . node . type ;
47- const data = log . node . data ;
4850 if ( type === 'outputNode' ) {
4951 json = {
50- output : data . output ,
52+ output : log . node . data ,
5153 } ;
5254 }
5355
5456 if ( type === 'assertNode' ) {
57+ const data = log . node . data ;
5558 message = `Assert : ${ data . var1 } of type ${ typeof data . var1 } ${ data . operator } ${ data . var2 } of type ${ typeof data . var2 } = ${ data . result } ` ;
5659 }
5760
5861 if ( type === 'delayNode' ) {
59- message = `Waiting for ${ data . delay } ms` ;
62+ message = `Waiting for ${ log . node . data } ms` ;
6063 }
6164
6265 if ( type === 'setVarNode' ) {
66+ const data = log . node . data ;
6367 message = `Setting Variable: ${ data . name } = ${ data . value } ` ;
6468 }
6569
6670 if ( type === 'requestNode' ) {
71+ const data = log . node . data ;
6772 message = `${ data . request . type . toUpperCase ( ) } ${ data . request . url } ` ;
6873 json = data ;
6974 }
@@ -110,32 +115,8 @@ const TabPanelHeader = () => {
110115 }
111116 } ;
112117
113- const renderFlowScan = ( flowScan ) => {
114- if ( flowScan . upload === 'disabled' ) {
115- return (
116- < div className = 'flex flex-col items-start' >
117- < Tippy content = { flowScan . message } placement = 'top' >
118- < BarsArrowUpIcon className = 'h-4 w-4' />
119- </ Tippy >
120- { 'Activate Flow Scan' }
121- </ div >
122- ) ;
123- } else if ( flowScan . upload === 'success' ) {
124- return (
125- < div className = 'flex flex-col items-start' >
126- < ShieldCheckIcon className = 'h-4 w-4' />
127- { flowScan . url }
128- </ div >
129- ) ;
130- } else if ( flowScan . upload === 'fail' ) {
131- return (
132- < div className = 'flex flex-col items-start' >
133- < ExclamationTriangleIcon className = 'h-4 w-4' />
134- { flowScan . message }
135- { flowScan ?. reason }
136- </ div >
137- ) ;
138- }
118+ const showDisclaimerMsg = ( ) => {
119+ return getLocalStorageItem ( 'show_gen_ai_disclaimer' ) ;
139120 } ;
140121
141122 return (
@@ -161,7 +142,7 @@ const TabPanelHeader = () => {
161142 < div className = 'flex h-12 items-center justify-center' >
162143 < SaveFlowModal tab = { focusTab } />
163144 </ div >
164- { focusTab . type === OBJ_TYPES . flowtest && focusTab . run . logs && focusTab . run . logs . length != 0 ? (
145+ { focusTab . type === OBJ_TYPES . flowtest && graphRunLogs . length != 0 ? (
165146 < div >
166147 < Button
167148 id = 'graph-logs-side-sheet'
@@ -205,8 +186,7 @@ const TabPanelHeader = () => {
205186 className = 'drawer-overlay'
206187 > </ label >
207188 < ul className = 'menu min-h-full bg-base-200 p-4 text-base-content' >
208- < li key = 'scan' > { renderFlowScan ( focusTab . run . scan ) } </ li >
209- { focusTab . run . logs . map ( ( item , index ) => (
189+ { graphRunLogs . map ( ( item , index ) => (
210190 < li key = { index } > { renderLog ( item ) } </ li >
211191 ) ) }
212192 </ ul >
@@ -220,18 +200,35 @@ const TabPanelHeader = () => {
220200 < Button
221201 btnType = { BUTTON_TYPES . secondary }
222202 isDisabled = { false }
223- onClickHandle = { ( ) => setGenerateFlowTestModalOpen ( true ) }
203+ onClickHandle = { ( ) => {
204+ const showMsg = showDisclaimerMsg ( ) ;
205+ console . log ( `\n \n showMsg : ${ showMsg } \n` ) ;
206+ if ( showMsg === 'false' ) {
207+ setGenerateFlowTestModalOpen ( true ) ;
208+ } else {
209+ setGenAiUsageDisclaimerModalOpen ( true ) ;
210+ }
211+ } }
224212 fullWidth = { true }
225213 className = 'flex items-center justify-between gap-x-4'
226214 >
227215 < SparklesIcon className = 'h-5 w-5' />
228216 Generate
229217 </ Button >
230- < GenerateFlowTestModal
231- closeFn = { ( ) => setGenerateFlowTestModalOpen ( false ) }
232- open = { generateFlowTestModalOpen }
233- collectionId = { focusTab . collectionId }
234- />
218+ { /* ToDo: Discuss: I think having a user profile file on disk for this setting and all the future settings will be better */ }
219+ { showDisclaimerMsg ( ) === 'false' ? (
220+ < GenerateFlowTestModal
221+ closeFn = { ( ) => setGenerateFlowTestModalOpen ( false ) }
222+ open = { generateFlowTestModalOpen }
223+ collectionId = { focusTab . collectionId }
224+ />
225+ ) : (
226+ < GenAIUsageDisclaimer
227+ closeFn = { ( ) => setGenAiUsageDisclaimerModalOpen ( false ) }
228+ open = { genAiUsageDisclaimerModalOpen }
229+ collectionId = { focusTab . collectionId }
230+ />
231+ ) }
235232 </ div >
236233 ) }
237234 </ div >
0 commit comments