in genie-ui/src/main/web/scripts/components/SearchForm.js [35:66]
componentWillReceiveProps(nextProps) {
const { query } = nextProps;
let updateState = false;
// check if query <-> form state are in sync
// if not then update form state
for (const key of Object.keys(query)) {
if (!this.props.query || query[key] !== this.props.query[key]) {
updateState = true;
break;
}
}
if (updateState) {
const { formFields } = this.getDefaultFormState(nextProps);
for (const name of Object.keys(formFields)) {
// update form fields from query object
if (query[name]) {
if (name === "sort") {
formFields.sortOrder.value = query[name].split(",").pop();
}
formFields[name].value = query[name];
} else if (
formFields[name].queryMapping &&
this.includes(formFields[name].queryMapping, query)
) {
const { mapper, queryMapping } = formFields[name];
const queryValues = queryMapping.map(x => query[x]);
formFields[name].value = queryValues.map(mapper);
}
}
this.setState({ formFields });
}
}