11import { ButtonPrimary , Select } from '@terra-ui-packages/components' ;
22import React from 'react' ;
33import { DelayedSearchInput } from 'src/components/input' ;
4- import { PipelineRunStatus } from 'src/libs/ajax/teaspoons/teaspoons-models' ;
4+ import { Pipeline , PipelineRunStatus } from 'src/libs/ajax/teaspoons/teaspoons-models' ;
55
66export interface FilterValues {
77 description ?: string ;
@@ -16,7 +16,12 @@ interface TableFiltersProps {
1616 availablePipelineNames : string [ ] ;
1717}
1818
19- const STATUS_OPTIONS : string [ ] = [ 'Succeeded' , 'Running' , 'Failed' , 'Preparing' ] ;
19+ const STATUS_OPTIONS : { value : PipelineRunStatus ; label : string } [ ] = [
20+ { value : 'PREPARING' , label : 'Preparing' } ,
21+ { value : 'RUNNING' , label : 'In Progress' } ,
22+ { value : 'SUCCEEDED' , label : 'Done' } ,
23+ { value : 'FAILED' , label : 'Failed' } ,
24+ ] ;
2025
2126export const TableFilters : React . FC < TableFiltersProps > = ( { filters, onFilterChange, availablePipelineNames } ) => {
2227 const handleInputChange = ( field : keyof FilterValues , value : string ) => {
@@ -32,6 +37,8 @@ export const TableFilters: React.FC<TableFiltersProps> = ({ filters, onFilterCha
3237
3338 const hasActiveFilters = Object . values ( filters ) . some ( ( value ) => value !== undefined && value !== '' ) ;
3439
40+ const PIPELINE_OPTIONS = availablePipelineNames . map ( ( name ) => ( { value : name , label : name } ) ) ;
41+
3542 return (
3643 < div
3744 style = { {
@@ -90,15 +97,16 @@ export const TableFilters: React.FC<TableFiltersProps> = ({ filters, onFilterCha
9097 < div style = { { fontWeight : 600 , fontSize : '14px' } } > Status</ div >
9198 < Select
9299 id = 'filter-status'
93- options = { STATUS_OPTIONS . map ( ( status ) => ( { value : status , label : status } ) ) }
94- value = { filters . status ? { value : filters . status , label : filters . status } : 'bla' }
100+ options = { STATUS_OPTIONS }
101+ value = { filters . status }
95102 placeholder = 'All Statuses'
96- onChange = { ( selected ) => {
97- if ( selected === null ) {
103+ onChange = { ( selectedStatus ) => {
104+ if ( selectedStatus === null ) {
105+ // Clear the status filter
106+ handleInputChange ( 'status' , '' ) ;
98107 return ;
99108 }
100- // @ts -ignore
101- handleInputChange ( 'status' , selected . value ) ;
109+ handleInputChange ( 'status' , selectedStatus . value ) ;
102110 } }
103111 isClearable
104112 styles = { { container : ( base ) => ( { ...base , minWidth : '150px' } ) } }
@@ -110,15 +118,16 @@ export const TableFilters: React.FC<TableFiltersProps> = ({ filters, onFilterCha
110118 < div style = { { fontWeight : 600 , fontSize : '14px' } } > Pipeline</ div >
111119 < Select
112120 id = 'filter-pipelineName'
113- options = { availablePipelineNames . map ( ( name ) => ( { value : name , label : name } ) ) }
114- value = { filters . pipelineName ? { value : filters . pipelineName , label : filters . pipelineName } : null }
121+ options = { PIPELINE_OPTIONS }
122+ value = { filters . pipelineName }
115123 placeholder = 'All Pipelines'
116- onChange = { ( selected ) => {
117- if ( selected === null ) {
124+ onChange = { ( selectedPipeline ) => {
125+ if ( selectedPipeline === null ) {
126+ // Clear the pipeline name filter
127+ handleInputChange ( 'pipelineName' , '' ) ;
118128 return ;
119129 }
120- // @ts -ignore
121- handleInputChange ( 'pipelineName' , selected . value ) ;
130+ handleInputChange ( 'pipelineName' , selectedPipeline . value ) ;
122131 } }
123132 isClearable
124133 styles = { { container : ( base ) => ( { ...base , minWidth : '150px' } ) } }
@@ -129,14 +138,15 @@ export const TableFilters: React.FC<TableFiltersProps> = ({ filters, onFilterCha
129138 style = { {
130139 display : 'flex' ,
131140 flex : '0 0 auto' ,
141+ justifyContent : 'center' ,
132142 } }
133143 >
134144 < ButtonPrimary
135145 disabled = { ! hasActiveFilters }
136146 onClick = { handleClearFilters }
137- style = { {
138- height : '2.33rem' ,
139- } }
147+ // style={{
148+ // height: '2.33rem',
149+ // }}
140150 >
141151 Clear
142152 </ ButtonPrimary >
0 commit comments