/*
    Парус 8 - Панели мониторинга - ТОиР - Прогнозирование технического состояния
    Панель мониторинга: Корневая панель прогнозирования технического состояния
*/

//---------------------
//Подключение библиотек
//---------------------

import React, { useState } from "react"; //Классы React
import { Box, Tabs, Tab } from "@mui/material"; //Интерфейсные компоненты
import { MODES, TabPanel } from "./eqs_tech_cond_forecast_layout"; //Вспомогательные компоненты и вёрстка
import { AdminTab } from "./admin_tab"; //Интерфейс администрирования
import { ForecastTab } from "./forecast_tab"; //Интерфейс прогнозирования

//---------
//Константы
//---------

//Состояние по умолчанию
const STATE_INITIAL = {
    mode: MODES.FORECAST,
    dataSelection: -1,
    dataSelectionClassMachine: null
};

//Стили
const STYLES = {
    TABS_CONTAINER_BOX: { borderBottom: 1, borderColor: "divider" }
};

//-----------
//Тело модуля
//-----------

//Корневая панель прогнозирования технического состояния
const EqsTechCondForecast = () => {
    //Собственное состояние
    const [state, setState] = useState(STATE_INITIAL);

    //При переключении закладки
    const handleTabChange = (e, newValue) => setState(pv => ({ ...pv, mode: newValue }));

    //При запросе перехода на закладку администрирования
    const handleGoToAdmin = (dataSelection, dataSelectionClassMachine) =>
        setState(pv => ({
            ...pv,
            mode: MODES.ADMIN,
            dataSelection: dataSelection ? dataSelection : STATE_INITIAL.dataSelection,
            dataSelectionClassMachine: dataSelectionClassMachine ? dataSelectionClassMachine : STATE_INITIAL.dataSelectionClassMachine
        }));

    //Генерация содержимого
    return (
        <>
            <Box sx={STYLES.TABS_CONTAINER_BOX}>
                <Tabs value={state.mode} onChange={handleTabChange}>
                    <Tab label="Прогноз" value={MODES.FORECAST} />
                    <Tab label="Обучение" value={MODES.ADMIN} />
                </Tabs>
            </Box>
            <TabPanel mode={state.mode} value={MODES.FORECAST}>
                <ForecastTab onGoToAdmin={handleGoToAdmin} />
            </TabPanel>
            <TabPanel mode={state.mode} value={MODES.ADMIN}>
                <AdminTab dataSelection={state.dataSelection} dataSelectionClassMachine={state.dataSelectionClassMachine} />
            </TabPanel>
        </>
    );
};

//----------------
//Интерфейс модуля
//----------------

export { EqsTechCondForecast };
