//
// SPDX-License-Identifier: AGPL-3.0
-export class SearchQueriesService {
+export class SearchService {
private recentQueries: string[] = this.getRecentQueries();
private savedQueries: string[] = this.getSavedQueries();
import { LogService } from './log-service/log-service';
import { ApiActions } from "~/services/api/api-actions";
import { WorkflowService } from "~/services/workflow-service/workflow-service";
-import { SearchQueriesService } from '~/services/search-service/search-service';
+import { SearchService } from '~/services/search-service/search-service';
export type ServiceRepository = ReturnType<typeof createServices>;
const collectionFilesService = new CollectionFilesService(collectionService);
const favoriteService = new FavoriteService(linkService, groupsService);
const tagService = new TagService(linkService);
- const searchQueriesService = new SearchQueriesService();
+ const searchService = new SearchService();
return {
ancestorsService,
linkService,
logService,
projectService,
- searchQueriesService,
+ searchService,
tagService,
userService,
webdavClient,
export const goToView = (currentView: string) => searchBarActions.SET_CURRENT_VIEW(currentView);
export const saveRecentQuery = (query: string) =>
- (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
- services.searchQueriesService.saveRecentQuery(query);
- };
+ (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) =>
+ services.searchService.saveRecentQuery(query);
+
export const loadRecentQueries = () =>
(dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
- const recentSearchQueries = services.searchQueriesService.getRecentQueries();
+ const recentSearchQueries = services.searchService.getRecentQueries();
return recentSearchQueries || [];
};
export const saveQuery = (query: string) =>
(dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
- services.searchQueriesService.saveQuery(query);
- dispatch(searchBarActions.SET_SAVED_QUERIES(services.searchQueriesService.getSavedQueries()));
+ services.searchService.saveQuery(query);
+ dispatch(searchBarActions.SET_SAVED_QUERIES(services.searchService.getSavedQueries()));
};
export const deleteSavedQuery = (id: number) =>
(dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
- services.searchQueriesService.deleteSavedQuery(id);
- const savedSearchQueries = services.searchQueriesService.getSavedQueries();
- dispatch(searchBarActions.SET_SAVED_QUERIES(services.searchQueriesService.getSavedQueries()));
+ services.searchService.deleteSavedQuery(id);
+ const savedSearchQueries = services.searchService.getSavedQueries();
+ dispatch(searchBarActions.SET_SAVED_QUERIES(savedSearchQueries));
return savedSearchQueries || [];
};
+export const openSearchView = () =>
+ (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
+ dispatch(searchBarActions.OPEN_SEARCH_VIEW());
+ const savedSearchQueries = services.searchService.getSavedQueries();
+ dispatch(searchBarActions.SET_SAVED_QUERIES(savedSearchQueries));
+ };
+
+
export const searchData = (searchValue: string) =>
async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
dispatch(searchBarActions.SET_SEARCH_VALUE(searchValue));
open: false,
searchResults: [],
searchValue: '',
- savedQueries: JSON.parse(localStorage.getItem('savedQueries') || '[]') as string[]
+ savedQueries: ['']
};
export const searchBarReducer = (state = initialState, action: SearchBarActions): SearchBar =>
<FormControlLabel
control={
<Checkbox
- checked={false}
+ checked={true}
value="true"
color="primary"
/>
SearchBarSaveSearchField, SearchBarQuerySearchField
} from '~/views-components/form-fields/search-bar-form-fields';
-type CssRules = 'form' | 'container' | 'closeIcon' | 'label' | 'buttonWrapper' | 'button' | 'circularProgress';
+type CssRules = 'form' | 'container' | 'closeIcon' | 'label' | 'buttonWrapper' | 'button' | 'circularProgress' | 'searchView';
const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
form: {
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`
}
});
}),
withStyles(styles))(
({ classes, setView, handleSubmit, invalid, submitting, pristine }: SearchBarAdvancedViewProps) =>
- <Paper>
+ <Paper className={classes.searchView}>
<form onSubmit={handleSubmit} className={classes.form}>
<Grid container direction="column" justify="flex-start" alignItems="flex-start">
<Grid item xs={12} container className={classes.container}>
onSearch: (value: string) => any;
debounce?: number;
onSetView: (currentView: string) => void;
- openView: () => void;
closeView: () => void;
saveRecentQuery: (query: string) => void;
loadRecentQueries: () => string[];
saveQuery: (query: string) => void;
deleteSavedQuery: (id: number) => void;
+ openSearchView: () => void;
}
type SearchBarProps = SearchBarDataProps & SearchBarActionProps & WithStyles<CssRules>;
timeout: number;
render() {
- const { classes, currentView, openView, closeView, isPopoverOpen } = this.props;
+ const { classes, currentView, openSearchView, closeView, isPopoverOpen } = this.props;
return <ClickAwayListener onClickAway={() => closeView()}>
<Paper className={isPopoverOpen ? classes.containerSearchViewOpened : classes.container} >
<form onSubmit={this.handleSubmit} className={classes.searchBar}>
value={this.state.value}
fullWidth={true}
disableUnderline={true}
- onClick={() => openView()}
+ onClick={() => openSearchView()}
endAdornment={
<InputAdornment position="end">
<Tooltip title='Search'>
deleteSavedQuery,
saveRecentQuery,
loadRecentQueries,
- saveQuery
+ saveQuery,
+ openSearchView
} from '~/store/search-bar/search-bar-actions';
import { SearchBarView } from '~/views-components/search-bar/search-bar-view';
const mapDispatchToProps = (dispatch: Dispatch) => ({
onSearch: (valueSearch: string) => dispatch<any>(searchData(valueSearch)),
onSetView: (currentView: string) => dispatch(goToView(currentView)),
- openView: () => dispatch<any>(searchBarActions.OPEN_SEARCH_VIEW()),
closeView: () => dispatch<any>(searchBarActions.CLOSE_SEARCH_VIEW()),
saveRecentQuery: (query: string) => dispatch<any>(saveRecentQuery(query)),
loadRecentQueries: () => dispatch<any>(loadRecentQueries()),
saveQuery: (query: string) => dispatch<any>(saveQuery(query)),
- deleteSavedQuery: (id: number) => dispatch<any>(deleteSavedQuery(id))
+ deleteSavedQuery: (id: number) => dispatch<any>(deleteSavedQuery(id)),
+ openSearchView: () => dispatch<any>(openSearchView())
});
export const SearchBar = connect(mapStateToProps, mapDispatchToProps)(SearchBarView);
\ No newline at end of file