Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Client - Filter form sends requests when the value field is changed #219

Merged
merged 53 commits into from
Jun 14, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
39e4b7c
conf proxy
luorlandini Mar 24, 2021
0e14896
Merge remote-tracking branch 'upstream/master'
luorlandini Apr 1, 2021
a284a3c
Merge remote-tracking branch 'upstream/master'
luorlandini Apr 7, 2021
213a635
Merge remote-tracking branch 'upstream/master'
luorlandini Apr 12, 2021
42d8965
Merge remote-tracking branch 'upstream/master'
luorlandini Apr 15, 2021
2cb0c3a
Merge remote-tracking branch 'upstream/master'
luorlandini Apr 16, 2021
67fe726
Merge remote-tracking branch 'upstream/master'
luorlandini Apr 16, 2021
efc1bcd
Merge remote-tracking branch 'upstream/master'
luorlandini Apr 20, 2021
2e4ebe3
Merge remote-tracking branch 'upstream/master'
luorlandini Apr 20, 2021
37f6ae8
Merge remote-tracking branch 'upstream/master'
luorlandini Apr 26, 2021
e56da8b
Merge remote-tracking branch 'upstream/master'
luorlandini May 3, 2021
d384237
Merge remote-tracking branch 'upstream/master'
luorlandini May 3, 2021
8cfb1ca
Merge remote-tracking branch 'upstream/master'
luorlandini May 6, 2021
19be961
Merge remote-tracking branch 'upstream/master'
luorlandini May 10, 2021
7a646a3
Merge remote-tracking branch 'upstream/master'
luorlandini May 12, 2021
0ff1b62
Merge remote-tracking branch 'upstream/master'
luorlandini May 17, 2021
f328a01
Merge remote-tracking branch 'upstream/master'
luorlandini May 19, 2021
7ae2c74
Merge remote-tracking branch 'upstream/master'
luorlandini May 24, 2021
8381427
Merge remote-tracking branch 'upstream/master'
luorlandini May 24, 2021
73330c2
Merge remote-tracking branch 'upstream/master'
luorlandini May 25, 2021
2b7c30c
Merge remote-tracking branch 'upstream/master'
luorlandini May 25, 2021
936768e
Merge remote-tracking branch 'upstream/master'
luorlandini May 26, 2021
7361c0a
send api request onChange field
luorlandini Jun 1, 2021
e8a443b
disable sendApi onChange for mobile
luorlandini Jun 1, 2021
eada441
add debounce to request
luorlandini Jun 1, 2021
42725df
set form with query string already set
luorlandini Jun 1, 2021
d12a87a
add flag filterForm sumbitOnChange
luorlandini Jun 1, 2021
cbd7f6c
check isMobile and submitOnChange
luorlandini Jun 1, 2021
d2dc0b6
add test submitOnChangeField flag
luorlandini Jun 1, 2021
f78ec1b
add debounce time in config
luorlandini Jun 1, 2021
281a024
default props and query string mobile
luorlandini Jun 3, 2021
b9a8957
add comment
luorlandini Jun 3, 2021
90c8799
doc readme
luorlandini Jun 3, 2021
4e57c0e
mobile query string already set
luorlandini Jun 3, 2021
7f9f6bb
test submitOnChangeField flag
luorlandini Jun 3, 2021
510fd20
mobile field query string
luorlandini Jun 3, 2021
672e694
rm cong local config
luorlandini Jun 3, 2021
49db89b
favorite field
luorlandini Jun 9, 2021
b0af8c8
host
luorlandini Jun 9, 2021
1403e69
land on favorite param
luorlandini Jun 9, 2021
9555c61
Merge remote-tracking branch 'upstream/master'
luorlandini Jun 10, 2021
547cd95
Merge remote-tracking branch 'upstream/master'
luorlandini Jun 10, 2021
e7b5852
Merge branch 'master' into 201_filter_form_1
luorlandini Jun 11, 2021
48cb586
Merge remote-tracking branch 'upstream/master'
luorlandini Jun 11, 2021
068ef8a
Merge branch 'master' into 201_filter_form_1
luorlandini Jun 11, 2021
a5ff128
rm configurable form submit
luorlandini Jun 11, 2021
f28eca8
rm conf
luorlandini Jun 11, 2021
5fb0ddd
checkbox bootstrap
luorlandini Jun 11, 2021
10e9f2c
rm unuse doc
luorlandini Jun 11, 2021
6157722
refill form for mobile
luorlandini Jun 11, 2021
4d49425
rm timedebounce
luorlandini Jun 11, 2021
5ddbdb7
rm isSmallDevice
luorlandini Jun 14, 2021
a304d3c
rm timedebounce
luorlandini Jun 14, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import ReactSelect from 'react-select';
import Message from '@mapstore/framework/components/I18N/Message';
import localizedProps from '@mapstore/framework/components/misc/enhancers/localizedProps';
import { getFilterLabelById } from '@js/utils/GNSearchUtils';

const SelectSync = localizedProps('placeholder')(ReactSelect);
const SelectAsync = localizedProps('placeholder')(ReactSelect.Async);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ import FaIcon from '@js/components/home/FaIcon';
import isEqual from 'lodash/isEqual';
import FilterByExtent from './FilterByExtent';
import FilterItems from './FilterItems';

import debounce from 'lodash/debounce';
import isEmpty from 'lodash/isEmpty';
/**
* FilterForm component allows to configure a list of field that can be used to apply filter on the page
* @name FilterForm
Expand All @@ -31,7 +32,9 @@ function FilterForm({
onChange,
onClose,
extentProps,
suggestionsRequestTypes
suggestionsRequestTypes,
submitOnChangeField,
timeDebounce
}) {

const [values, setValues] = useState({});
Expand All @@ -42,6 +45,7 @@ function FilterForm({
values
};


useEffect(() => {
const newValues = state.current.fields.reduce((acc, { id: formId, suggestionsRequestKey }) => {
const filterKey = suggestionsRequestKey
Expand All @@ -55,13 +59,18 @@ function FilterForm({
[filterKey]: (filterKey) ? castArray(state.current.query[filterKey]) : []
};
}, {});
setValues({
...newValues,
...(query?.extent && { extent: query.extent }),
...(query?.f && { f: query.f })
});

((!submitOnChangeField
|| (!isEmpty(newValues) && isEmpty(values))
|| (!isEmpty(query) && isEmpty(values))))
&& setValues({
...newValues,
...(query?.extent && { extent: query.extent }),
...(query?.f && { f: query.f })
});
}, [query]);


function handleApply() {
onChange(values);
}
Expand All @@ -83,6 +92,12 @@ function FilterForm({
onChange(emptyValues);
}

useEffect( () => {
submitOnChangeField
&& onChange(values);
},
[values]);

return (
<div className="gn-filter-form" style={styleContainerForm} >
<div className="gn-filter-form-header">
Expand Down Expand Up @@ -117,24 +132,25 @@ function FilterForm({
queryExtent={query.extent}
layers={extentProps?.layers}
vectorLayerStyle={extentProps?.style}
onChange={({extent}) =>
onChange={debounce(({extent}) =>
setValues({
...values,
extent
})
}), timeDebounce)
}
/>
</form>
</div>
</div>
<div className="gn-filter-form-footer">
<Button
{(!submitOnChangeField) && <Button
size="sm"
variant="primary"
onClick={handleApply}
>
<Message msgId="gnhome.apply"/>
</Button>
}
<Button
size="sm"
variant="default"
Expand All @@ -156,15 +172,20 @@ FilterForm.defaultProps = {
onChange: PropTypes.func,
onClose: PropTypes.func,
extentProps: PropTypes.object,
suggestionsRequestTypes: PropTypes.object
suggestionsRequestTypes: PropTypes.object,
submitOnChangeField: PropTypes.bool,
timeDebounce: PropTypes.number

};

FilterForm.defaultProps = {
query: {},
fields: [],
onChange: () => {},
onClose: () => {},
suggestionsRequestTypes: {}
suggestionsRequestTypes: {},
submitOnChangeField: true,
timeDebounce: 500
};

const arePropsEqual = (prevProps, nextProps) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ describe('FiltersForm component', () => {
done(e);
}
};
ReactDOM.render( <FiltersForm show onChange={onChange}/>, document.getElementById("container"));
ReactDOM.render( <FiltersForm show onChange={onChange} submitOnChangeField={false} />, document.getElementById("container"));
const filterFormNode = document.querySelector('.gn-filter-form');
expect(filterFormNode).toBeTruthy();
const footerButtons = filterFormNode.querySelectorAll('.gn-filter-form-footer > button');
Expand All @@ -53,7 +53,7 @@ describe('FiltersForm component', () => {
done(e);
}
};
ReactDOM.render( <FiltersForm show onChange={onChange}/>, document.getElementById("container"));
ReactDOM.render( <FiltersForm show onChange={onChange} submitOnChangeField={false} />, document.getElementById("container"));
const filterFormNode = document.querySelector('.gn-filter-form');
expect(filterFormNode).toBeTruthy();
const footerButtons = filterFormNode.querySelectorAll('.gn-filter-form-footer > button');
Expand All @@ -69,12 +69,22 @@ describe('FiltersForm component', () => {
done(e);
}
};
ReactDOM.render( <FiltersForm show onClose={onClose}/>, document.getElementById("container"));
ReactDOM.render( <FiltersForm show onClose={onClose} />, document.getElementById("container"));
const filterFormNode = document.querySelector('.gn-filter-form');
expect(filterFormNode).toBeTruthy();
const footerButtons = filterFormNode.querySelectorAll('.gn-filter-form-header > button');
expect(footerButtons.length).toBe(1);
const closeButton = footerButtons[0];
Simulate.click(closeButton);
});

it('should the apply button hidden with submitOnChangeField flag', () => {
ReactDOM.render( <FiltersForm show submitOnChangeField />, document.getElementById("container"));
const filterFormNode = document.querySelector('.gn-filter-form');
expect(filterFormNode).toBeTruthy();
const footerButtons = filterFormNode.querySelectorAll('.gn-filter-form-footer > button');
expect(footerButtons.length).toBe(1);

});

});
1 change: 1 addition & 0 deletions geonode_mapstore_client/client/js/routes/Home.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,7 @@ function Home({
query={query}
onChange={isSmallDevice && handleUpdateSmallDevice || handleUpdate}
onClose={handleShowFilterForm}
submitOnChangeField={!isSmallDevice}
/>

</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,15 @@
"filter{is_approved}": false
},
"authenticated": true
},
{
"id": "favorite",
"labelId": "gnhome.favorites",
"type": "filter",
"query": {
"favorite": true
},
"authenticated": true
}
]
},
Expand Down