Enhance dashboard data fetching by adding active site checks

- Implemented checks for active site in Home, Planner, and Writer dashboards to prevent data fetching when no site is selected.
- Updated API calls to include site_id in requests for better data accuracy.
- Modified user messages to guide users in selecting an active site for insights.
This commit is contained in:
alorig
2025-11-17 17:22:15 +05:00
parent 4b21009cf8
commit 75ba407df5
3 changed files with 42 additions and 16 deletions

View File

@@ -199,16 +199,22 @@ export default function Home() {
];
const fetchAppInsights = async () => {
if (!activeSite) {
setInsights(null);
setLoading(false);
return;
}
try {
setLoading(true);
const [keywordsRes, clustersRes, ideasRes, tasksRes, contentRes, imagesRes] = await Promise.all([
fetchKeywords({ page_size: 1, site_id: undefined }),
fetchClusters({ page_size: 1, site_id: undefined }),
fetchContentIdeas({ page_size: 1, site_id: undefined }),
fetchTasks({ page_size: 1, site_id: undefined }),
fetchContent({ page_size: 1, site_id: undefined }),
fetchContentImages({ page_size: 1, site_id: undefined })
fetchKeywords({ page_size: 1, site_id: activeSite.id, sector_id: activeSector?.id }),
fetchClusters({ page_size: 1, site_id: activeSite.id, sector_id: activeSector?.id }),
fetchContentIdeas({ page_size: 1, site_id: activeSite.id, sector_id: activeSector?.id }),
fetchTasks({ page_size: 1, site_id: activeSite.id, sector_id: activeSector?.id }),
fetchContent({ page_size: 1, site_id: activeSite.id, sector_id: activeSector?.id }),
fetchContentImages({ site_id: activeSite.id, sector_id: activeSector?.id })
]);
const totalKeywords = keywordsRes.count || 0;
@@ -248,7 +254,7 @@ export default function Home() {
useEffect(() => {
fetchAppInsights();
}, [activeSite, activeSector]);
}, [activeSite?.id, activeSector?.id]);
const chartOptions: ApexOptions = {
chart: {

View File

@@ -73,14 +73,20 @@ export default function PlannerDashboard() {
// Fetch real data
const fetchDashboardData = async () => {
if (!activeSite) {
setStats(null);
setLoading(false);
return;
}
try {
setLoading(true);
const [keywordsRes, clustersRes, ideasRes, tasksRes] = await Promise.all([
fetchKeywords({ page_size: 1000, sector_id: activeSector?.id }),
fetchClusters({ page_size: 1000, sector_id: activeSector?.id }),
fetchContentIdeas({ page_size: 1000, sector_id: activeSector?.id }),
fetchTasks({ page_size: 1000, sector_id: activeSector?.id })
fetchKeywords({ page_size: 1000, site_id: activeSite.id, sector_id: activeSector?.id }),
fetchClusters({ page_size: 1000, site_id: activeSite.id, sector_id: activeSector?.id }),
fetchContentIdeas({ page_size: 1000, site_id: activeSite.id, sector_id: activeSector?.id }),
fetchTasks({ page_size: 1000, site_id: activeSite.id, sector_id: activeSector?.id })
]);
const keywords = keywordsRes.results || [];
@@ -439,7 +445,11 @@ export default function PlannerDashboard() {
<PageMeta title="Planner Dashboard - IGNY8" description="Content planning overview" />
<div className="text-center py-12">
<p className="text-gray-600 dark:text-gray-400">
{activeSector ? 'No data available for the selected sector.' : 'No data available. Select a sector or wait for data to load.'}
{!activeSite
? 'Select an active site to view planner insights.'
: activeSector
? 'No data available for the selected sector.'
: 'No data available. Select a sector or wait for data to load.'}
</p>
</div>
</>

View File

@@ -78,13 +78,19 @@ export default function WriterDashboard() {
const [lastUpdated, setLastUpdated] = useState<Date>(new Date());
const fetchDashboardData = async () => {
if (!activeSite) {
setStats(null);
setLoading(false);
return;
}
try {
setLoading(true);
const [tasksRes, contentRes, imagesRes] = await Promise.all([
fetchTasks({ page_size: 1000, sector_id: activeSector?.id }),
fetchContent({ page_size: 1000, sector_id: activeSector?.id }),
fetchContentImages({ sector_id: activeSector?.id })
fetchTasks({ page_size: 1000, site_id: activeSite.id, sector_id: activeSector?.id }),
fetchContent({ page_size: 1000, site_id: activeSite.id, sector_id: activeSector?.id }),
fetchContentImages({ site_id: activeSite.id, sector_id: activeSector?.id })
]);
const tasks = tasksRes.results || [];
@@ -447,7 +453,11 @@ export default function WriterDashboard() {
<PageMeta title="Writer Dashboard - IGNY8" description="Content creation overview" />
<div className="text-center py-12">
<p className="text-gray-600 dark:text-gray-400">
{activeSector ? 'No data available for the selected sector.' : 'No data available. Select a sector or wait for data to load.'}
{!activeSite
? 'Select an active site to view writer insights.'
: activeSector
? 'No data available for the selected sector.'
: 'No data available. Select a sector or wait for data to load.'}
</p>
</div>
</>