cspace-ui
Version:
CollectionSpace user interface for browsers
71 lines (70 loc) • 2.57 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.setSearchPageKeyword = exports.setSearchPageAdvanced = exports.initiateSearch = exports.clearSearchPage = void 0;
var _get = _interopRequireDefault(require("lodash/get"));
var _qs = _interopRequireDefault(require("qs"));
var _reducers = require("../reducers");
var _searchHelpers = require("../helpers/searchHelpers");
var _actionCodes = require("../constants/actionCodes");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const clearSearchPage = () => ({
type: _actionCodes.CLEAR_SEARCH_PAGE
});
exports.clearSearchPage = clearSearchPage;
const setSearchPageKeyword = value => ({
type: _actionCodes.SET_SEARCH_PAGE_KEYWORD,
payload: value
});
exports.setSearchPageKeyword = setSearchPageKeyword;
const setSearchPageAdvanced = condition => (dispatch, getState) => {
const recordType = (0, _reducers.getSearchPageRecordType)(getState());
dispatch({
type: _actionCodes.SET_SEARCH_PAGE_ADVANCED,
payload: condition,
meta: {
recordType
}
});
};
exports.setSearchPageAdvanced = setSearchPageAdvanced;
const initiateSearch = (config, push) => (dispatch, getState) => {
const state = getState();
const recordType = (0, _reducers.getSearchPageRecordType)(state);
const vocabulary = (0, _reducers.getSearchPageVocabulary)(state, recordType);
const keyword = (0, _reducers.getSearchPageKeyword)(state);
const advancedSearchCondition = (0, _reducers.getSearchPageAdvanced)(state);
const query = {};
const vocabularyPath = vocabulary ? `/${vocabulary}` : '';
const pathname = `/list/${recordType}${vocabularyPath}`;
const kw = keyword ? keyword.trim() : '';
if (kw) {
query.kw = kw;
}
const fields = (0, _get.default)(config, ['recordTypes', recordType, 'fields']);
const condition = (0, _searchHelpers.normalizeCondition)(fields, advancedSearchCondition);
if (condition) {
query.as = JSON.stringify(condition.toJS());
}
const queryString = _qs.default.stringify(query);
push({
pathname,
search: `?${queryString}`,
state: {
originSearchPage: {
// Keep the search descriptor a plain object, not an Immutable, so that it can be stored in
// location state.
searchDescriptor: {
recordType,
vocabulary,
searchQuery: {
as: advancedSearchCondition && advancedSearchCondition.toJS(),
kw: keyword
}
}
}
}
});
};
exports.initiateSearch = initiateSearch;
;