Select Git revision
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
AIModels.jsx 2.06 KiB
import React, { useEffect, useState } from 'react';
import api from '../../utils/AxiosConfig';
import { mergeBackendValidation } from '../../utils/ErrorHandling';
import Models from './AI/Models';
import NewModel from './AI/NewModel';
import AIStatus from './AI/Status';
function AIModels() {
// #################################
// HOOKS
// #################################
// ### SET TABLE DATA
const [data, setData] = useState({});
// ### FETCH MODELS
useEffect(() => {
// ### on run exec this code
const controller = new AbortController();
const getDocument = async () => {
try {
// fetch all items and store them in state
const items = await api.post('/ai/models', { filter: '' }, {
signal: controller.signal
});
setData(items.data.models);
} catch (error) {
mergeBackendValidation(error.response.status, error.response.data);
}
};
getDocument();
// ### return will be executed on unmounting this component
return () => {
// on unmount abort request
controller.abort();
};
// ### opt. 2. argument: when to run this hook
}, []);
// #################################
// FUNCTIONS
// #################################
// #################################
// OUTPUT
// #################################
return (
<>
{/* AI */}
<section>
{/* <!-- header --> */}
<div className="group sticky top-0 bg-UhhWhite z-10 mb-4 font-UhhBC text-2xl">
{/* <!-- number --> */}
<span className="text-UhhRed">01 </span>
{/* <!-- title --> */}
AI
{/* <!-- line --> */}
<div className="absolute w-[50vw] right-[50%] h-1 bg-UhhRed"></div>
</div>
<fieldset>
{/* ai status */}
<AIStatus />
{/* new model */}
<NewModel data={data} setData={setData} />
{/* model list */}
<Models data={data} setData={setData} />
</fieldset>
</section>
</>
);
}
export default React.memo(AIModels);