Merge pull request #179 from mikecao/dev

Tracker updates and global date range fix
This commit is contained in:
Mike Cao 2020-09-18 15:45:49 -07:00 committed by GitHub
commit ce567131e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 24 additions and 17 deletions

View File

@ -30,7 +30,8 @@ export default function ProfileSettings() {
} }
function handleDateChange(values) { function handleDateChange(values) {
setItem(`umami.date-range`, values); const { value } = values;
setItem(`umami.date-range`, value === 'custom' ? values : value);
dispatch(setDateRange(0, values)); dispatch(setDateRange(0, values));
} }

View File

@ -5,14 +5,20 @@ import { getItem } from 'lib/web';
export default function useDateRange(websiteId, defaultDateRange = '24hour') { export default function useDateRange(websiteId, defaultDateRange = '24hour') {
const globalDefault = getItem('umami.date-range'); const globalDefault = getItem('umami.date-range');
let globalDateRange;
if (globalDefault) { if (typeof globalDefault === 'string') {
globalDefault.startDate = parseISO(globalDefault.startDate); globalDateRange = getDateRange(globalDefault);
globalDefault.endDate = parseISO(globalDefault.endDate); } else {
globalDateRange = {
...globalDefault,
startDate: parseISO(globalDefault.startDate),
endDate: parseISO(globalDefault.endDate),
};
} }
return useSelector( return useSelector(
state => state =>
state.websites[websiteId]?.dateRange || globalDefault || getDateRange(defaultDateRange), state.websites[websiteId]?.dateRange || globalDateRange || getDateRange(defaultDateRange),
); );
} }

View File

@ -23,7 +23,7 @@ export const FILTER_DOMAIN_ONLY = 0;
export const FILTER_COMBINED = 1; export const FILTER_COMBINED = 1;
export const FILTER_RAW = 2; export const FILTER_RAW = 2;
export const DOMAIN_REGEX = /((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}/; export const DOMAIN_REGEX = /localhost(:\d{1,5})?|((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}/;
export const DESKTOP_SCREEN_WIDTH = 1920; export const DESKTOP_SCREEN_WIDTH = 1920;
export const LAPTOP_SCREEN_WIDTH = 1024; export const LAPTOP_SCREEN_WIDTH = 1024;

View File

@ -64,7 +64,7 @@ import { removeTrailingSlash } from '../lib/url';
}); });
}; };
const pageView = (url = currentUrl, referrer = currentRef, uuid = website) => const trackView = (url = currentUrl, referrer = currentRef, uuid = website) =>
collect( collect(
'pageview', 'pageview',
{ {
@ -74,7 +74,7 @@ import { removeTrailingSlash } from '../lib/url';
uuid, uuid,
); );
const pageEvent = (event_value, event_type = 'custom', url = currentUrl, uuid = website) => const trackEvent = (event_value, event_type = 'custom', url = currentUrl, uuid = website) =>
collect( collect(
'event', 'event',
{ {
@ -87,12 +87,12 @@ import { removeTrailingSlash } from '../lib/url';
/* Handle events */ /* Handle events */
const loadEvents = () => { const addEvents = () => {
document.querySelectorAll("[class*='umami--']").forEach(element => { document.querySelectorAll("[class*='umami--']").forEach(element => {
element.className.split(' ').forEach(className => { element.className.split(' ').forEach(className => {
if (/^umami--([a-z]+)--([a-z0-9_]+[a-z0-9-_]+)$/.test(className)) { if (/^umami--([a-z]+)--([a-z0-9_]+[a-z0-9-_]+)$/.test(className)) {
const [, type, value] = className.split('--'); const [, type, value] = className.split('--');
const listener = () => pageEvent(value, type); const listener = () => trackEvent(value, type);
listeners.push([element, type, listener]); listeners.push([element, type, listener]);
element.addEventListener(type, listener, true); element.addEventListener(type, listener, true);
@ -123,17 +123,17 @@ import { removeTrailingSlash } from '../lib/url';
currentUrl = newUrl; currentUrl = newUrl;
} }
pageView(currentUrl, currentRef); trackView(currentUrl, currentRef);
setTimeout(loadEvents, 300); setTimeout(addEvents, 300);
}; };
/* Global */ /* Global */
if (!window.umami) { if (!window.umami) {
const umami = event_value => pageEvent(event_value); const umami = event_value => trackEvent(event_value);
umami.pageView = pageView; umami.trackView = trackView;
umami.pageEvent = pageEvent; umami.trackEvent = trackEvent;
window.umami = umami; window.umami = umami;
} }
@ -144,8 +144,8 @@ import { removeTrailingSlash } from '../lib/url';
history.pushState = hook(history, 'pushState', handlePush); history.pushState = hook(history, 'pushState', handlePush);
history.replaceState = hook(history, 'replaceState', handlePush); history.replaceState = hook(history, 'replaceState', handlePush);
pageView(currentUrl, currentRef); trackView(currentUrl, currentRef);
loadEvents(); addEvents();
} }
})(window); })(window);