#!/bin/bash # BlackRoad OS - Custom Dashboard Builder # Interactive dashboard builder source ~/blackroad-dashboards/themes.sh load_theme BUILDER_STATE=~/blackroad-dashboards/.builder_state OUTPUT_DIR=~/blackroad-dashboards/custom mkdir -p "$OUTPUT_DIR" # Initialize builder state init_builder() { cat > "$BUILDER_STATE" < "$output_file" <<'DASHBOARD_CODE' #!/bin/bash # Custom Dashboard - Generated by Dashboard Builder # Created: $(date) source ~/blackroad-dashboards/themes.sh load_theme show_dashboard() { clear echo "" echo -e "${BOLD}${PURPLE}╔════════════════════════════════════════════════════════════════════════╗${RESET}" echo -e "${BOLD}${PURPLE}║${RESET} ${ORANGE}📊${RESET} ${BOLD}MY CUSTOM DASHBOARD${RESET} ${BOLD}${PURPLE}║${RESET}" echo -e "${BOLD}${PURPLE}╚════════════════════════════════════════════════════════════════════════╝${RESET}" echo "" # Section 1: System Metrics echo -e "${TEXT_MUTED}╭─ SYSTEM METRICS ──────────────────────────────────────────────────────╮${RESET}" echo "" local cpu=$((40 + RANDOM % 30)) local mem=$((50 + RANDOM % 20)) echo -e " ${ORANGE}CPU Usage${RESET} ${ORANGE}████████████${RESET} ${BOLD}${cpu}%${RESET}" echo -e " ${PINK}Memory${RESET} ${PINK}████████████████${RESET} ${BOLD}5.8 GB${RESET}" echo -e " ${PURPLE}Disk I/O${RESET} ${PURPLE}██████${RESET} ${BOLD}847 MB/s${RESET}" echo "" # Section 2: API Health echo -e "${TEXT_MUTED}╭─ API HEALTH ──────────────────────────────────────────────────────────╮${RESET}" echo "" echo -e " ${CYAN}Response Time${RESET} ${GREEN}▁▂▃▄▅▆▇█▇▆▅▄▃▂▁${RESET} ${BOLD}23ms${RESET}" echo -e " ${BLUE}Requests/sec${RESET} ${BOLD}12,400${RESET}" echo -e " ${GREEN}Success Rate${RESET} ${BOLD}98.7%${RESET}" echo "" # Section 3: Containers echo -e "${TEXT_MUTED}╭─ RUNNING CONTAINERS ──────────────────────────────────────────────────╮${RESET}" echo "" echo -e " ${GREEN}●${RESET} ${BOLD}lucidia-earth${RESET} ${TEXT_MUTED}:3040${RESET} ${GREEN}UP${RESET} ${BOLD}12%${RESET} CPU" echo -e " ${GREEN}●${RESET} ${BOLD}docs-blackroad${RESET} ${TEXT_MUTED}:3050${RESET} ${GREEN}UP${RESET} ${BOLD}14%${RESET} CPU" echo -e " ${GREEN}●${RESET} ${BOLD}api-server${RESET} ${TEXT_MUTED}:9444${RESET} ${GREEN}UP${RESET} ${BOLD}34%${RESET} CPU" echo "" echo -e "${PURPLE}─────────────────────────────────────────────────────────────────────────${RESET}" echo -e " ${TEXT_SECONDARY}[R]${RESET} Refresh ${TEXT_SECONDARY}[E]${RESET} Edit ${TEXT_SECONDARY}[Q]${RESET} Quit" echo "" } # Main loop while true; do show_dashboard read -n1 -t 5 key case "$key" in 'e'|'E') ${EDITOR:-nano} "$0" ;; 'q'|'Q') exit 0 ;; esac done DASHBOARD_CODE chmod +x "$output_file" echo -e " ${GREEN}✓${RESET} Dashboard generated: ${CYAN}$name${RESET}" echo -e " ${TEXT_MUTED}Location: $output_file${RESET}" echo "" echo -e "${GREEN}Run with: ${CYAN}$output_file${RESET}" sleep 3 } # Main loop main() { init_builder while true; do show_builder read -n1 key case "$key" in 'm'|'M') add_section "metrics" ;; 'c'|'C') add_section "chart" ;; 't'|'T') add_section "table" ;; 'a'|'A') add_section "alert" ;; 's'|'S') add_section "status" ;; 'l'|'L') add_section "logs" ;; 'g'|'G') generate_dashboard ;; 'p'|'P') echo -e "\n${CYAN}Opening preview...${RESET}" sleep 1 ;; 'q'|'Q') echo -e "\n${CYAN}Goodbye!${RESET}\n" exit 0 ;; esac done } # Run main