- { showCloseButton &&
}
- { showOrButton &&
or
}
+
+
+
}
+ />
+
+ { showCloseButton &&
}
+ { showOrButton &&
or
}
+
+
+ { !showOrButton && isMultilple &&
or
}
);
}
diff --git a/frontend/app/constants/filterOptions.js b/frontend/app/constants/filterOptions.js
index 6fa6d0cbf..560ad7912 100644
--- a/frontend/app/constants/filterOptions.js
+++ b/frontend/app/constants/filterOptions.js
@@ -61,6 +61,15 @@ export const metricTypes = [
{ text: 'Table', value: 'table' },
];
+export const tableColumnName = {
+ [FilterKey.USERID]: 'User',
+ [FilterKey.ISSUE]: 'Issue',
+ [FilterKey.USER_BROWSER]: 'Browser',
+ [FilterKey.USER_DEVICE]: 'Device',
+ [FilterKey.USER_COUNTRY]: 'Country',
+ [FilterKey.LOCATION]: 'URL',
+}
+
export const metricOf = [
{ text: 'Session Count', value: 'sessionCount', type: 'timeseries' },
{ text: 'Users', value: FilterKey.USERID, type: 'table' },
@@ -71,6 +80,18 @@ export const metricOf = [
{ text: 'URL', value: FilterKey.LOCATION, type: 'table' },
]
+export const methodOptions = [
+ { text: 'GET', value: 'GET' },
+ { text: 'POST', value: 'POST' },
+ { text: 'PUT', value: 'PUT' },
+ { text: 'DELETE', value: 'DELETE' },
+ { text: 'PATCH', value: 'PATCH' },
+ { text: 'HEAD', value: 'HEAD' },
+ { text: 'OPTIONS', value: 'OPTIONS' },
+ { text: 'TRACE', value: 'TRACE' },
+ { text: 'CONNECT', value: 'CONNECT' },
+]
+
export const issueOptions = [
{ text: 'Click Rage', value: 'click_rage' },
{ text: 'Dead Click', value: 'dead_click' },
@@ -97,4 +118,5 @@ export default {
metricTypes,
metricOf,
issueOptions,
+ methodOptions,
}
\ No newline at end of file
diff --git a/frontend/app/duck/search.js b/frontend/app/duck/search.js
index 00799e5d7..4bd05ad2f 100644
--- a/frontend/app/duck/search.js
+++ b/frontend/app/duck/search.js
@@ -107,14 +107,15 @@ export const checkFilterValue = (value) => {
return Array.isArray(value) ? (value.length === 0 ? [""] : value) : [value];
}
-export const filterMap = ({category, value, key, operator, sourceOperator, source, custom, isEvent }) => ({
+export const filterMap = ({category, value, key, operator, sourceOperator, source, custom, isEvent, subFilters }) => ({
value: checkValues(key, value),
custom,
type: category === FilterCategory.METADATA ? FilterKey.METADATA : key,
operator,
source: category === FilterCategory.METADATA ? key : source,
sourceOperator,
- isEvent
+ isEvent,
+ filters: subFilters ? subFilters.map(filterMap) : [],
});
const reduceThenFetchResource = actionCreator => (...args) => (dispatch, getState) => {
diff --git a/frontend/app/types/filter/newFilter.js b/frontend/app/types/filter/newFilter.js
index 6ad2c4c22..7ce792b78 100644
--- a/frontend/app/types/filter/newFilter.js
+++ b/frontend/app/types/filter/newFilter.js
@@ -33,10 +33,10 @@ export const filtersMap = {
[FilterKey.USERANONYMOUSID]: { key: FilterKey.USERANONYMOUSID, type: FilterType.MULTIPLE, category: FilterCategory.USER, label: 'User AnonymousId', operator: 'is', operatorOptions: filterOptions.stringOperators, icon: 'filters/userid' },
// PERFORMANCE
- [FilterKey.FETCH]: { key: FilterKey.FETCH, type: FilterType.SUB_FILTERS, category: FilterCategory.PERFORMANCE, label: 'Fetch Request', subFilters: [
+ [FilterKey.FETCH]: { key: FilterKey.FETCH, type: FilterType.SUB_FILTERS, category: FilterCategory.PERFORMANCE, operator: 'is', label: 'Network Request', subFilters: [
{ key: FilterKey.FETCH_URL, type: FilterType.MULTIPLE, category: FilterCategory.PERFORMANCE, label: 'with URL', operator: 'is', operatorOptions: filterOptions.stringOperators, icon: 'filters/fetch' },
{ key: FilterKey.FETCH_STATUS_CODE, type: FilterType.NUMBER_MULTIPLE, category: FilterCategory.PERFORMANCE, label: 'with status code', operator: '=', operatorOptions: filterOptions.customOperators, icon: 'filters/fetch' },
- { key: FilterKey.FETCH_METHOD, type: FilterType.MULTIPLE, category: FilterCategory.PERFORMANCE, label: 'with method', operator: 'is', operatorOptions: filterOptions.stringOperators, icon: 'filters/fetch' },
+ { key: FilterKey.FETCH_METHOD, type: FilterType.MULTIPLE_DROPDOWN, category: FilterCategory.PERFORMANCE, label: 'with method', operator: 'is', operatorOptions: filterOptions.stringOperators, icon: 'filters/fetch', options: filterOptions.methodOptions },
{ key: FilterKey.FETCH_DURATION, type: FilterType.NUMBER, category: FilterCategory.PERFORMANCE, label: 'with duration', operator: '=', operatorOptions: filterOptions.customOperators, icon: 'filters/fetch' },
{ key: FilterKey.FETCH_REQUEST_BODY, type: FilterType.STRING, category: FilterCategory.PERFORMANCE, label: 'with request body', operator: 'is', operatorOptions: filterOptions.stringOperators, icon: 'filters/fetch' },
{ key: FilterKey.FETCH_RESPONSE_BODY, type: FilterType.STRING, category: FilterCategory.PERFORMANCE, label: 'with response body', operator: 'is', operatorOptions: filterOptions.stringOperators, icon: 'filters/fetch' },