#!/usr/bin/env python3
"""
لوحة تحكم تفاعلية لـ Snow Dust
"""
import time
import math
import sys
import os

class SnowDustDashboard:
    """لوحة تحكم للنظام"""
    
    def __init__(self):
        self.running = True
        
    def clear_screen(self):
        """مسح الشاشة"""
        os.system('clear' if os.name == 'posix' else 'cls')
        
    def display_header(self):
        """عرض الترويسة"""
        print("╔══════════════════════════════════════════════════════════════╗")
        print("║                  ❄️  SNOW DUST DASHBOARD                     ║")
        print("╠══════════════════════════════════════════════════════════════╣")
        print("║ نظام الملاحة الكهرومغناطيسي في الظروف البيضاء القطبية     ║")
        print("╚══════════════════════════════════════════════════════════════╝")
        
    def display_status(self, data):
        """عرض حالة النظام"""
        print("\n📊 حالة النظام الحالية:")
        print(f"   📍 الموقع: X={data['x']:7.2f}m, Y={data['y']:7.2f}m, Z={data['z']:7.2f}m")
        print(f"   🧭 الاتجاه: {data['heading']:6.1f}°")
        print(f"   🏎️  السرعة: {data['speed']:6.2f} م/ث")
        print(f"   ⚡ المجال: {data['field']:8.2f} فولت/متر")
        print(f"   🔋 الثقة:  {data['confidence']*100:5.1f}%")
        
        # شريط الثقة
        confidence_bar = "█" * int(data['confidence'] * 20) + "░" * int((1 - data['confidence']) * 20)
        print(f"   📊 [{confidence_bar}]")
        
    def display_menu(self):
        """عرض القائمة"""
        print("\n🎮 الأوامر المتاحة:")
        print("   1. ▶️  بدء/استئناف المحاكاة")
        print("   2. ⏸️  إيقاف مؤقت")
        print("   3. ⏹️  إيقاف")
        print("   4. 📈 تغيير سرعة المحاكاة")
        print("   5. 📊 عرض التقرير")
        print("   6. 💾 حفظ البيانات")
        print("   7. 🚪 خروج")
        
    def run(self):
        """تشغيل اللوحة"""
        self.clear_screen()
        self.display_header()
        
        # بيانات محاكاة
        sim_data = {
            'x': 0.0, 'y': 0.0, 'z': 0.0,
            'heading': 0.0,
            'speed': 0.0,
            'field': 0.0,
            'confidence': 0.7,
            'running': True
        }
        
        sim_time = 0
        update_rate = 8.3
        
        while self.running:
            try:
                # محاكاة بيانات جديدة
                sim_time += 1/update_rate
                
                # تحديث البيانات
                sim_data['x'] += math.cos(math.radians(sim_data['heading'])) * 0.1
                sim_data['y'] += math.sin(math.radians(sim_data['heading'])) * 0.1
                sim_data['heading'] = (sim_data['heading'] + math.sin(sim_time) * 2) % 360
                sim_data['speed'] = 0.1 * update_rate
                sim_data['field'] = 50 * math.sin(sim_time * 2) + 10 * math.sin(sim_time * 5)
                sim_data['confidence'] = 0.7 + 0.2 * math.sin(sim_time * 0.5)
                
                # عرض الحالة
                self.display_status(sim_data)
                self.display_menu()
                
                # انتظار الإدخال
                choice = input("\n📝 اختر أمراً (1-7): ").strip()
                
                if choice == '1':
                    print("▶️  بدء المحاكاة...")
                    time.sleep(0.5)
                elif choice == '2':
                    print("⏸️  إيقاف مؤقت...")
                    input("اضغط Enter للمتابعة...")
                elif choice == '3':
                    print("⏹️  إيقاف المحاكاة...")
                    sim_data = {k: 0.0 if isinstance(v, float) else v for k, v in sim_data.items()}
                elif choice == '4':
                    new_rate = input("أدخل معدل التحديث الجديد (هرتز): ")
                    try:
                        update_rate = float(new_rate)
                        print(f"✅ تم تغيير المعدل إلى {update_rate} هرتز")
                    except:
                        print("❌ قيمة غير صحيحة")
                elif choice == '5':
                    print("\n📈 تقرير النظام:")
                    print(f"   زمن المحاكاة: {sim_time:.1f} ثانية")
                    print(f"   الموقع الحالي: ({sim_data['x']:.2f}, {sim_data['y']:.2f})")
                    print(f"   معدل التحديث: {update_rate} هرتز")
                    input("\nاضغط Enter للمتابعة...")
                elif choice == '6':
                    with open('dashboard_data.txt', 'w') as f:
                        f.write(str(sim_data))
                    print("💾 تم حفظ البيانات")
                elif choice == '7':
                    print("🚪 جاري الخروج...")
                    self.running = False
                else:
                    print("❌ أمر غير صحيح")
                    
                self.clear_screen()
                self.display_header()
                
            except KeyboardInterrupt:
                print("\n\n⏹️  تم إيقاف التشغيل بواسطة المستخدم")
                self.running = False
                
        print("\n✅ تم إنهاء لوحة التحكم بنجاح")

if __name__ == "__main__":
    dashboard = SnowDustDashboard()
    dashboard.run()
