diff --git a/app-facet-search/src/App.js b/app-facet-search/src/App.js
index 8c1d4f9..d68d40b 100644
--- a/app-facet-search/src/App.js
+++ b/app-facet-search/src/App.js
@@ -18,46 +18,39 @@ class FacetSearch extends React.Component {
is_enable: true,
list_title: {},
list_facet: {},
+ list_order: {}
};
- this.getTitle = this.getTitle.bind(this);
+ this.getTitleAndOrder = this.getTitleAndOrder.bind(this);
this.get_facet_search_list = this.get_facet_search_list.bind(this);
this.convertData = this.convertData.bind(this);
- this.getUrlVars = this.getUrlVars.bind(this);
}
- getTitle() {
+ getTitleAndOrder() {
let titleLst = {};
- fetch("/facet-search/get-title", {method: "POST"})
+ let orderLst = {};
+ fetch("/facet-search/get-title-and-order", {method: "POST"})
.then((r) => r.json())
.then((response) => {
if (response.status) {
- titleLst = response.data;
+ titleLst = response.data.titles;
+ orderLst =response.data.order;
}
this.setState({ list_title: titleLst });
+ this.setState({ list_order: orderLst });
});
}
get_facet_search_list() {
- let search = window.location.search;
- let url = "/api/records/";
- let params = this.getUrlVars();
- if (params.search_type && String(params.search_type) === "2") {
- url = "/api/index/";
- }
- fetch(url + search)
+ let search = new URLSearchParams(window.location.search);
+ let url = search.get('search_type') == 2 ? "/api/index/" : "/api/records/";
+ fetch(url + '?' + search.toString())
.then((r) => r.json())
.then((res) => {
- if (params.search_type && String(params.search_type) === "2") {
+ if (search.get('search_type') == 2) {
// Index faceted search
- const data =
- res &&
- res.aggregations &&
- res.aggregations.path &&
- res.aggregations.path.buckets &&
- res.aggregations.path.buckets[0]
- ? res.aggregations.path.buckets[0]
- : {};
- this.convertData(data && data[0] ? data[0] : {});
+ let aggregations = res && res.aggregations && res.aggregations.aggregations
+ ? res.aggregations.aggregations[0] : {};
+ this.convertData(aggregations);
} else {
// default faceted search
this.convertData(res && res.aggregations ? res.aggregations : {});
@@ -65,32 +58,29 @@ class FacetSearch extends React.Component {
});
}
- getUrlVars() {
- let vars = {};
- let pattern = /[?&]+([^=&]+)=([^&]*)/gi;
- window.location.href.replace(pattern, function (m, key, value) {
- vars[key] = value;
- });
- return vars;
- }
-
convertData(data) {
let list_facet = {};
+ const {list_order} = this.state;
if (data) {
- Object.keys(data).map(function (name, k) {
- let val = data[name][name] ? data[name][name] : data[name];
- let hasBuckets = val["key"] && val["key"].hasOwnProperty("buckets");
- hasBuckets = val.hasOwnProperty("buckets") || hasBuckets;
- if (hasBuckets) {
- list_facet[name] = val[name] ? val[name] : val;
- }
+ Object.keys(list_order).map(function (order, key_order) {
+ list_facet[list_order[order]] = {'buckets': []};
+ Object.keys(data).map(function (name, k) {
+ if (list_order[order] == name) {
+ let val = data[name][name] ? data[name][name] : data[name];
+ let hasBuckets = val["key"] && val["key"].hasOwnProperty("buckets");
+ hasBuckets = val.hasOwnProperty("buckets") || hasBuckets;
+ if (hasBuckets) {
+ list_facet[name] = val[name] ? val[name] : val;
+ }
+ }
+ });
});
}
- this.setState({ list_facet: list_facet });
+ this.setState({list_facet: list_facet});
}
componentDidMount() {
- this.getTitle();
+ this.getTitleAndOrder();
this.get_facet_search_list();
}
diff --git a/app-facet-search/src/components/RangeFacet.jsx b/app-facet-search/src/components/RangeFacet.jsx
index 51711bb..e05437c 100644
--- a/app-facet-search/src/components/RangeFacet.jsx
+++ b/app-facet-search/src/components/RangeFacet.jsx
@@ -34,10 +34,10 @@ function RangeFacet({ item, nameshow, name, key, labels }) {