@bento-core/facet-filter 1.0.1-ccdihub.9 → 1.0.1-ccdiintegrated.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/FacetFilterController.js +34 -7
- package/dist/FacetFilterView.js +21 -9
- package/dist/NewFacetFilterController.js +192 -0
- package/dist/NewFacetFilterView.js +50 -0
- package/dist/components/facet/FacetModal.js +101 -0
- package/dist/components/facet/FacetStyle.js +52 -3
- package/dist/components/facet/FacetView.js +49 -11
- package/dist/components/facet/ModalStyle.js +121 -0
- package/dist/components/facet/NewFacetStyle.js +218 -0
- package/dist/components/facet/NewFacetView.js +227 -0
- package/dist/components/facet/NewSearchFacetView.js +242 -0
- package/dist/components/facet/ReduxFacetModal.js +31 -0
- package/dist/components/facet/ReduxFacetView.js +5 -4
- package/dist/components/facet/ReduxNewFacetView.js +39 -0
- package/dist/components/facet/ReduxNewSearchFacetView.js +45 -0
- package/dist/components/facet/ReduxSearchFacetView.js +41 -0
- package/dist/components/facet/SearchFacetView.js +218 -0
- package/dist/components/facet/assets/Search_Icon.svg +3 -0
- package/dist/components/inputs/FilterItemStyle.js +32 -1
- package/dist/components/inputs/FilterItems.js +11 -3
- package/dist/components/inputs/ModalFilterItems.js +170 -0
- package/dist/components/inputs/ModalFilterStyle.js +117 -0
- package/dist/components/inputs/SearchFilterItems.js +100 -0
- package/dist/components/inputs/checkbox/CheckboxStyle.js +5 -4
- package/dist/components/inputs/checkbox/CheckboxView.js +42 -15
- package/dist/components/inputs/checkbox/ModalCheckboxStyle.js +43 -0
- package/dist/components/inputs/checkbox/ModalCheckboxView.js +141 -0
- package/dist/components/inputs/checkbox/ReduxCheckbox.js +1 -4
- package/dist/components/inputs/checkbox/ReduxModalCheckbox.js +17 -0
- package/dist/components/inputs/checkbox/ReduxSearchCheckbox.js +17 -0
- package/dist/components/inputs/checkbox/SearchCheckboxView.js +147 -0
- package/dist/components/inputs/checkbox/assets/checkedbox.svg +1 -1
- package/dist/components/inputs/slider/InputMinMaxStyle.js +36 -1
- package/dist/components/inputs/slider/InputMinMaxView.js +5 -2
- package/dist/components/inputs/slider/ReduxSlider.js +9 -4
- package/dist/components/inputs/slider/SliderStyle.js +23 -0
- package/dist/components/inputs/slider/SliderView.js +317 -27
- package/dist/components/section/FacetSectionView.js +2 -1
- package/dist/index.js +25 -0
- package/dist/store/actions/ActionTypes.js +7 -1
- package/dist/store/actions/Actions.js +47 -2
- package/dist/store/reducers/SideBarReducer.js +105 -4
- package/dist/utils/filter.js +21 -7
- package/package.json +20 -15
- package/src/FacetFilterController.js +34 -7
- package/src/FacetFilterView.js +24 -10
- package/src/NewFacetFilterController.js +182 -0
- package/src/NewFacetFilterView.js +57 -0
- package/src/components/facet/FacetModal.js +106 -0
- package/src/components/facet/FacetStyle.js +51 -2
- package/src/components/facet/FacetView.js +54 -11
- package/src/components/facet/ModalStyle.js +115 -0
- package/src/components/facet/NewFacetStyle.js +217 -0
- package/src/components/facet/NewFacetView.js +303 -0
- package/src/components/facet/NewSearchFacetView.js +318 -0
- package/src/components/facet/ReduxFacetModal.js +28 -0
- package/src/components/facet/ReduxFacetView.js +5 -4
- package/src/components/facet/ReduxNewFacetView.js +32 -0
- package/src/components/facet/ReduxNewSearchFacetView.js +40 -0
- package/src/components/facet/ReduxSearchFacetView.js +35 -0
- package/src/components/facet/SearchFacetView.js +291 -0
- package/src/components/facet/assets/Search_Icon.svg +3 -0
- package/src/components/inputs/FilterItemStyle.js +32 -1
- package/src/components/inputs/FilterItems.js +14 -3
- package/src/components/inputs/ModalFilterItems.js +167 -0
- package/src/components/inputs/ModalFilterStyle.js +110 -0
- package/src/components/inputs/SearchFilterItems.js +94 -0
- package/src/components/inputs/checkbox/CheckboxStyle.js +5 -4
- package/src/components/inputs/checkbox/CheckboxView.js +37 -3
- package/src/components/inputs/checkbox/ModalCheckboxStyle.js +36 -0
- package/src/components/inputs/checkbox/ModalCheckboxView.js +172 -0
- package/src/components/inputs/checkbox/ReduxCheckbox.js +1 -5
- package/src/components/inputs/checkbox/ReduxModalCheckbox.js +12 -0
- package/src/components/inputs/checkbox/ReduxSearchCheckbox.js +12 -0
- package/src/components/inputs/checkbox/SearchCheckboxView.js +179 -0
- package/src/components/inputs/checkbox/assets/checkedbox.svg +1 -1
- package/src/components/inputs/slider/InputMinMaxStyle.js +34 -0
- package/src/components/inputs/slider/InputMinMaxView.js +3 -0
- package/src/components/inputs/slider/ReduxSlider.js +5 -1
- package/src/components/inputs/slider/SliderStyle.js +23 -0
- package/src/components/inputs/slider/SliderView.js +358 -36
- package/src/components/section/FacetSectionView.js +1 -1
- package/src/index.js +4 -1
- package/src/store/actions/ActionTypes.js +6 -0
- package/src/store/actions/Actions.js +45 -0
- package/src/store/reducers/SideBarReducer.js +100 -1
- package/src/utils/filter.js +18 -0
|
@@ -26,11 +26,19 @@ const FacetFilterController = props => {
|
|
|
26
26
|
* 2. subject state
|
|
27
27
|
*/
|
|
28
28
|
const {
|
|
29
|
-
|
|
29
|
+
activeFilters,
|
|
30
30
|
data,
|
|
31
31
|
facetsConfig,
|
|
32
|
-
facetSectionConfig
|
|
32
|
+
facetSectionConfig,
|
|
33
|
+
unknownAgesState
|
|
33
34
|
} = props;
|
|
35
|
+
const filterState = {};
|
|
36
|
+
// console.log(activeFilters);
|
|
37
|
+
for (const [key, value] of Object.entries(activeFilters)) {
|
|
38
|
+
if (key !== 'participant_ids') {
|
|
39
|
+
filterState[key] = value;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
34
42
|
const updateFacetState = filterSections => {
|
|
35
43
|
const updateSections = [...filterSections];
|
|
36
44
|
if (!_lodash.default.isEmpty(filterState)) {
|
|
@@ -38,7 +46,8 @@ const FacetFilterController = props => {
|
|
|
38
46
|
updateSections.forEach(sideBar => {
|
|
39
47
|
if (sideBar.type === _Types.InputTypes.CHECKBOX && sideBar.datafield === key) {
|
|
40
48
|
sideBar.facetValues.forEach(item => {
|
|
41
|
-
item.isChecked = value[item.name] ? value[item.name] : false;
|
|
49
|
+
// item.isChecked = value[item.name] ? value[item.name] : false;
|
|
50
|
+
item.isChecked = value.indexOf(item.name) > -1;
|
|
42
51
|
});
|
|
43
52
|
}
|
|
44
53
|
if (sideBar.type === _Types.InputTypes.SLIDER && sideBar.datafield === key) {
|
|
@@ -112,11 +121,30 @@ const FacetFilterController = props => {
|
|
|
112
121
|
} = updateFacet;
|
|
113
122
|
if (data[apiForFiltering]) {
|
|
114
123
|
if (Array.isArray(data[apiForFiltering])) {
|
|
124
|
+
const validValues = [];
|
|
115
125
|
const updateField = data[apiForFiltering].map(item => {
|
|
116
126
|
const addField = _objectSpread({}, item);
|
|
117
127
|
addField.name = item[field];
|
|
128
|
+
validValues.push(addField.name);
|
|
118
129
|
return addField;
|
|
119
130
|
});
|
|
131
|
+
/**
|
|
132
|
+
* Check if there are orphen filter values and add them to the facet values
|
|
133
|
+
*/
|
|
134
|
+
if (filterState !== undefined) {
|
|
135
|
+
const facetFilter = filterState[facet.datafield];
|
|
136
|
+
if (facetFilter) {
|
|
137
|
+
facetFilter.forEach(item => {
|
|
138
|
+
if (validValues.indexOf(item) === -1) {
|
|
139
|
+
const tmp = {};
|
|
140
|
+
tmp.group = item;
|
|
141
|
+
tmp.name = item;
|
|
142
|
+
tmp.subjects = 0;
|
|
143
|
+
updateField.push(tmp);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
120
148
|
updateFacet.facetValues = updateField;
|
|
121
149
|
}
|
|
122
150
|
/**
|
|
@@ -125,8 +153,10 @@ const FacetFilterController = props => {
|
|
|
125
153
|
if (facet.type === _Types.InputTypes.SLIDER) {
|
|
126
154
|
const lowerBound = data[apiForFiltering][ApiLowerBoundName];
|
|
127
155
|
const upperBound = data[apiForFiltering][ApiUpperBoundName];
|
|
156
|
+
const unknownAges = (unknownAgesState === null || unknownAgesState === void 0 ? void 0 : unknownAgesState[facet.datafield]) || 'include';
|
|
128
157
|
updateFacet.minLowerBound = lowerBound;
|
|
129
158
|
updateFacet.maxUpperBound = upperBound;
|
|
159
|
+
updateFacet.unknownAges = unknownAges;
|
|
130
160
|
updateFacet.facetValues = [lowerBound, upperBound];
|
|
131
161
|
updateFacet.style = facet.style;
|
|
132
162
|
}
|
|
@@ -150,8 +180,5 @@ const FacetFilterController = props => {
|
|
|
150
180
|
sideBarSections: facetSections
|
|
151
181
|
})));
|
|
152
182
|
};
|
|
153
|
-
|
|
154
|
-
filterState: state.statusReducer.filterState
|
|
155
|
-
});
|
|
156
|
-
var _default = (0, _reactRedux.connect)(mapStateToProps, null)(FacetFilterController);
|
|
183
|
+
var _default = (0, _reactRedux.connect)(null, null)(FacetFilterController);
|
|
157
184
|
exports.default = _default;
|
package/dist/FacetFilterView.js
CHANGED
|
@@ -10,6 +10,7 @@ var _FacetFilterStyle = _interopRequireDefault(require("./FacetFilterStyle"));
|
|
|
10
10
|
var _FacetSectionView = _interopRequireDefault(require("./components/section/FacetSectionView"));
|
|
11
11
|
var _ReduxFacetView = _interopRequireDefault(require("./components/facet/ReduxFacetView"));
|
|
12
12
|
var _FilterItems = _interopRequireDefault(require("./components/inputs/FilterItems"));
|
|
13
|
+
var _ReduxSearchFacetView = _interopRequireDefault(require("./components/facet/ReduxSearchFacetView"));
|
|
13
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
15
|
/* eslint-disable arrow-body-style */
|
|
15
16
|
/* eslint-disable padded-blocks */
|
|
@@ -18,7 +19,8 @@ const BentoFacetFilter = _ref => {
|
|
|
18
19
|
let {
|
|
19
20
|
sideBarSections,
|
|
20
21
|
CustomFacetSection,
|
|
21
|
-
CustomFacetView
|
|
22
|
+
CustomFacetView,
|
|
23
|
+
queryParams
|
|
22
24
|
} = _ref;
|
|
23
25
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, sideBarSections.map((section, index) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.Divider, {
|
|
24
26
|
variant: "middle",
|
|
@@ -26,14 +28,24 @@ const BentoFacetFilter = _ref => {
|
|
|
26
28
|
}), /*#__PURE__*/_react.default.createElement(_FacetSectionView.default, {
|
|
27
29
|
section: section,
|
|
28
30
|
CustomSection: CustomFacetSection
|
|
29
|
-
}, section.items.map(facet =>
|
|
30
|
-
facet
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
}, section.items.map(facet => {
|
|
32
|
+
if (facet.search) {
|
|
33
|
+
return /*#__PURE__*/_react.default.createElement(_ReduxSearchFacetView.default, {
|
|
34
|
+
facet: facet,
|
|
35
|
+
queryParams: queryParams,
|
|
36
|
+
CustomView: CustomFacetView
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
return /*#__PURE__*/_react.default.createElement(_ReduxFacetView.default, {
|
|
40
|
+
facet: facet,
|
|
41
|
+
queryParams: queryParams,
|
|
42
|
+
CustomView: CustomFacetView
|
|
43
|
+
}, /*#__PURE__*/_react.default.createElement(_core.List, {
|
|
44
|
+
className: "List_".concat(facet.label)
|
|
45
|
+
}, /*#__PURE__*/_react.default.createElement(_FilterItems.default, {
|
|
46
|
+
facet: facet
|
|
47
|
+
})));
|
|
48
|
+
})))));
|
|
37
49
|
};
|
|
38
50
|
var _default = (0, _core.withStyles)(_FacetFilterStyle.default)(BentoFacetFilter);
|
|
39
51
|
exports.default = _default;
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _reactRedux = require("react-redux");
|
|
10
|
+
var _Types = require("./components/inputs/Types");
|
|
11
|
+
var _NewFacetFilterView = _interopRequireDefault(require("./NewFacetFilterView"));
|
|
12
|
+
const _excluded = ["section"];
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
15
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
16
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
17
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
18
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
19
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
20
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
21
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
22
|
+
const NewFacetFilterController = props => {
|
|
23
|
+
/**
|
|
24
|
+
* update checkbox state
|
|
25
|
+
* 1. checkbox state
|
|
26
|
+
* 2. subject state
|
|
27
|
+
*/
|
|
28
|
+
const {
|
|
29
|
+
activeFilters,
|
|
30
|
+
data,
|
|
31
|
+
facetsConfig,
|
|
32
|
+
facetSectionConfig,
|
|
33
|
+
selectedSection,
|
|
34
|
+
unknownAgesState
|
|
35
|
+
} = props;
|
|
36
|
+
const filterState = {};
|
|
37
|
+
// console.log(activeFilters);
|
|
38
|
+
for (const [key, value] of Object.entries(activeFilters)) {
|
|
39
|
+
if (key !== 'participant_ids') {
|
|
40
|
+
filterState[key] = value;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const updateFacetState = filterSections => {
|
|
44
|
+
const updateSections = [...filterSections];
|
|
45
|
+
if (!_lodash.default.isEmpty(filterState)) {
|
|
46
|
+
for (const [key, value] of Object.entries(filterState)) {
|
|
47
|
+
updateSections.forEach(sideBar => {
|
|
48
|
+
if (sideBar.type === _Types.InputTypes.CHECKBOX && sideBar.datafield === key) {
|
|
49
|
+
sideBar.facetValues.forEach(item => {
|
|
50
|
+
// item.isChecked = value[item.name] ? value[item.name] : false;
|
|
51
|
+
item.isChecked = value.indexOf(item.name) > -1;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (sideBar.type === _Types.InputTypes.SLIDER && sideBar.datafield === key) {
|
|
55
|
+
sideBar.facetValues = value;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
} else {
|
|
60
|
+
updateSections.forEach(sideBar => {
|
|
61
|
+
if (sideBar.type === _Types.InputTypes.CHECKBOX) {
|
|
62
|
+
sideBar.facetValues.forEach(item => {
|
|
63
|
+
item.isChecked = false;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* set default value for slider - on clear all filter
|
|
68
|
+
*/
|
|
69
|
+
if (sideBar.type === _Types.InputTypes.SLIDER) {
|
|
70
|
+
const {
|
|
71
|
+
minLowerBound,
|
|
72
|
+
maxUpperBound
|
|
73
|
+
} = sideBar;
|
|
74
|
+
sideBar.facetValues = [minLowerBound, maxUpperBound];
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
return updateSections;
|
|
79
|
+
};
|
|
80
|
+
const arrangeBySections = arr => {
|
|
81
|
+
const sideBar = {};
|
|
82
|
+
arr.forEach(_ref => {
|
|
83
|
+
let {
|
|
84
|
+
section
|
|
85
|
+
} = _ref,
|
|
86
|
+
item = _objectWithoutProperties(_ref, _excluded);
|
|
87
|
+
const {
|
|
88
|
+
isExpanded
|
|
89
|
+
} = facetSectionConfig[section];
|
|
90
|
+
if (!sideBar[section]) {
|
|
91
|
+
sideBar[section] = {
|
|
92
|
+
name: section,
|
|
93
|
+
sectionName: section,
|
|
94
|
+
expandSection: isExpanded !== undefined && typeof isExpanded === 'boolean' ? isExpanded : true,
|
|
95
|
+
items: []
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
sideBar[section].items.push(_objectSpread({
|
|
99
|
+
section
|
|
100
|
+
}, item));
|
|
101
|
+
});
|
|
102
|
+
return Object.values(sideBar);
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Construct filter object
|
|
107
|
+
* 1. add facet values to facets
|
|
108
|
+
* 2. add 'name' key to each facet value
|
|
109
|
+
*/
|
|
110
|
+
const addFacetValues = facets => {
|
|
111
|
+
const updateFacets = [];
|
|
112
|
+
if (facets) {
|
|
113
|
+
facets.forEach(facet => {
|
|
114
|
+
const updateFacet = _objectSpread(_objectSpread({}, facet), {}, {
|
|
115
|
+
facetValues: []
|
|
116
|
+
});
|
|
117
|
+
const {
|
|
118
|
+
field,
|
|
119
|
+
ApiLowerBoundName,
|
|
120
|
+
ApiUpperBoundName,
|
|
121
|
+
apiForFiltering
|
|
122
|
+
} = updateFacet;
|
|
123
|
+
if (data[apiForFiltering]) {
|
|
124
|
+
if (Array.isArray(data[apiForFiltering])) {
|
|
125
|
+
const validValues = [];
|
|
126
|
+
const updateField = data[apiForFiltering].map(item => {
|
|
127
|
+
const addField = _objectSpread({}, item);
|
|
128
|
+
addField.name = item[field];
|
|
129
|
+
validValues.push(addField.name);
|
|
130
|
+
return addField;
|
|
131
|
+
});
|
|
132
|
+
/**
|
|
133
|
+
* Check if there are orphen filter values and add them to the facet values
|
|
134
|
+
*/
|
|
135
|
+
if (filterState !== undefined) {
|
|
136
|
+
const facetFilter = filterState[facet.datafield];
|
|
137
|
+
if (facetFilter) {
|
|
138
|
+
facetFilter.forEach(item => {
|
|
139
|
+
if (validValues.indexOf(item) === -1) {
|
|
140
|
+
const tmp = {};
|
|
141
|
+
tmp.group = item;
|
|
142
|
+
tmp.name = item;
|
|
143
|
+
tmp.subjects = 0;
|
|
144
|
+
updateField.push(tmp);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
updateFacet.facetValues = updateField;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* add object to facet values
|
|
153
|
+
*/
|
|
154
|
+
if (facet.type === _Types.InputTypes.SLIDER) {
|
|
155
|
+
const lowerBound = data[apiForFiltering][ApiLowerBoundName];
|
|
156
|
+
const upperBound = data[apiForFiltering][ApiUpperBoundName];
|
|
157
|
+
const unknownAges = (unknownAgesState === null || unknownAgesState === void 0 ? void 0 : unknownAgesState[facet.datafield]) || 'include';
|
|
158
|
+
updateFacet.minLowerBound = lowerBound;
|
|
159
|
+
updateFacet.maxUpperBound = upperBound;
|
|
160
|
+
updateFacet.unknownAges = unknownAges;
|
|
161
|
+
updateFacet.facetValues = [lowerBound, upperBound];
|
|
162
|
+
updateFacet.style = facet.style;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
updateFacets.push(updateFacet);
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
return updateFacets;
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Generate facet sections state
|
|
173
|
+
*
|
|
174
|
+
*/
|
|
175
|
+
// const displayFacets = facetsConfig.filter((facet) => facet.show).slice(0, 16);
|
|
176
|
+
const displayFacets = facetsConfig.filter(facet => facet.show);
|
|
177
|
+
const facetStates = addFacetValues(displayFacets);
|
|
178
|
+
const updateState = updateFacetState(facetStates);
|
|
179
|
+
const facetSections = arrangeBySections(updateState);
|
|
180
|
+
const facetSection = facetSections[selectedSection];
|
|
181
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_NewFacetFilterView.default, _extends({}, props, {
|
|
182
|
+
facetSection: facetSection
|
|
183
|
+
})));
|
|
184
|
+
};
|
|
185
|
+
const mapStateToProps = state => {
|
|
186
|
+
var _state$statusReducer;
|
|
187
|
+
return {
|
|
188
|
+
unknownAgesState: (state === null || state === void 0 ? void 0 : (_state$statusReducer = state.statusReducer) === null || _state$statusReducer === void 0 ? void 0 : _state$statusReducer.unknownAgesState) || {}
|
|
189
|
+
};
|
|
190
|
+
};
|
|
191
|
+
var _default = (0, _reactRedux.connect)(mapStateToProps, null)(NewFacetFilterController);
|
|
192
|
+
exports.default = _default;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _core = require("@material-ui/core");
|
|
9
|
+
var _FacetFilterStyle = _interopRequireDefault(require("./FacetFilterStyle"));
|
|
10
|
+
var _ReduxNewFacetView = _interopRequireDefault(require("./components/facet/ReduxNewFacetView"));
|
|
11
|
+
var _FilterItems = _interopRequireDefault(require("./components/inputs/FilterItems"));
|
|
12
|
+
var _ReduxNewSearchFacetView = _interopRequireDefault(require("./components/facet/ReduxNewSearchFacetView"));
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
/* eslint-disable arrow-body-style */
|
|
15
|
+
/* eslint-disable padded-blocks */
|
|
16
|
+
|
|
17
|
+
const BentoFacetFilter = _ref => {
|
|
18
|
+
let {
|
|
19
|
+
facetSection,
|
|
20
|
+
CustomFacetSection,
|
|
21
|
+
CustomFacetView,
|
|
22
|
+
queryParams,
|
|
23
|
+
basePath
|
|
24
|
+
} = _ref;
|
|
25
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, CustomFacetSection && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(CustomFacetSection, {
|
|
26
|
+
section: facetSection,
|
|
27
|
+
expanded: true
|
|
28
|
+
})), facetSection.items.map(facet => {
|
|
29
|
+
if (facet.search) {
|
|
30
|
+
return /*#__PURE__*/_react.default.createElement(_ReduxNewSearchFacetView.default, {
|
|
31
|
+
facet: facet,
|
|
32
|
+
queryParams: queryParams,
|
|
33
|
+
CustomView: CustomFacetView,
|
|
34
|
+
basePath: basePath
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return /*#__PURE__*/_react.default.createElement(_ReduxNewFacetView.default, {
|
|
38
|
+
facet: facet,
|
|
39
|
+
queryParams: queryParams,
|
|
40
|
+
CustomView: CustomFacetView,
|
|
41
|
+
basePath: basePath
|
|
42
|
+
}, /*#__PURE__*/_react.default.createElement(_core.List, {
|
|
43
|
+
className: "List_".concat(facet.label)
|
|
44
|
+
}, /*#__PURE__*/_react.default.createElement(_FilterItems.default, {
|
|
45
|
+
facet: facet
|
|
46
|
+
})));
|
|
47
|
+
}));
|
|
48
|
+
};
|
|
49
|
+
var _default = (0, _core.withStyles)(_FacetFilterStyle.default)(BentoFacetFilter);
|
|
50
|
+
exports.default = _default;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactRouterDom = require("react-router-dom");
|
|
9
|
+
var _util = require("@bento-core/util");
|
|
10
|
+
var _core = require("@material-ui/core");
|
|
11
|
+
var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
|
|
12
|
+
var _styles = require("@material-ui/core/styles");
|
|
13
|
+
var _ModalStyle = _interopRequireDefault(require("./ModalStyle"));
|
|
14
|
+
var _ModalFilterItems = _interopRequireDefault(require("../inputs/ModalFilterItems"));
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
+
const resetIcon = {
|
|
17
|
+
src: 'https://raw.githubusercontent.com/CBIIT/datacommons-assets/main/bento/images/icons/svgs/Clear-icon.svg',
|
|
18
|
+
alt: 'Reset icon',
|
|
19
|
+
size: '12 px'
|
|
20
|
+
};
|
|
21
|
+
const ModalView = _ref => {
|
|
22
|
+
let {
|
|
23
|
+
classes,
|
|
24
|
+
facet,
|
|
25
|
+
sortBy,
|
|
26
|
+
searchText,
|
|
27
|
+
open,
|
|
28
|
+
onClose,
|
|
29
|
+
onClearFacetSection,
|
|
30
|
+
onSearchTextChange,
|
|
31
|
+
onSortChange,
|
|
32
|
+
queryParams
|
|
33
|
+
} = _ref;
|
|
34
|
+
const query = new URLSearchParams((0, _reactRouterDom.useLocation)().search);
|
|
35
|
+
const navigate = (0, _reactRouterDom.useNavigate)();
|
|
36
|
+
const onClearSection = () => {
|
|
37
|
+
const field = facet.datafield;
|
|
38
|
+
const paramValue = {};
|
|
39
|
+
paramValue[field] = '';
|
|
40
|
+
const queryStr = (0, _util.generateQueryStr)(query, queryParams, paramValue);
|
|
41
|
+
navigate("/exploreParticipants".concat(queryStr), {
|
|
42
|
+
replace: true
|
|
43
|
+
});
|
|
44
|
+
onSortChange(null);
|
|
45
|
+
onClearFacetSection(facet);
|
|
46
|
+
};
|
|
47
|
+
return /*#__PURE__*/_react.default.createElement(_core.Modal, {
|
|
48
|
+
open: open,
|
|
49
|
+
onClose: onClose,
|
|
50
|
+
"aria-labelledby": "".concat(facet.datafield, "-search-modal")
|
|
51
|
+
}, /*#__PURE__*/_react.default.createElement(_core.Box, {
|
|
52
|
+
className: classes.modalBody
|
|
53
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
54
|
+
className: classes.header
|
|
55
|
+
}, /*#__PURE__*/_react.default.createElement(_core.Typography, {
|
|
56
|
+
id: "modal-modal-title",
|
|
57
|
+
className: classes.modalTitle
|
|
58
|
+
}, "".concat(facet.label, " Facet Search")), /*#__PURE__*/_react.default.createElement(_core.IconButton, {
|
|
59
|
+
"aria-label": "close",
|
|
60
|
+
onClick: onClose,
|
|
61
|
+
className: classes.closeButton,
|
|
62
|
+
sx: theme => ({
|
|
63
|
+
position: 'absolute',
|
|
64
|
+
right: 8,
|
|
65
|
+
top: 8,
|
|
66
|
+
color: theme.palette.grey[500]
|
|
67
|
+
})
|
|
68
|
+
}, /*#__PURE__*/_react.default.createElement(_Close.default, {
|
|
69
|
+
fontSize: "small"
|
|
70
|
+
}))), /*#__PURE__*/_react.default.createElement("div", {
|
|
71
|
+
className: classes.searchContainer
|
|
72
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
73
|
+
className: classes.searchInputbox
|
|
74
|
+
}, "Search ".concat(facet.label)), /*#__PURE__*/_react.default.createElement("input", {
|
|
75
|
+
className: classes.searchBox,
|
|
76
|
+
value: searchText,
|
|
77
|
+
type: "text",
|
|
78
|
+
placeholder: "e.g. A1CF, CREB3L1, PIK3CA",
|
|
79
|
+
onChange: e => onSearchTextChange(facet.datafield, e.target.value)
|
|
80
|
+
}), /*#__PURE__*/_react.default.createElement(_core.Button, {
|
|
81
|
+
variant: "outlined",
|
|
82
|
+
onClick: () => onSearchTextChange(facet.datafield, ''),
|
|
83
|
+
className: classes.resetIcon
|
|
84
|
+
}, /*#__PURE__*/_react.default.createElement("img", {
|
|
85
|
+
src: resetIcon.src,
|
|
86
|
+
height: resetIcon.size,
|
|
87
|
+
width: resetIcon.size,
|
|
88
|
+
alt: resetIcon.alt
|
|
89
|
+
}))), /*#__PURE__*/_react.default.createElement("div", {
|
|
90
|
+
className: classes.itemContainer
|
|
91
|
+
}, /*#__PURE__*/_react.default.createElement(_ModalFilterItems.default, {
|
|
92
|
+
searchText: searchText,
|
|
93
|
+
facet: facet,
|
|
94
|
+
sortBy: sortBy,
|
|
95
|
+
onClearSection: onClearSection,
|
|
96
|
+
onSortChange: onSortChange,
|
|
97
|
+
queryParams: queryParams
|
|
98
|
+
}))));
|
|
99
|
+
};
|
|
100
|
+
var _default = (0, _styles.withStyles)(_ModalStyle.default)(ModalView);
|
|
101
|
+
exports.default = _default;
|
|
@@ -4,6 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
var _Search_Icon = _interopRequireDefault(require("./assets/Search_Icon.svg"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
7
9
|
var _default = () => ({
|
|
8
10
|
expansionPanelDetailsRoot: {
|
|
9
11
|
display: 'block'
|
|
@@ -32,16 +34,16 @@ var _default = () => ({
|
|
|
32
34
|
sortGroup: {
|
|
33
35
|
paddingTop: '10px',
|
|
34
36
|
marginBottom: '5px',
|
|
35
|
-
borderTop: '1px solid #B1B1B1',
|
|
36
37
|
textAlign: 'left',
|
|
37
|
-
marginLeft: '-5px'
|
|
38
|
+
marginLeft: '-5px',
|
|
39
|
+
borderTop: 'none'
|
|
38
40
|
},
|
|
39
41
|
sortGroupIcon: {
|
|
40
42
|
cursor: 'pointer',
|
|
41
43
|
fontFamily: 'Nunito',
|
|
42
44
|
fontSize: '10px',
|
|
43
45
|
marginRight: '12px',
|
|
44
|
-
marginLeft: '
|
|
46
|
+
marginLeft: '24px'
|
|
45
47
|
},
|
|
46
48
|
sortGroupItem: {
|
|
47
49
|
cursor: 'pointer',
|
|
@@ -77,6 +79,53 @@ var _default = () => ({
|
|
|
77
79
|
cursor: 'pointer',
|
|
78
80
|
fontSize: '10px',
|
|
79
81
|
width: '100%'
|
|
82
|
+
},
|
|
83
|
+
searchContainer: {
|
|
84
|
+
display: 'flex',
|
|
85
|
+
justifyContent: 'center',
|
|
86
|
+
position: 'relative'
|
|
87
|
+
},
|
|
88
|
+
searchBox: {
|
|
89
|
+
fontSize: '11px',
|
|
90
|
+
fontFamily: 'Nunito',
|
|
91
|
+
width: 'calc(100% - 26px)',
|
|
92
|
+
height: '30px',
|
|
93
|
+
marginTop: '12px',
|
|
94
|
+
borderRadius: '5px',
|
|
95
|
+
background: "url(".concat(_Search_Icon.default, ") right 5px center no-repeat"),
|
|
96
|
+
marginLeft: '6px',
|
|
97
|
+
border: '1px solid',
|
|
98
|
+
padding: '5px'
|
|
99
|
+
},
|
|
100
|
+
searchBoxWithText: {
|
|
101
|
+
fontSize: '11px',
|
|
102
|
+
fontFamily: 'Nunito',
|
|
103
|
+
width: 'calc(100% - 26px)',
|
|
104
|
+
height: '30px',
|
|
105
|
+
marginTop: '12px',
|
|
106
|
+
borderRadius: '5px',
|
|
107
|
+
marginLeft: '6px',
|
|
108
|
+
border: '1px solid',
|
|
109
|
+
padding: '5px'
|
|
110
|
+
},
|
|
111
|
+
expandedDisplayButton: {
|
|
112
|
+
backgroundColor: '#4D889E !important',
|
|
113
|
+
color: 'white',
|
|
114
|
+
width: 'calc(100% - 26px)',
|
|
115
|
+
height: '30px',
|
|
116
|
+
marginBottom: '5px',
|
|
117
|
+
marginLeft: '6px',
|
|
118
|
+
borderRadius: '5px',
|
|
119
|
+
fontSize: '12px',
|
|
120
|
+
fontWeight: '600',
|
|
121
|
+
top: '8px'
|
|
122
|
+
},
|
|
123
|
+
clearTextButton: {
|
|
124
|
+
padding: '0px',
|
|
125
|
+
height: '20px',
|
|
126
|
+
position: 'absolute',
|
|
127
|
+
right: '14px',
|
|
128
|
+
top: '14px'
|
|
80
129
|
}
|
|
81
130
|
});
|
|
82
131
|
exports.default = _default;
|
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactRouterDom = require("react-router-dom");
|
|
9
|
+
var _util = require("@bento-core/util");
|
|
8
10
|
var _core = require("@material-ui/core");
|
|
9
11
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
10
12
|
var _AccordionSummaryView = _interopRequireDefault(require("../summary/AccordionSummaryView"));
|
|
@@ -27,27 +29,50 @@ const FacetView = _ref => {
|
|
|
27
29
|
facet,
|
|
28
30
|
onClearFacetSection,
|
|
29
31
|
onClearSliderSection,
|
|
32
|
+
onUnknownAgesChange,
|
|
30
33
|
CustomView,
|
|
31
|
-
|
|
32
|
-
|
|
34
|
+
queryParams,
|
|
35
|
+
unknownAgesState
|
|
33
36
|
} = _ref;
|
|
34
|
-
const [expand, setExpand] = (0, _react.useState)(false);
|
|
37
|
+
const [expand, setExpand] = (0, _react.useState)(facet.expanded !== undefined && typeof facet.expanded === 'boolean' ? facet.expanded : false);
|
|
35
38
|
const onExpandFacet = () => setExpand(!expand);
|
|
39
|
+
const query = new URLSearchParams((0, _reactRouterDom.useLocation)().search);
|
|
40
|
+
const navigate = (0, _reactRouterDom.useNavigate)();
|
|
36
41
|
|
|
37
42
|
/**
|
|
38
43
|
* expand section incase of active local search
|
|
39
44
|
*/
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
+
// useEffect(() => {
|
|
46
|
+
// if ((autoComplete && autoComplete.length > 0)
|
|
47
|
+
// || (upload && upload.length > 0)) {
|
|
48
|
+
// setExpand(true);
|
|
49
|
+
// }
|
|
50
|
+
// }, [autoComplete, upload]);
|
|
51
|
+
|
|
45
52
|
const [sortBy, setSortBy] = (0, _react.useState)(null);
|
|
46
53
|
const onSortFacet = type => {
|
|
47
54
|
setSortBy(type);
|
|
48
55
|
};
|
|
49
56
|
const onClearSection = () => {
|
|
57
|
+
const field = facet.datafield;
|
|
58
|
+
const paramValue = {};
|
|
59
|
+
paramValue[field] = '';
|
|
60
|
+
|
|
61
|
+
// Also clear the corresponding unknownAges parameter if it exists
|
|
62
|
+
const unknownAgesField = "".concat(field, "_unknownAges");
|
|
63
|
+
if (queryParams.includes(unknownAgesField)) {
|
|
64
|
+
paramValue[unknownAgesField] = '';
|
|
65
|
+
}
|
|
66
|
+
const queryStr = (0, _util.generateQueryStr)(query, queryParams, paramValue);
|
|
67
|
+
navigate("/exploreParticipants".concat(queryStr), {
|
|
68
|
+
replace: true
|
|
69
|
+
});
|
|
50
70
|
setSortBy(null);
|
|
71
|
+
|
|
72
|
+
// Reset the corresponding unknownAges parameter in Redux state
|
|
73
|
+
if (queryParams.includes(unknownAgesField) && onUnknownAgesChange) {
|
|
74
|
+
onUnknownAgesChange(field, 'include');
|
|
75
|
+
}
|
|
51
76
|
if (facet.type === _Types.InputTypes.SLIDER) {
|
|
52
77
|
onClearSliderSection(facet);
|
|
53
78
|
} else {
|
|
@@ -64,7 +89,12 @@ const FacetView = _ref => {
|
|
|
64
89
|
const selectedItems = facetValues && facetValues.filter(item => item.isChecked);
|
|
65
90
|
const displayFacet = _objectSpread({}, facet);
|
|
66
91
|
displayFacet.facetValues = selectedItems;
|
|
67
|
-
|
|
92
|
+
|
|
93
|
+
// Check if facet is active based on selected items or unknown ages selection
|
|
94
|
+
const hasSelectedItems = [...selectedItems].length > 0;
|
|
95
|
+
const unknownAges = (unknownAgesState === null || unknownAgesState === void 0 ? void 0 : unknownAgesState[facet.datafield]) || 'include';
|
|
96
|
+
const hasUnknownAgesSelection = unknownAges !== 'include';
|
|
97
|
+
const isActiveFacet = hasSelectedItems || type === _Types.InputTypes.SLIDER && hasUnknownAgesSelection;
|
|
68
98
|
const limitCheckBoxCount = (facet === null || facet === void 0 ? void 0 : facet.showCheckboxCount) || 5;
|
|
69
99
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.Accordion, {
|
|
70
100
|
square: true,
|
|
@@ -116,15 +146,23 @@ const FacetView = _ref => {
|
|
|
116
146
|
}
|
|
117
147
|
}, "Sort by count"))), /*#__PURE__*/_react.default.createElement(_FilterItems.default, {
|
|
118
148
|
facet: facet,
|
|
149
|
+
queryParams: queryParams,
|
|
119
150
|
sortBy: sortBy
|
|
120
151
|
})), !expand && type === _Types.InputTypes.CHECKBOX && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.List, {
|
|
121
152
|
id: "filter_Items"
|
|
122
153
|
}, /*#__PURE__*/_react.default.createElement(_FilterItems.default, {
|
|
123
|
-
facet: displayFacet
|
|
154
|
+
facet: displayFacet,
|
|
155
|
+
queryParams: queryParams
|
|
124
156
|
}))), !expand && selectedItems.length > limitCheckBoxCount && /*#__PURE__*/_react.default.createElement("div", {
|
|
125
157
|
className: classes.showMore,
|
|
126
158
|
onClick: onExpandFacet
|
|
127
|
-
}, "...expand to see all selections")
|
|
159
|
+
}, "...expand to see all selections"), expand && type === _Types.InputTypes.SLIDER && /*#__PURE__*/_react.default.createElement("div", {
|
|
160
|
+
style: {
|
|
161
|
+
marginTop: '20px',
|
|
162
|
+
marginBottom: '0px',
|
|
163
|
+
borderBottom: '1px solid rgb(204, 204, 204)'
|
|
164
|
+
}
|
|
165
|
+
}));
|
|
128
166
|
};
|
|
129
167
|
var _default = (0, _core.withStyles)(_FacetStyle.default)(FacetView);
|
|
130
168
|
exports.default = _default;
|