यह ब्लॉग खोजें

रविवार, अगस्त 10, 2025

import React, { useState } from 'react'; const translations = { en: { title: "AstroTool - Detailed Jyotish Prediction", name: "Name", date: "Date", time: "Time", tzOffset: "Timezone Offset (e.g. +05:45)", lat: "Latitude", lon: "Longitude", calculate: "Calculate", reset: "Reset", download: "Download JSON", results: "Results", loading: "Calculating...", langSwitch: "Switch Language", error: "Please fill all required fields.", }, ne: { title: "ज्योतिष टुल - विस्तृत फलादेश", name: "नाम", date: "मिति", time: "समय", tzOffset: "समय क्षेत्र (जस्तै +05:45)", lat: "अक्षांश", lon: "देशान्तर", calculate: "गणना गर्नुहोस्", reset: "रिसेट", download: "डाउनलोड गर्नुहोस् JSON", results: "परिणामहरू", loading: "गणना हुँदैछ...", langSwitch: "भाषा परिवर्तन गर्नुहोस्", error: "कृपया सबै आवश्यक विवरणहरू भर्नुहोस्।", } }; export default function AstroTool() { const [lang, setLang] = useState('ne'); const t = translations[lang]; const [inputs, setInputs] = useState({ name: '', date: '', time: '', tzOffset: '+05:45', lat: '27.7', lon: '85.3', }); const [loading, setLoading] = useState(false); const [result, setResult] = useState(null); function handleChange(e) { setInputs({ ...inputs, [e.target.name]: e.target.value }); } async function handleSubmit(e) { e.preventDefault(); // Simple validation if (!inputs.date || !inputs.time || !inputs.lat || !inputs.lon) { alert(t.error); return; } setLoading(true); setResult(null); try { // Call backend API or local mock calculation here // For demo, use a local mock: const res = await mockAstroCalculation(inputs); setResult(res); } catch (err) { alert(err.message || 'Error'); } finally { setLoading(false); } } function downloadJSON() { if (!result) return; const blob = new Blob([JSON.stringify(result, null, 2)], { type: 'application/json' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `${result.name || 'astro'}-result.json`; a.click(); URL.revokeObjectURL(url); } // Mock calculation function simulating backend response async function mockAstroCalculation({ name, date, time, tzOffset, lat, lon }) { // Simulate delay await new Promise(r => setTimeout(r, 1000)); // Simple demo: calculate sun & moon lon approx by date difference from 2000-01-01 const baseDate = new Date(Date.UTC(2000, 0, 1, 12, 0, 0)); const userDate = new Date(`${date}T${time}:00`); const diffDays = (userDate.getTime() - baseDate.getTime()) / (1000 * 60 * 60 * 24); const sunLon = (280.460 + 0.9856474 * diffDays) % 360; const moonLon = (218.316 + 13.176396 * diffDays) % 360; // Ascendant approx from longitude const ascSign = Math.floor((parseFloat(lon) / 30)) + 1; const ascDegree = (parseFloat(lon) % 30).toFixed(2); return { name: name || 'Unknown', date, time, tzOffset, lat, lon, planets: { Sun: { lon: sunLon.toFixed(2), sign: ascSign }, Moon: { lon: moonLon.toFixed(2), sign: ascSign } }, ascendant: { sign: ascSign, degree: ascDegree }, panchang: { tithi: Math.floor(((moonLon - sunLon + 360) % 360) / 12) + 1, nakshatra: Math.floor((moonLon % 360) / (360 / 27)) + 1, }, predictions: { summary: 'यो एक नमूना ज्योतिष फलादेश हो। वास्तविक गणनाका लागि backend API जोड्नुहोस्।' }, generatedAt: new Date().toISOString(), }; } return (

{t.title}

{result && (

{t.results}

              {JSON.stringify(result, null, 2)}
            
)}
); }

कोई टिप्पणी नहीं:

एक टिप्पणी भेजें

ज्योतिष बास्तु