X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3a530766c12a5677e6b5f8c54cd3a61f8e6934b4..13a00ada6b087c99235ce59a4247d57970e30f15:/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 ef13547c74..c956ca03e4 100644 --- a/src/views-components/search-bar/search-bar-advanced-view.tsx +++ b/src/views-components/search-bar/search-bar-advanced-view.tsx @@ -3,30 +3,162 @@ // SPDX-License-Identifier: AGPL-3.0 import * as React from 'react'; -import { Paper, StyleRulesCallback, withStyles, WithStyles, List, Button } from '@material-ui/core'; +import { reduxForm, reset, InjectedFormProps } from 'redux-form'; +import { compose, Dispatch } from 'redux'; +import { Paper, StyleRulesCallback, withStyles, WithStyles, Button, Grid, IconButton, CircularProgress } from '@material-ui/core'; import { SearchView } from '~/store/search-bar/search-bar-reducer'; -import { RenderRecentQueries } from '~/views-components/search-bar/search-bar-view'; +import { SEARCH_BAR_ADVANCE_FORM_NAME, SearchBarAdvanceFormData } from '~/store/search-bar/search-bar-actions'; +import { ArvadosTheme } from '~/common/custom-theme'; +import { CloseIcon } from '~/components/icon/icon'; +import { + SearchBarTypeField, SearchBarClusterField, SearchBarProjectField, SearchBarTrashField, + SearchBarDataFromField, SearchBarDataToField, SearchBarKeyField, SearchBarValueField, + SearchBarSaveSearchField, SearchBarQuerySearchField +} from '~/views-components/form-fields/search-bar-form-fields'; -type CssRules = 'list'; +type CssRules = 'form' | 'container' | 'closeIcon' | 'label' | 'buttonWrapper' | 'button' | 'circularProgress' | 'searchView'; -const styles: StyleRulesCallback = theme => { - return { - list: { - padding: '0px' - } - }; -}; +const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ + form: { + + }, + container: { + padding: theme.spacing.unit * 3, + borderBottom: `1px solid ${theme.palette.grey["200"]}` + }, + closeIcon: { + position: 'absolute', + top: '12px', + right: '12px' + }, + label: { + color: theme.palette.grey["500"], + fontSize: '0.8125rem', + alignSelf: 'center' + }, + buttonWrapper: { + paddingTop: '14px', + position: 'relative', + }, + button: { + boxShadow: 'none' + }, + circularProgress: { + position: 'absolute', + top: -9, + bottom: 0, + left: 0, + right: 0, + margin: 'auto' + }, + searchView: { + color: theme.palette.common.black, + borderRadius: `0 0 ${theme.spacing.unit / 4}px ${theme.spacing.unit / 4}px` + } +}); + +interface SearchBarAdvancedViewDataProps { + submitting: boolean; + invalid: boolean; + pristine: boolean; +} -interface SearchBarAdvancedViewProps { +interface SearchBarAdvancedViewActionProps { setView: (currentView: string) => void; } -export const SearchBarAdvancedView = withStyles(styles)( - ({ classes, setView }: SearchBarAdvancedViewProps & WithStyles) => - - - - - - -); \ No newline at end of file +type SearchBarAdvancedViewProps = SearchBarAdvancedViewActionProps & SearchBarAdvancedViewDataProps + & InjectedFormProps & WithStyles; + +export const SearchBarAdvancedView = compose( + reduxForm({ + form: SEARCH_BAR_ADVANCE_FORM_NAME, + onSubmit: (data: SearchBarAdvanceFormData, dispatch: Dispatch) => { + dispatch(reset(SEARCH_BAR_ADVANCE_FORM_NAME)); + } + }), + withStyles(styles))( + ({ classes, setView, handleSubmit, invalid, submitting, pristine }: SearchBarAdvancedViewProps) => + +
+ + + + Type + + + + + + Cluster + + + + + + Project + + + + + + + + + + + setView(SearchView.BASIC)} className={classes.closeIcon}> + + + + + Data modified + + + + + + + + + + Properties + + + + + + + + + + + + + + + + + + + + +
+ + {submitting && } +
+
+
+
+ +
);