in src/front/src/components/SearchPanel/SearchPanel.js [17:111]
function SearchPanel() {
const {
transientName, ra, dec, ang, eventType, physicalObject, messengerType
} = useContext(SearchParamsContext);
const [windowHeightClass, setWindowHeightClass] = useState('');
const [isLoading, setIsLoading] = useState(false);
const [isDisabled, setIsDisabled] = useState(false);
const [page, setPage] = useState(1);
const {setMessagesData, setTotalMessages} = useContext(MessageContext);
const navigate = useNavigate();
const handleSearch = () => {
setIsLoading(true);
searchAPI(transientName, ra, dec, ang, physicalObject, eventType, messengerType, page)
.then((data) => {
setMessagesData(data.records);
setTotalMessages(data.total);
navigate("/messages");
})
.catch((error) => {
console.error("Search failed:", error);
})
.finally(() => {
setIsLoading(false);
});
};
const handleResize = () => {
if (window.innerHeight > 1200) {
setWindowHeightClass('extra-large-window');
} else if (window.innerHeight > 900) {
setWindowHeightClass('large-window');
} else {
setWindowHeightClass('');
}
};
useEffect(() => {
window.addEventListener('resize', handleResize);
handleResize(); // Инициализируем при монтировании
return () => window.removeEventListener('resize', handleResize);
}, []);
useEffect(() => {
localStorage.clear();
})
return (
<div className={`search-panel ${windowHeightClass}`}>
<div className="input-group transient">
<div className="transientContainer">
<TransientInput placeholder={"Transient Name"}/>
</div>
</div>
<div className="input-group event">
<div className="eventType">
<EventSelect placeholder={"Event type"}/>
</div>
</div>
<div className="input-group object">
<div className="objectContainer">
<ObjectSelect placeholder={"Physical Object"}/>
</div>
</div>
<div className="input-group messenger">
<div className="messengerType">
<MessengerType placeholder={"Messenger Type"}/>
</div>
</div>
<div className="input-group coordinates">
<div className="coordinatesContainer">
<label htmlFor={"ra-input"} className="label">Coordinates: </label>
<CoordinatesInput/>
</div>
<AstromapIcon className={"astromap"}/>
</div>
{/*<div className="input-group coordinates">*/}
{/* <div className="coordinatesContainer">*/}
{/* <Coordinates placeholder={"ICRS Coordinates"}/>*/}
{/* </div>*/}
{/* <AstromapIcon className={"astromap"}/>*/}
{/*</div>*/}
<SearchButton onSearch={handleSearch} loading={isLoading} disabled={isDisabled}/>
</div>);
}