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:
@@ -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: {
|
||||
|
||||
@@ -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>
|
||||
</>
|
||||
|
||||
@@ -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>
|
||||
</>
|
||||
|
||||
Reference in New Issue
Block a user