Close Menu
Techora News HubTechora News Hub
    Facebook X (Twitter) Instagram
    Techora News HubTechora News Hub
    • Home
    • Crypto News
      • Bitcoin
      • Ethereum
      • Altcoins
      • Blockchain
      • DeFi
    • AI News
    • Stock News
    • Learn
      • AI for Beginners
      • AI Tips
      • Make Money with AI
    • Reviews
    • Tools
      • Best AI Tools
      • Crypto Market Cap List
      • Stock Market Overview
      • Market Heatmap
    • Contact
    Techora News HubTechora News Hub
    Home»AI News»How to Design Python-First Interactive Dashboards with Prefab Reactive UI Components and Static HTML Export
    AI News

    How to Design Python-First Interactive Dashboards with Prefab Reactive UI Components and Static HTML Export

    June 22, 2026
    Facebook Twitter Pinterest Telegram LinkedIn Tumblr WhatsApp Email
    How to Design Python-First Interactive Dashboards with Prefab Reactive UI Components and Static HTML Export
    Share
    Facebook Twitter LinkedIn Pinterest Telegram Email
    kraken


    import random
    from collections import Counter, defaultdict
    from datetime import date, timedelta
    from prefab_ui.actions import AppendState, OpenLink, PopState, SetState, ShowToast, ToggleState
    from prefab_ui.app import PrefabApp
    from prefab_ui.components import (
    Alert, AlertDescription, AlertTitle, Badge, Button, Card, CardContent,
    CardDescription, CardFooter, CardHeader, CardTitle, Code, Column,
    DataTable, DataTableColumn, Form, Grid, H2, Input, Markdown, Mermaid,
    Metric, Muted, Progress, Ring, Row, Slider, Small, Switch, Tab, Tabs,
    Text
    )
    from prefab_ui.components.charts import (
    BarChart, ChartSeries, LineChart, PieChart, RadarChart, ScatterChart,
    Sparkline
    )
    from prefab_ui.components.control_flow import Else, ForEach, If
    from prefab_ui.rx import EVENT, STATE
    random.seed(42)
    TODAY = date.today()
    DATES = [TODAY – timedelta(days=29 – i) for i in range(30)]
    REGIONS = [“All”, “APAC”, “EMEA”, “NA”, “LATAM”]
    PIPELINES = [
    “Customer 360 ETL”,
    “Invoice OCR”,
    “LLM Triage”,
    “Risk Scoring”,
    “Forecast Sync”,
    “Warehouse Load”,
    ]
    OWNERS = [“Data Platform”, “AI Apps”, “Revenue Ops”, “Risk Engineering”]
    STATES = [“Completed”, “Completed”, “Completed”, “Completed”, “Late”, “Failed”]
    PRIORITIES = [“P0”, “P1”, “P2”, “P3”]
    runs = []
    daily_region_rows = []
    for d in DATES:
    for region in REGIONS[1:]:
    region_bias = {
    “APAC”: 0.96,
    “EMEA”: 0.94,
    “NA”: 0.97,
    “LATAM”: 0.91,
    }[region]
    volume = random.randint(32, 78)
    failures = 0
    late = 0
    total_cost = 0.0
    total_latency = 0.0
    total_revenue = 0.0
    for i in range(volume):
    pipeline = random.choice(PIPELINES)
    owner = random.choice(OWNERS)
    state = random.choices(
    STATES,
    weights=[
    region_bias * 10,
    6,
    4,
    3,
    1.2,
    max(0.2, (1 – region_bias) * 16),
    ],
    k=1,
    )[0]
    duration = max(
    12,
    int(
    random.gauss(95, 35)
    + (20 if state == “Late” else 0)
    + (45 if state == “Failed” else 0)
    ),
    )
    cost = round(max(0.09, random.lognormvariate(-1.15, 0.55) + duration / 1800), 2)
    revenue = round(random.uniform(1.2, 8.5) * (1.3 if state == “Completed” else 0.6), 2)
    priority = random.choices(PRIORITIES, weights=[1, 3, 7, 10], k=1)[0]
    if state == “Failed”:
    failures += 1
    if state == “Late”:
    late += 1
    total_cost += cost
    total_latency += duration
    total_revenue += revenue
    if d >= TODAY – timedelta(days=10) and (state in {“Failed”, “Late”} or random.random() < 0.05):
    runs.append({
    “run_id”: f”{d.strftime(‘%m%d’)}-{region[:2]}-{len(runs)+1:04d}”,
    “date”: d.strftime(“%Y-%m-%d”),
    “pipeline”: pipeline,
    “owner”: owner,
    “region”: region,
    “state”: state,
    “priority”: priority,
    “duration_s”: duration,
    “cost_usd”: cost,
    “revenue_k”: revenue,
    “sla_gap”: round(max(0, duration – 120) / 60, 1),
    })
    daily_region_rows.append({
    “date”: d.strftime(“%b %d”),
    “region”: region,
    “runs”: volume,
    “failures”: failures,
    “late”: late,
    “success_rate”: round(100 * (volume – failures – late * 0.35) / volume, 1),
    “avg_latency”: round(total_latency / volume, 1),
    “cost_usd”: round(total_cost, 2),
    “revenue_k”: round(total_revenue, 1),
    })
    runs = sorted(
    runs,
    key=lambda r: (r[“priority”], r[“state”] != “Failed”, -r[“duration_s”])
    )[:80]
    def aggregate_daily(rows):
    by_date = defaultdict(lambda: {
    “date”: “”,
    “runs”: 0,
    “failures”: 0,
    “late”: 0,
    “cost_usd”: 0.0,
    “revenue_k”: 0.0,
    “latency_weighted”: 0.0,
    })
    for r in rows:
    bucket = by_date[r[“date”]]
    bucket[“date”] = r[“date”]
    bucket[“runs”] += r[“runs”]
    bucket[“failures”] += r[“failures”]
    bucket[“late”] += r[“late”]
    bucket[“cost_usd”] += r[“cost_usd”]
    bucket[“revenue_k”] += r[“revenue_k”]
    bucket[“latency_weighted”] += r[“avg_latency”] * r[“runs”]
    out = []
    for d in [x.strftime(“%b %d”) for x in DATES]:
    b = by_date[d]
    if b[“runs”]:
    b[“success_rate”] = round(100 * (b[“runs”] – b[“failures”] – b[“late”] * 0.35) / b[“runs”], 1)
    b[“avg_latency”] = round(b[“latency_weighted”] / b[“runs”], 1)
    b[“cost_usd”] = round(b[“cost_usd”], 2)
    b[“revenue_k”] = round(b[“revenue_k”], 1)
    del b[“latency_weighted”]
    out.append(dict(b))
    return out
    def aggregate_regions(rows):
    by_region = defaultdict(lambda: {
    “region”: “”,
    “runs”: 0,
    “failures”: 0,
    “late”: 0,
    “cost_usd”: 0.0,
    “revenue_k”: 0.0,
    “latency_weighted”: 0.0,
    })
    for r in rows:
    b = by_region[r[“region”]]
    b[“region”] = r[“region”]
    b[“runs”] += r[“runs”]
    b[“failures”] += r[“failures”]
    b[“late”] += r[“late”]
    b[“cost_usd”] += r[“cost_usd”]
    b[“revenue_k”] += r[“revenue_k”]
    b[“latency_weighted”] += r[“avg_latency”] * r[“runs”]
    out = []
    for region in REGIONS[1:]:
    b = by_region[region]
    b[“success_rate”] = round(100 * (b[“runs”] – b[“failures”] – b[“late”] * 0.35) / b[“runs”], 1)
    b[“avg_latency”] = round(b[“latency_weighted”] / b[“runs”], 1)
    b[“cost_usd”] = round(b[“cost_usd”], 2)
    b[“revenue_k”] = round(b[“revenue_k”], 1)
    b[“roi”] = round(b[“revenue_k”] / max(1, b[“cost_usd”]), 1)
    del b[“latency_weighted”]
    out.append(dict(b))
    return out
    def make_status_rows(table_rows):
    counts = Counter(r[“state”] for r in table_rows)
    return [{“state”: k, “count”: v} for k, v in counts.items()]
    def make_pipeline_rows(table_rows):
    counts = Counter(r[“pipeline”] for r in table_rows)
    return [{“pipeline”: k, “count”: v} for k, v in counts.most_common()]
    def make_kpis(region, daily_rows, table_rows):
    runs_count = sum(r[“runs”] for r in daily_rows)
    failures = sum(r[“failures”] for r in daily_rows)
    late = sum(r[“late”] for r in daily_rows)
    cost = sum(r[“cost_usd”] for r in daily_rows)
    revenue = sum(r[“revenue_k”] for r in daily_rows)
    return {
    “region”: region,
    “runs”: runs_count,
    “success_rate”: round(100 * (runs_count – failures – late * 0.35) / max(1, runs_count), 1),
    “avg_latency”: round(sum(r[“avg_latency”] * r[“runs”] for r in daily_rows) / max(1, runs_count), 1),
    “cost_usd”: round(cost, 2),
    “revenue_k”: round(revenue, 1),
    “roi”: round(revenue / max(1, cost), 1),
    “open_issues”: len(table_rows),
    “p0p1”: sum(1 for r in table_rows if r[“priority”] in {“P0”, “P1”}),
    “failure_rate”: round(100 * failures / max(1, runs_count), 2),
    “spark”: [r[“success_rate”] for r in daily_rows[-14:]],
    }
    DAILY_BY_REGION = {“All”: aggregate_daily(daily_region_rows)}
    REGION_ROWS = aggregate_regions(daily_region_rows)
    for region in REGIONS[1:]:
    DAILY_BY_REGION[region] = [r for r in daily_region_rows if r[“region”] == region]
    RUNS_BY_REGION = {
    region: [r for r in runs if region == “All” or r[“region”] == region]
    for region in REGIONS
    }
    STATUS_BY_REGION = {
    region: make_status_rows(RUNS_BY_REGION[region])
    for region in REGIONS
    }
    PIPELINE_BY_REGION = {
    region: make_pipeline_rows(RUNS_BY_REGION[region])
    for region in REGIONS
    }
    KPI_BY_REGION = {
    region: make_kpis(region, DAILY_BY_REGION[region], RUNS_BY_REGION[region])
    for region in REGIONS
    }
    WATCHLIST = sorted(
    runs,
    key=lambda r: (r[“priority”], r[“state”] != “Failed”, -r[“sla_gap”])
    )[:8]
    SCATTER_ROWS = [
    {
    “region”: r[“region”],
    “success_rate”: r[“success_rate”],
    “cost_usd”: r[“cost_usd”],
    “avg_latency”: r[“avg_latency”],
    }
    for r in REGION_ROWS
    ]
    RADAR_ROWS = [
    {“metric”: “Success”, **{r[“region”]: r[“success_rate”] for r in REGION_ROWS}},
    {“metric”: “ROI”, **{r[“region”]: min(100, r[“roi”] * 8) for r in REGION_ROWS}},
    {“metric”: “Latency”, **{r[“region”]: max(0, 100 – r[“avg_latency”] / 2) for r in REGION_ROWS}},
    {“metric”: “Cost”, **{r[“region”]: max(0, 100 – r[“cost_usd”] / 20) for r in REGION_ROWS}},
    ]
    REGION_ACTIONS = {
    region: [
    SetState(“selected_region”, region),
    SetState(“line_rows”, DAILY_BY_REGION[region]),
    SetState(“table_rows”, RUNS_BY_REGION[region]),
    SetState(“status_rows”, STATUS_BY_REGION[region]),
    SetState(“pipeline_rows”, PIPELINE_BY_REGION[region]),
    SetState(“region_kpis”, KPI_BY_REGION[region]),
    SetState(“selected_run”, None),
    ShowToast(f”Region set to {region}”, variant=”info”, duration=1800),
    ]
    for region in REGIONS
    }
    ”’



    Source link

    frase
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email

    Related Posts

    How AI coding tools are contributing to the popularity of JavaScript

    August 24, 2026

    The Developer’s Guide to NeMo Guardrails for Enterprise AI Safety

    August 23, 2026

    Paving the way for greener ammonia production | MIT News

    August 22, 2026

    Slack wants to drag AI coding out of the terminal and into the group chat

    August 21, 2026

    OpenAI president urges enterprises to hasten AI security defences

    August 20, 2026

    NVIDIA Releases TensorRT Model Connect in Public Preview: Hugging Face Checkpoint to Native C++ Inference in Two Commands

    August 19, 2026
    coinbase
    Latest Posts

    The Next Phase of Tokenization Is Utility

    August 24, 2026

    Could Ethereum Hit $5,000? On-Chain Data Fuel Bullish Case

    August 24, 2026

    Bitcoin Consolidates Near $77K as $90K Odds Hit 48%

    August 23, 2026

    Corn Rallies into Friday’s Close Following Week of Weaker Tour Yields

    August 23, 2026

    The Developer’s Guide to NeMo Guardrails for Enterprise AI Safety

    August 23, 2026
    kraken
    LEGAL INFORMATION
    • Privacy Policy
    • Terms Of Service
    • Social Media Disclaimer
    • DMCA Compliance
    • Anti-Spam Policy
    Top Insights

    How AI coding tools are contributing to the popularity of JavaScript

    August 24, 2026

    BUY HEAVY! 9 Stocks I’m Buying for My $2.9 Million Portfolio

    August 24, 2026
    notion
    Facebook X (Twitter) Instagram Pinterest
    © 2026 TechoraNewsHub.com - All rights reserved.

    Type above and press Enter to search. Press Esc to cancel.

    bitcoin
    Bitcoin (BTC) $ 77,104.00
    ethereum
    Ethereum (ETH) $ 2,445.96
    tether
    Tether (USDT) $ 0.999867
    bnb
    BNB (BNB) $ 697.79
    xrp
    XRP (XRP) $ 1.47
    usd-coin
    USDC (USDC) $ 0.99988
    solana
    Solana (SOL) $ 93.89
    tron
    TRON (TRX) $ 0.344322
    hyperliquid
    Hyperliquid (HYPE) $ 79.25
    figure-heloc
    Figure Heloc (FIGR_HELOC) $ 1.00