Please try changing your search parameters.
}
show={!loading && list.size === 0}
>
{list.map((session: any) => (
@@ -97,6 +132,8 @@ export default connect(
currentPage: state.getIn(['search', 'currentPage']) || 1,
total: state.getIn(['sessions', 'total']) || 0,
scrollY: state.getIn(['search', 'scrollY']),
+ activeTab: state.getIn(['search', 'activeTab']),
+ isEnterprise: state.getIn(['user', 'account', 'edition']) === 'ee',
}),
{ updateCurrentPage, addFilterByKeyAndValue, setScrollPosition, fetchSessions }
)(SessionList);
diff --git a/frontend/app/components/shared/SessionSearchField/SessionSearchField.tsx b/frontend/app/components/shared/SessionSearchField/SessionSearchField.tsx
index 9796c441c..4f3c3d121 100644
--- a/frontend/app/components/shared/SessionSearchField/SessionSearchField.tsx
+++ b/frontend/app/components/shared/SessionSearchField/SessionSearchField.tsx
@@ -3,64 +3,67 @@ import { connect } from 'react-redux';
import { Input } from 'UI';
import FilterModal from 'Shared/Filters/FilterModal';
import { debounce } from 'App/utils';
-import { assist as assistRoute, isRoute } from "App/routes";
+import { assist as assistRoute, isRoute } from 'App/routes';
const ASSIST_ROUTE = assistRoute();
interface Props {
- fetchFilterSearch: (query: any) => void;
- addFilterByKeyAndValue: (key: string, value: string) => void;
- filterList: any;
- filterListLive: any;
- filterSearchListLive: any;
- filterSearchList: any;
+ fetchFilterSearch: (query: any) => void;
+ addFilterByKeyAndValue: (key: string, value: string) => void;
+ filterList: any;
+ filterListLive: any;
+ filterSearchListLive: any;
+ filterSearchList: any;
}
function SessionSearchField(props: Props) {
- const debounceFetchFilterSearch = React.useCallback(debounce(props.fetchFilterSearch, 1000), []);
- const [showModal, setShowModal] = useState(false)
- const [searchQuery, setSearchQuery] = useState('')
+ const debounceFetchFilterSearch = React.useCallback(debounce(props.fetchFilterSearch, 1000), []);
+ const [showModal, setShowModal] = useState(false);
+ const [searchQuery, setSearchQuery] = useState('');
- const onSearchChange = ({ target: { value } }: any) => {
- setSearchQuery(value)
- debounceFetchFilterSearch({ q: value });
- }
+ const onSearchChange = ({ target: { value } }: any) => {
+ setSearchQuery(value);
+ debounceFetchFilterSearch({ q: value });
+ };
- const onAddFilter = (filter: any) => {
- props.addFilterByKeyAndValue(filter.key, filter.value)
- }
+ const onAddFilter = (filter: any) => {
+ props.addFilterByKeyAndValue(filter.key, filter.value);
+ };
- return (
-
-
setShowModal(true) }
- onBlur={ () => setTimeout(setShowModal, 200, false) }
- onChange={ onSearchChange }
- placeholder={ 'Search sessions using any captured event (click, input, page, error...)'}
- id="search"
- type="search"
- autoComplete="off"
- className="hover:border-gray-medium"
- />
+ return (
+
+
setShowModal(true)}
+ onBlur={() => setTimeout(setShowModal, 200, false)}
+ onChange={onSearchChange}
+ placeholder={'Search sessions using any captured event (click, input, page, error...)'}
+ id="search"
+ type="search"
+ autoComplete="off"
+ className="hover:border-gray-medium text-lg placeholder-lg"
+ />
- { showModal && (
-
-
+ {showModal && (
+
+
+
+ )}
- )}
-
- );
+ );
}
-export default connect((state: any) => ({
- filterSearchList: state.getIn([ 'search', 'filterSearchList' ]),
- filterSearchListLive: state.getIn([ 'liveSearch', 'filterSearchList' ]),
- filterList: state.getIn([ 'search', 'filterList' ]),
- filterListLive: state.getIn([ 'search', 'filterListLive' ]),
-}), { })(SessionSearchField);
+export default connect(
+ (state: any) => ({
+ filterSearchList: state.getIn(['search', 'filterSearchList']),
+ filterSearchListLive: state.getIn(['liveSearch', 'filterSearchList']),
+ filterList: state.getIn(['search', 'filterList']),
+ filterListLive: state.getIn(['search', 'filterListLive']),
+ }),
+ {}
+)(SessionSearchField);
diff --git a/frontend/app/components/ui/NoContent/noContent.module.css b/frontend/app/components/ui/NoContent/noContent.module.css
index 33c63c916..dd78c8bbc 100644
--- a/frontend/app/components/ui/NoContent/noContent.module.css
+++ b/frontend/app/components/ui/NoContent/noContent.module.css
@@ -7,12 +7,12 @@
align-items: center;
flex-direction: column;
justify-content: center;
- color: $gray-medium;
- font-weight: 300;
+ color: $gray-dark;
+ /* font-weight: 500; */
transition: all 0.2s;
- padding-top: 40px;
+ padding: 40px;
- &.small {
+ /* &.small {
& .title {
font-size: 20px !important;
}
@@ -20,16 +20,17 @@
& .subtext {
font-size: 16px;
}
- }
+ } */
}
.title {
- font-size: 32px;
- margin-bottom: 15px;
+ font-size: 16px;
+ font-weight: 500;
+ /* margin-bottom: 15px; */
}
.subtext {
- font-size: 16px;
+ font-size: 14px;
margin-bottom: 20px;
}
diff --git a/frontend/app/components/ui/SVG.tsx b/frontend/app/components/ui/SVG.tsx
index a6df932b4..d5cd23f17 100644
--- a/frontend/app/components/ui/SVG.tsx
+++ b/frontend/app/components/ui/SVG.tsx
@@ -230,12 +230,11 @@ const SVG = (props: Props) => {
case 'hourglass-start': return
;
case 'id-card': return
;
case 'image': return
;
- case 'info-circle': return
;
+ case 'info-circle': return
;
case 'info-square': return
;
case 'info': return
;
case 'inspect': return
;
case 'integrations/assist': return
;
- case 'integrations/aws': return
;
case 'integrations/bugsnag-text': return
;
case 'integrations/bugsnag': return
;
case 'integrations/cloudwatch-text': return
;
@@ -244,7 +243,6 @@ const SVG = (props: Props) => {
case 'integrations/elasticsearch-text': return
;
case 'integrations/elasticsearch': return
;
case 'integrations/github': return
;
- case 'integrations/google-cloud': return
;
case 'integrations/graphql': return
;
case 'integrations/jira-text': return
;
case 'integrations/jira': return
;
diff --git a/frontend/app/duck/search.js b/frontend/app/duck/search.js
index 4acb83313..3abeb408c 100644
--- a/frontend/app/duck/search.js
+++ b/frontend/app/duck/search.js
@@ -150,7 +150,7 @@ export const reduceThenFetchResource =
filter.filters = filter.filters.map(filterMap);
filter.limit = 10;
filter.page = getState().getIn(['search', 'currentPage']);
- const forceFetch = filter.filters.length === 0;
+ const forceFetch = filter.filters.length === 0 || args[1] === true;
// duration filter from local storage
if (!filter.filters.find((f) => f.type === FilterKey.DURATION)) {
@@ -204,10 +204,10 @@ export const remove = (id) => (dispatch, getState) => {
// export const remove = createRemove(name, (id) => `/saved_search/${id}`);
-export const applyFilter = reduceThenFetchResource((filter, fromUrl = false) => ({
+export const applyFilter = reduceThenFetchResource((filter, force = false) => ({
type: APPLY,
filter,
- fromUrl,
+ force,
}));
export const updateCurrentPage = reduceThenFetchResource((page) => ({
@@ -223,9 +223,9 @@ export const applySavedSearch = (filter) => (dispatch, getState) => {
});
};
-export const fetchSessions = (filter) => (dispatch, getState) => {
+export const fetchSessions = (filter, force = false) => (dispatch, getState) => {
const _filter = filter ? filter : getState().getIn(['search', 'instance']);
- return dispatch(applyFilter(_filter));
+ return dispatch(applyFilter(_filter, force));
};
export const updateSeries = (index, series) => ({
diff --git a/frontend/app/styles/general.css b/frontend/app/styles/general.css
index 05e1d31f3..f0b80a54d 100644
--- a/frontend/app/styles/general.css
+++ b/frontend/app/styles/general.css
@@ -143,6 +143,11 @@
font-size: 14px;
}
+.placeholder-lg::placeholder {
+ color: $gray-medium !important;
+ font-size: 16px;
+}
+
.ui[class*="top fixed"].menu {
background-color: white !important;
border-bottom: solid thin #ddd !important;
diff --git a/frontend/app/svg/ca-no-bookmarked-session.svg b/frontend/app/svg/ca-no-bookmarked-session.svg
new file mode 100644
index 000000000..f3d84d404
--- /dev/null
+++ b/frontend/app/svg/ca-no-bookmarked-session.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/svg/ca-no-live-sessions.svg b/frontend/app/svg/ca-no-live-sessions.svg
new file mode 100644
index 000000000..979060448
--- /dev/null
+++ b/frontend/app/svg/ca-no-live-sessions.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/svg/ca-no-sessions-in-vault.svg b/frontend/app/svg/ca-no-sessions-in-vault.svg
new file mode 100644
index 000000000..ca9bbc9c7
--- /dev/null
+++ b/frontend/app/svg/ca-no-sessions-in-vault.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/svg/ca-no-sessions.svg b/frontend/app/svg/ca-no-sessions.svg
new file mode 100644
index 000000000..e38cd449a
--- /dev/null
+++ b/frontend/app/svg/ca-no-sessions.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/svg/icons/info-circle.svg b/frontend/app/svg/icons/info-circle.svg
index dfb82474d..1dccdda5d 100644
--- a/frontend/app/svg/icons/info-circle.svg
+++ b/frontend/app/svg/icons/info-circle.svg
@@ -1,4 +1,11 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/app/types/alert.js b/frontend/app/types/alert.js
index c16f6a87e..244047a45 100644
--- a/frontend/app/types/alert.js
+++ b/frontend/app/types/alert.js
@@ -12,7 +12,7 @@ conditions.forEach(c => { conditionsMap[c.value] = c });
export default Record({
alertId: '',
projectId: undefined,
- name: 'New Alert',
+ name: 'Untitled Alert',
description: '',
active: true,
currentPeriod: 15,