Location: app/src/pages/dashboard/src/cards/page-analytics/
Location: app/src/pages/dashboard/src/cards/device-usage/
Location: app/src/pages/dashboard/src/cards/active-users/
Location: app/src/pages/dashboard/src/cards/page-views-chart/
Location: app/src/pages/dashboard/src/cards/top-pages/
Location: app/src/pages/dashboard/src/cards/top-countries/
Location: app/src/pages/dashboard/src/cards/top-referrers/
Location: app/src/pages/dashboard/src/cards/bounce-rate-time/
Location: app/src/pages/dashboard/src/cards/analytics-map/
// Analytics data fetching
const loadAnalytics = async () => {
loading.value = true;
try {
const response = await lmnFetch({
endpoint: 'uixpress/v1/analytics',
type: 'GET',
params: {
start_date: props.dateRange[0].toISOString(),
end_date: props.dateRange[1].toISOString(),
metric: 'page_views', // or other metrics
},
});
analytics.value = response.data;
} catch (err) {
error.value = err.message;
} finally {
loading.value = false;
}
};
// Chart.js setup for visualizations
import { Line } from 'vue-chartjs';
import {
Chart as ChartJS,
CategoryScale,
LinearScale,
PointElement,
LineElement,
Title,
Tooltip,
Legend,
Filler,
} from 'chart.js';
ChartJS.register(
CategoryScale,
LinearScale,
PointElement,
LineElement,
Title,
Tooltip,
Legend,
Filler
);
All analytics cards automatically update when the date range changes:
watch(
() => props.dateRange,
(newRange) => {
loadAnalytics();
},
{ deep: true }
);
Most analytics cards require edit_posts capability to view analytics data. This ensures only authorized users can access traffic and visitor information.