diff --git a/components/messages.js b/components/messages.js
index 9a72ff75..c29432b1 100644
--- a/components/messages.js
+++ b/components/messages.js
@@ -83,6 +83,7 @@ export const labels = defineMessages({
filterRaw: { id: 'label.filter-raw', defaultMessage: 'Raw' },
views: { id: 'label.views', defaultMessage: 'View' },
none: { id: 'label.none', defaultMessage: 'None' },
+ clearAll: { id: 'label.clear-all', defaultMessage: 'Clear all' },
});
export const messages = defineMessages({
diff --git a/components/metrics/FilterTags.js b/components/metrics/FilterTags.js
index 75d38371..0e68504b 100644
--- a/components/metrics/FilterTags.js
+++ b/components/metrics/FilterTags.js
@@ -1,22 +1,29 @@
+import { useIntl } from 'react-intl';
import classNames from 'classnames';
import { safeDecodeURI } from 'next-basics';
-import { Button, Icon, Icons } from 'react-basics';
+import { Button, Icon, Icons, Text } from 'react-basics';
+import { labels } from 'components/messages';
import styles from './FilterTags.module.css';
export default function FilterTags({ className, params, onClick }) {
+ const { formatMessage } = useIntl();
+
if (Object.keys(params).filter(key => params[key]).length === 0) {
return null;
}
+
return (
-
+
{Object.keys(params).map(key => {
if (!params[key]) {
return null;
}
return (
-
);
})}
+
onClick(null)}>
+
+
+
+ {formatMessage(labels.clearAll)}
+
);
}
diff --git a/components/metrics/WebsiteChart.js b/components/metrics/WebsiteChart.js
index 1d23df7a..73b9b6da 100644
--- a/components/metrics/WebsiteChart.js
+++ b/components/metrics/WebsiteChart.js
@@ -34,7 +34,7 @@ export default function WebsiteChart({
const {
router,
resolve,
- query: { url, referrer, os, browser, device, country },
+ query: { view, url, referrer, os, browser, device, country },
} = usePageQuery();
const { get, useQuery } = useApi();
@@ -67,7 +67,11 @@ export default function WebsiteChart({
}, [data, startDate, endDate, unit]);
function handleCloseFilter(param) {
- router.push(resolve({ [param]: undefined }));
+ if (param === null) {
+ router.push(`/websites/${websiteId}/?view=${view}`);
+ } else {
+ router.push(resolve({ [param]: undefined }));
+ }
}
async function handleDateChange(value) {
@@ -97,11 +101,11 @@ export default function WebsiteChart({
)}
-
+
diff --git a/components/pages/realtime/RealtimeDashboard.js b/components/pages/realtime/RealtimeDashboard.js
index 941d0f0c..552c726a 100644
--- a/components/pages/realtime/RealtimeDashboard.js
+++ b/components/pages/realtime/RealtimeDashboard.js
@@ -1,9 +1,9 @@
import { useState, useEffect, useMemo, useCallback } from 'react';
+import { Row, Column } from 'react-basics';
import { FormattedMessage } from 'react-intl';
import { subMinutes, startOfMinute } from 'date-fns';
import firstBy from 'thenby';
import Page from 'components/layout/Page';
-import GridLayout, { GridRow, GridColumn } from 'components/layout/GridLayout';
import RealtimeChart from 'components/metrics/RealtimeChart';
import RealtimeLog from 'components/metrics/RealtimeLog';
import RealtimeHeader from 'components/metrics/RealtimeHeader';
@@ -129,29 +129,27 @@ export default function RealtimeDashboard() {
-
-
-
-
-
-
-
-
-
-
-
- }
- metric={}
- data={countries}
- renderLabel={renderCountryName}
- />
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+ }
+ metric={}
+ data={countries}
+ renderLabel={renderCountryName}
+ />
+
+
+
+
+
);
}