X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/2cfb56ef5060cbad461062690fad650f15c49731..a94211e27f3eebaea55ccba096869f70161e74ad:/src/views-components/search-bar/search-bar-advanced-view.tsx diff --git a/src/views-components/search-bar/search-bar-advanced-view.tsx b/src/views-components/search-bar/search-bar-advanced-view.tsx index 4d9bd97b..10e535c5 100644 --- a/src/views-components/search-bar/search-bar-advanced-view.tsx +++ b/src/views-components/search-bar/search-bar-advanced-view.tsx @@ -11,20 +11,20 @@ import { SEARCH_BAR_ADVANCE_FORM_NAME, saveQuery } from '~/store/search-bar/sear import { ArvadosTheme } from '~/common/custom-theme'; import { CloseIcon } from '~/components/icon/icon'; import { SearchBarAdvanceFormData } from '~/models/search-bar'; -import { - SearchBarTypeField, SearchBarClusterField, SearchBarProjectField, SearchBarTrashField, - SearchBarDataFromField, SearchBarDataToField, SearchBarKeyField, SearchBarValueField, +import { + SearchBarTypeField, SearchBarClusterField, SearchBarProjectField, SearchBarTrashField, + SearchBarDateFromField, SearchBarDateToField, SearchBarPropertiesField, SearchBarSaveSearchField, SearchBarQuerySearchField } from '~/views-components/form-fields/search-bar-form-fields'; -type CssRules = 'container' | 'closeIcon' | 'label' | 'buttonWrapper' +type CssRules = 'container' | 'closeIcon' | 'label' | 'buttonWrapper' | 'button' | 'circularProgress' | 'searchView' | 'selectGrid'; const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ container: { padding: theme.spacing.unit * 2, borderBottom: `1px solid ${theme.palette.grey["200"]}` - }, + }, closeIcon: { position: 'absolute', top: '12px', @@ -60,30 +60,49 @@ const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ } }); -interface SearchBarAdvancedViewDataProps { +interface SearchBarAdvancedViewFormDataProps { submitting: boolean; invalid: boolean; pristine: boolean; } -interface SearchBarAdvancedViewActionProps { - setView: (currentView: string) => void; +export interface SearchBarAdvancedViewDataProps { + tags: any; +} + +export interface SearchBarAdvancedViewActionProps { + onSetView: (currentView: string) => void; saveQuery: (data: SearchBarAdvanceFormData) => void; } -type SearchBarAdvancedViewProps = SearchBarAdvancedViewActionProps & SearchBarAdvancedViewDataProps +type SearchBarAdvancedViewProps = SearchBarAdvancedViewActionProps & SearchBarAdvancedViewDataProps; + +type SearchBarAdvancedViewFormProps = SearchBarAdvancedViewProps & SearchBarAdvancedViewFormDataProps & InjectedFormProps & WithStyles; +const validate = (values: any) => { + const errors: any = {}; + + if (values.dateFrom && values.dateTo) { + if (new Date(values.dateFrom).getTime() > new Date(values.dateTo).getTime()) { + errors.dateFrom = 'Invalid date'; + } + } + + return errors; +}; + export const SearchBarAdvancedView = compose( - reduxForm({ + reduxForm({ form: SEARCH_BAR_ADVANCE_FORM_NAME, + validate, onSubmit: (data: SearchBarAdvanceFormData, dispatch: Dispatch) => { dispatch(saveQuery(data)); dispatch(reset(SEARCH_BAR_ADVANCE_FORM_NAME)); } }), withStyles(styles))( - ({ classes, setView, handleSubmit, invalid, submitting, pristine }: SearchBarAdvancedViewProps) => + ({ classes, onSetView, handleSubmit, submitting, invalid, pristine, tags }: SearchBarAdvancedViewFormProps) =>
@@ -112,37 +131,21 @@ export const SearchBarAdvancedView = compose( - setView(SearchView.BASIC)} className={classes.closeIcon}> + onSetView(SearchView.BASIC)} className={classes.closeIcon}> - Data modified + Date modified - + - + - - Properties - - - - - - - - - - + @@ -155,6 +158,8 @@ export const SearchBarAdvancedView = compose(