@@ -22,6 +22,7 @@ import { useRouteRef } from '@backstage/core-plugin-api';
2222import { usePermission } from '@backstage/plugin-permission-react' ;
2323
2424import { Box , makeStyles , Tooltip } from '@material-ui/core' ;
25+ import DeveloperModeOutlinedIcon from '@material-ui/icons/DeveloperModeOutlined' ;
2526import FormatListBulleted from '@material-ui/icons/FormatListBulleted' ;
2627import PlayArrow from '@material-ui/icons/PlayArrow' ;
2728import TaskAltOutlinedIcon from '@mui/icons-material/TaskAltOutlined' ;
@@ -37,18 +38,19 @@ import {
3738 WorkflowOverviewDTO ,
3839} from '@red-hat-developer-hub/backstage-plugin-orchestrator-common' ;
3940
40- import { AVAILABLE , UNAVAILABLE , VALUE_UNAVAILABLE } from '../constants' ;
41+ import { AVAILABLE , UNAVAILABLE , VALUE_UNAVAILABLE } from '../../ constants' ;
4142import WorkflowOverviewFormatter , {
4243 FormattedWorkflowOverview ,
43- } from '../dataFormatters/WorkflowOverviewFormatter' ;
44- import { usePermissionArray } from '../hooks/usePermissionArray' ;
44+ } from '../../ dataFormatters/WorkflowOverviewFormatter' ;
45+ import { usePermissionArray } from '../../ hooks/usePermissionArray' ;
4546import {
4647 executeWorkflowRouteRef ,
4748 workflowRouteRef ,
4849 workflowRunsRouteRef ,
49- } from '../routes' ;
50- import OverrideBackstageTable from './ui/OverrideBackstageTable' ;
51- import { WorkflowInstanceStatusIndicator } from './WorkflowInstanceStatusIndicator' ;
50+ } from '../../routes' ;
51+ import OverrideBackstageTable from '../ui/OverrideBackstageTable' ;
52+ import { WorkflowInstanceStatusIndicator } from '../WorkflowInstanceStatusIndicator' ;
53+ import { InputSchemaDialog } from './InputSchemaDialog' ;
5254
5355export interface WorkflowsTableProps {
5456 items : WorkflowOverviewDTO [ ] ;
@@ -127,6 +129,22 @@ export const WorkflowsTable = ({ items }: WorkflowsTableProps) => {
127129 const { allowed : permittedToUse } = usePermittedToUseBatch ( items ) ;
128130 const { allowed : permittedToView } = usePermittedToViewBatch ( items ) ;
129131
132+ const [ isInputSchemaDialogOpen , setIsInputSchemaDialogOpen ] = useState ( false ) ;
133+ const [ dataForDialog , setDataForDialog ] = useState <
134+ FormattedWorkflowOverview | undefined
135+ > ( undefined ) ;
136+
137+ const toggleInputSchemaDialog = React . useCallback ( ( ) => {
138+ setIsInputSchemaDialogOpen ( prev => ! prev ) ;
139+ } , [ ] ) ;
140+
141+ const handleViewInputSchema = useCallback (
142+ ( rowData : FormattedWorkflowOverview ) => {
143+ setDataForDialog ( rowData ) ;
144+ toggleInputSchemaDialog ( ) ;
145+ } ,
146+ [ toggleInputSchemaDialog ] ,
147+ ) ;
130148 const initialState = useMemo (
131149 ( ) => items . map ( WorkflowOverviewFormatter . format ) ,
132150 [ items ] ,
@@ -136,7 +154,7 @@ export const WorkflowsTable = ({ items }: WorkflowsTableProps) => {
136154 setData ( initialState ) ;
137155 } , [ initialState ] ) ;
138156
139- const handleView = useCallback (
157+ const handleViewVariables = useCallback (
140158 ( rowData : FormattedWorkflowOverview ) => {
141159 navigate ( definitionRunsLink ( { workflowId : rowData . id } ) ) ;
142160 } ,
@@ -195,12 +213,24 @@ export const WorkflowsTable = ({ items }: WorkflowsTableProps) => {
195213 icon : FormatListBulleted ,
196214 tooltip : 'View runs' ,
197215 disabled : ! canViewWorkflow ( rowData . id ) ,
198- onClick : ( ) => handleView ( rowData ) ,
216+ onClick : ( ) => handleViewVariables ( rowData ) ,
217+ } ) ,
218+ rowData => ( {
219+ icon : DeveloperModeOutlinedIcon ,
220+ tooltip : 'View input schema' ,
221+ disabled : ! canViewWorkflow ( rowData . id ) ,
222+ onClick : ( ) => handleViewInputSchema ( rowData ) ,
199223 } ) ,
200224 ] ;
201225
202226 return actionItems ;
203- } , [ canExecuteWorkflow , canViewWorkflow , handleExecute , handleView ] ) ;
227+ } , [
228+ canExecuteWorkflow ,
229+ canViewWorkflow ,
230+ handleExecute ,
231+ handleViewVariables ,
232+ handleViewInputSchema ,
233+ ] ) ;
204234
205235 const columns = useMemo < TableColumn < FormattedWorkflowOverview > [ ] > (
206236 ( ) => [
@@ -294,12 +324,21 @@ export const WorkflowsTable = ({ items }: WorkflowsTableProps) => {
294324 // TODO: use backend pagination only if the generic orchestratorWorkflowPermission is in place
295325 // use FE pagination otherwise (it means when specific permissions are used)
296326 return (
297- < OverrideBackstageTable < FormattedWorkflowOverview >
298- title = "Workflows"
299- options = { options }
300- columns = { columns }
301- data = { data }
302- actions = { actions }
303- />
327+ < >
328+ { dataForDialog && (
329+ < InputSchemaDialog
330+ rowData = { dataForDialog }
331+ isInputSchemaDialogOpen = { isInputSchemaDialogOpen }
332+ toggleInputSchemaDialog = { toggleInputSchemaDialog }
333+ />
334+ ) }
335+ < OverrideBackstageTable < FormattedWorkflowOverview >
336+ title = "Workflows"
337+ options = { options }
338+ columns = { columns }
339+ data = { data }
340+ actions = { actions }
341+ />
342+ </ >
304343 ) ;
305344} ;
0 commit comments