date-fns#startOfMinute JavaScript Examples
The following examples show how to use
date-fns#startOfMinute.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: RealtimeChart.js From umami with MIT License | 6 votes |
function mapData(data) {
let last = 0;
const arr = [];
data.reduce((obj, val) => {
const { created_at } = val;
const t = startOfMinute(parseISO(created_at));
if (t.getTime() > last) {
obj = { t: format(t, 'yyyy-LL-dd HH:mm:00'), y: 1 };
arr.push(obj);
last = t;
} else {
obj.y += 1;
}
return obj;
}, {});
return arr;
}
Example #2
Source File: RealtimeChart.js From umami with MIT License | 6 votes |
export default function RealtimeChart({ data, unit, ...props }) {
const endDate = startOfMinute(new Date());
const startDate = subMinutes(endDate, REALTIME_RANGE);
const prevEndDate = useRef(endDate);
const chartData = useMemo(() => {
if (data) {
return {
pageviews: getDateArray(mapData(data.pageviews), startDate, endDate, unit),
sessions: getDateArray(mapData(data.sessions), startDate, endDate, unit),
};
}
return { pageviews: [], sessions: [] };
}, [data]);
// Don't animate the bars shifting over because it looks weird
const animationDuration = useMemo(() => {
if (isBefore(prevEndDate.current, endDate)) {
prevEndDate.current = endDate;
return 0;
}
return DEFAULT_ANIMATION_DURATION;
}, [data]);
return (
<PageviewsChart
{...props}
height={200}
unit={unit}
data={chartData}
animationDuration={animationDuration}
/>
);
}
Example #3
Source File: date.js From umami with MIT License | 5 votes |
dateFuncs = { minute: [differenceInMinutes, addMinutes, startOfMinute], hour: [differenceInHours, addHours, startOfHour], day: [differenceInCalendarDays, addDays, startOfDay], month: [differenceInCalendarMonths, addMonths, startOfMonth], year: [differenceInCalendarYears, addYears, startOfYear], }
Example #4
Source File: RealtimeDashboard.js From umami with MIT License | 4 votes |
export default function RealtimeDashboard() { const { locale } = useLocale(); const countryNames = useCountryNames(locale); const [data, setData] = useState(); const [websiteId, setWebsiteId] = useState(0); const { data: init, loading } = useFetch('/realtime/init'); const { data: updates } = useFetch('/realtime/update', { params: { start_at: data?.timestamp }, disabled: !init?.websites?.length || !data, interval: REALTIME_INTERVAL, headers: { [SHARE_TOKEN_HEADER]: init?.token }, }); const renderCountryName = useCallback( ({ x }) => <span className={locale}>{countryNames[x]}</span>, [countryNames], ); const realtimeData = useMemo(() => { if (data) { const { pageviews, sessions, events } = data; if (websiteId) { return { pageviews: filterWebsite(pageviews, websiteId), sessions: filterWebsite(sessions, websiteId), events: filterWebsite(events, websiteId), }; } } return data; }, [data, websiteId]); const countries = useMemo(() => { if (realtimeData?.sessions) { return percentFilter( realtimeData.sessions .reduce((arr, { country }) => { if (country) { const row = arr.find(({ x }) => x === country); if (!row) { arr.push({ x: country, y: 1 }); } else { row.y += 1; } } return arr; }, []) .sort(firstBy('y', -1)), ); } return []; }, [realtimeData?.sessions]); useEffect(() => { if (init && !data) { const { websites, data } = init; setData({ websites, ...data }); } }, [init]); useEffect(() => { if (updates) { const { pageviews, sessions, events, timestamp } = updates; const time = subMinutes(startOfMinute(new Date()), REALTIME_RANGE).getTime(); setData(state => ({ ...state, pageviews: mergeData(state.pageviews, pageviews, time), sessions: mergeData(state.sessions, sessions, time), events: mergeData(state.events, events, time), timestamp, })); } }, [updates]); if (!init || !data || loading) { return null; } const { websites } = data; return ( <Page> <RealtimeHeader websites={websites} websiteId={websiteId} data={{ ...realtimeData, countries }} onSelect={setWebsiteId} /> <div className={styles.chart}> <RealtimeChart websiteId={websiteId} data={realtimeData} unit="minute" records={REALTIME_RANGE} /> </div> <GridLayout> <GridRow> <GridColumn xs={12} lg={4}> <RealtimeViews websiteId={websiteId} data={realtimeData} websites={websites} /> </GridColumn> <GridColumn xs={12} lg={8}> <RealtimeLog websiteId={websiteId} data={realtimeData} websites={websites} /> </GridColumn> </GridRow> <GridRow> <GridColumn xs={12} lg={4}> <DataTable title={<FormattedMessage id="metrics.countries" defaultMessage="Countries" />} metric={<FormattedMessage id="metrics.visitors" defaultMessage="Visitors" />} data={countries} renderLabel={renderCountryName} /> </GridColumn> <GridColumn xs={12} lg={8}> <WorldMap data={countries} /> </GridColumn> </GridRow> </GridLayout> </Page> ); }