fix(national): Fix active states count and remove StateBadge
- Change active_states to count states with crawl_enabled=true dispensaries - Filter all national summary queries by crawl_enabled=true - Remove unused StateBadge from National Dashboard header - StateBadge was showing "Arizona" with no way to change it 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -702,22 +702,23 @@ export class StateQueryService {
|
|||||||
async getNationalSummary(): Promise<NationalSummary> {
|
async getNationalSummary(): Promise<NationalSummary> {
|
||||||
const stateMetrics = await this.getAllStateMetrics();
|
const stateMetrics = await this.getAllStateMetrics();
|
||||||
|
|
||||||
|
// Active states = states with at least one crawl-enabled dispensary
|
||||||
const result = await this.pool.query(`
|
const result = await this.pool.query(`
|
||||||
SELECT
|
SELECT
|
||||||
COUNT(DISTINCT s.code) AS total_states,
|
COUNT(DISTINCT s.code) AS total_states,
|
||||||
COUNT(DISTINCT CASE WHEN EXISTS (
|
COUNT(DISTINCT CASE WHEN EXISTS (
|
||||||
SELECT 1 FROM dispensaries d WHERE d.state = s.code AND d.menu_type IS NOT NULL
|
SELECT 1 FROM dispensaries d WHERE d.state = s.code AND d.crawl_enabled = true
|
||||||
) THEN s.code END) AS active_states,
|
) THEN s.code END) AS active_states,
|
||||||
(SELECT COUNT(*) FROM dispensaries WHERE state IS NOT NULL) AS total_stores,
|
(SELECT COUNT(*) FROM dispensaries WHERE state IS NOT NULL AND crawl_enabled = true) AS total_stores,
|
||||||
(SELECT COUNT(*) FROM store_products sp
|
(SELECT COUNT(*) FROM store_products sp
|
||||||
JOIN dispensaries d ON sp.dispensary_id = d.id
|
JOIN dispensaries d ON sp.dispensary_id = d.id
|
||||||
WHERE d.state IS NOT NULL) AS total_products,
|
WHERE d.state IS NOT NULL AND d.crawl_enabled = true) AS total_products,
|
||||||
(SELECT COUNT(DISTINCT brand_id) FROM store_products sp
|
(SELECT COUNT(DISTINCT brand_id) FROM store_products sp
|
||||||
JOIN dispensaries d ON sp.dispensary_id = d.id
|
JOIN dispensaries d ON sp.dispensary_id = d.id
|
||||||
WHERE d.state IS NOT NULL AND sp.brand_id IS NOT NULL) AS total_brands,
|
WHERE d.state IS NOT NULL AND d.crawl_enabled = true AND sp.brand_id IS NOT NULL) AS total_brands,
|
||||||
(SELECT AVG(price_rec) FROM store_products sp
|
(SELECT AVG(price_rec) FROM store_products sp
|
||||||
JOIN dispensaries d ON sp.dispensary_id = d.id
|
JOIN dispensaries d ON sp.dispensary_id = d.id
|
||||||
WHERE d.state IS NOT NULL AND sp.price_rec > 0) AS avg_price_national
|
WHERE d.state IS NOT NULL AND d.crawl_enabled = true AND sp.price_rec > 0) AS avg_price_national
|
||||||
FROM states s
|
FROM states s
|
||||||
`);
|
`);
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
import { useState, useEffect } from 'react';
|
import { useState, useEffect } from 'react';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
import { Layout } from '../components/Layout';
|
import { Layout } from '../components/Layout';
|
||||||
import { StateBadge } from '../components/StateSelector';
|
|
||||||
import { useStateStore } from '../store/stateStore';
|
import { useStateStore } from '../store/stateStore';
|
||||||
import { api } from '../lib/api';
|
import { api } from '../lib/api';
|
||||||
import {
|
import {
|
||||||
@@ -286,7 +285,6 @@ export default function NationalDashboard() {
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-3">
|
<div className="flex items-center gap-3">
|
||||||
<StateBadge />
|
|
||||||
<button
|
<button
|
||||||
onClick={handleRefreshMetrics}
|
onClick={handleRefreshMetrics}
|
||||||
disabled={refreshing}
|
disabled={refreshing}
|
||||||
|
|||||||
Reference in New Issue
Block a user