/* Парус 8 - Панели мониторинга - ПУП - Информация о проектах Список проектов */ //--------------------- //Подключение библиотек //--------------------- import React, { useState, useContext } from "react"; //Классы React import { P8PDataGrid } from "../../components/p8p_data_grid"; //Таблица данных import { P8P_DATA_GRID_CONFIG_PROPS } from "../../config_wrapper"; //Подключение компонентов к настройкам приложения import { ApplicationСtx } from "../../context/application"; //Контекст приложения import { useProjectsDataGrid } from "./projects_hooks"; //Хуки списка проектов import { FILTER_INITIAL, Filter } from "./filter"; //Компонент "Фильтр" import { PROJECTS_STYLES, projectDataCellRender, projectRowExpandRender } from "./projects_layouts"; //Дополнительная разметка и вёрстка клиентских элементов //----------- //Тело модуля //----------- //Список проектов const Projects = () => { //Собственное состояние const [projects, setProjects] = useState({ pageNumber: 1, orders: [], filter: { ...FILTER_INITIAL } }); //Состояние таблицы проектов const [projectsDataGrid] = useProjectsDataGrid({ ...projects.filter, pageNumber: projects.pageNumber, orders: projects.orders }); //Подключение к контексту приложения const { pOnlineShowDocument } = useContext(ApplicationСtx); //Отображение записи проекта в штатном разделе const showProject = async rn => pOnlineShowDocument({ unitCode: "Projects", document: rn, modal: false }); //При изменении количества отображаемых страниц const handlePagesCountChanged = () => setProjects(pv => ({ ...pv, pageNumber: pv.pageNumber + 1 })); //При изменении состояния сортировки const handleOrderChanged = ({ orders }) => setProjects(pv => ({ ...pv, orders: [...orders], pageNumber: 1 })); //При изменении фильтра const handleFilterChanged = values => setProjects(pv => ({ ...pv, filter: { ...values }, pageNumber: 1 })); //Генерация содержимого return ( <> {projectsDataGrid.init ? ( projectDataCellRender({ ...prms, showProject })} rowExpandRender={projectRowExpandRender} /> ) : null} ); }; //---------------- //Интерфейс модуля //---------------- export { Projects };