export type SearchBarActions = UnionOf<typeof searchBarActions>;
+export interface SearchBarAdvanceFormData {
+ type?: GroupContentsResource;
+ cluster?: string;
+ project?: string;
+ dataFrom: string;
+ dataTo: string;
+ searchQuery: string;
+}
+
+export const SEARCH_BAR_ADVANCE_FORM_NAME = 'searchBarAdvanceFormName';
+
export const goToView = (currentView: string) => searchBarActions.SET_CURRENT_VIEW(currentView);
- export const searchData = (searchValue: string) =>
+ export const saveRecentQuery = (query: string) =>
+ (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
+ services.searchQueriesService.saveRecentQuery(query);
+ };
+
+ export const loadRecentQueries = () =>
+ (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
+ const recentSearchQueries = services.searchQueriesService.getRecentQueries();
+ return recentSearchQueries || [];
+ };
+
+ export const searchData = (searchValue: string) =>
async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
dispatch(searchBarActions.SET_SEARCH_VALUE(searchValue));
dispatch(searchBarActions.SET_SEARCH_RESULTS([]));
setView: (currentView: string) => void;
}
-export const SearchBarAdvancedView = withStyles(styles)(
- ({ classes, setView }: SearchBarAdvancedViewProps & WithStyles<CssRules>) =>
- <Paper className={classes.searchView}>
- <List component="nav" className={classes.list}>
- <RecentQueriesItem text='ADVANCED VIEW' />
- </List>
- <Button onClick={() => setView(SearchView.BASIC)}>Back</Button>
- </Paper>
-);
+type SearchBarAdvancedViewProps = SearchBarAdvancedViewActionProps & SearchBarAdvancedViewDataProps
+ & InjectedFormProps & WithStyles<CssRules>;
+
+export const SearchBarAdvancedView = compose(
+ reduxForm<SearchBarAdvanceFormData, SearchBarAdvancedViewActionProps>({
+ form: SEARCH_BAR_ADVANCE_FORM_NAME,
+ onSubmit: (data: SearchBarAdvanceFormData, dispatch: Dispatch) => {
+ console.log('data: ', data);
+ dispatch(reset(SEARCH_BAR_ADVANCE_FORM_NAME));
+ }
+ }),
+ withStyles(styles))(
+ ({ classes, setView, handleSubmit, invalid, submitting, pristine }: SearchBarAdvancedViewProps) =>
+ <Paper>
+ <form onSubmit={handleSubmit} className={classes.form}>
+ <Grid container direction="column" justify="flex-start" alignItems="flex-start">
+ <Grid item xs={12} container className={classes.container}>
+ <Grid item container xs={12}>
+ <Grid item xs={2} className={classes.label}>Type</Grid>
+ <Grid item xs={5}>
+ <SearchBarTypeField />
+ </Grid>
+ </Grid>
+ <Grid item container xs={12}>
+ <Grid item xs={2} className={classes.label}>Cluster</Grid>
+ <Grid item xs={5}>
+ <SearchBarClusterField />
+ </Grid>
+ </Grid>
+ <Grid item container xs={12}>
+ <Grid item xs={2} className={classes.label}>Project</Grid>
+ <Grid item xs={5}>
+ <SearchBarProjectField />
+ </Grid>
+ </Grid>
+ <Grid item container xs={12}>
+ <Grid item xs={2} className={classes.label} />
+ <Grid item xs={5}>
+ <SearchBarTrashField />
+ </Grid>
+ </Grid>
+ <IconButton onClick={() => setView(SearchView.BASIC)} className={classes.closeIcon}>
+ <CloseIcon />
+ </IconButton>
+ </Grid>
+ <Grid container item xs={12} className={classes.container}>
+ <Grid item xs={2} className={classes.label}>Data modified</Grid>
+ <Grid item xs={3}>
+ <SearchBarDataFromField />
+ </Grid>
+ <Grid item xs={3}>
+ <SearchBarDataToField />
+ </Grid>
+ </Grid>
+ <Grid container item xs={12} className={classes.container}>
+ <Grid container item xs={12}>
+ <Grid item xs={2} className={classes.label}>Properties</Grid>
+ <Grid item xs={4}>
+ <SearchBarKeyField />
+ </Grid>
+ <Grid item xs={4}>
+ <SearchBarValueField />
+ </Grid>
+ <Grid container item xs={2} justify='flex-end' alignItems="center">
+ <Button className={classes.button}
+ color="primary"
+ size='small'
+ variant="contained">
+ Add
+ </Button>
+ </Grid>
+ </Grid>
+ <Grid container item xs={12} justify="flex-start" alignItems="center">
+ <Grid item xs={2} className={classes.label} />
+ <Grid item xs={4}>
+ <SearchBarSaveSearchField />
+ </Grid>
+ <Grid item xs={4}>
+ <SearchBarQuerySearchField />
+ </Grid>
+ </Grid>
+ <Grid container item xs={12} justify='flex-end'>
+ <div className={classes.buttonWrapper}>
+ <Button type="submit" className={classes.button}
+ color="primary"
+ size='small'
+ variant="contained">
+ Search
+ </Button>
+ {submitting && <CircularProgress size={20} className={classes.circularProgress} />}
+ </div>
+ </Grid>
+ </Grid>
+ </Grid>
+ </form>
- </Paper>);
++ </Paper>);