diff --git a/app/app.js b/app/app.js index d4265e0..5d3f2f1 100644 --- a/app/app.js +++ b/app/app.js @@ -15,7 +15,8 @@ import { NavigationContext, NavigationCtx, getRootLocation } from "./context/nav import { P8PAppErrorPage } from "./components/p8p_app_error_page"; //Страница с ошибкой import { P8PAppWorkspace } from "./components/p8p_app_workspace"; //Рабочее пространство панели import { P8PPanelsMenuGrid, P8P_PANELS_MENU_PANEL_SHAPE } from "./components/p8p_panels_menu"; //Меню панелей -import { TITLES, BUTTONS, ERRORS, ERRORS_HTTP } from "../app.text"; //Текстовые ресурсы и константы +import { BUTTONS, ERRORS, ERRORS_HTTP } from "../app.text"; //Текстовые ресурсы и константы +import { P8P_PANELS_MENU_GRID_CONFIG_PROPS, P8P_APP_WORKSPACE_CONFIG_PROPS } from "./config_wrapper"; //Подключение компонентов к настройкам приложения //-------------------------- //Вспомогательные компоненты @@ -56,14 +57,7 @@ const MainMenu = ({ panels = [] } = {}) => { const handleItemNavigate = panel => navigatePanel(panel); //Генерация содержимого - return ( - - ); + return ; }; //Контроль свойств - главное меню приложения @@ -85,10 +79,9 @@ const Workspace = ({ panels = [], selectedPanel, children } = {}) => { //Генерация содержимого return ( diff --git a/app/components/p8p_data_grid.js b/app/components/p8p_data_grid.js index b8fc257..ebbecdb 100644 --- a/app/components/p8p_data_grid.js +++ b/app/components/p8p_data_grid.js @@ -160,4 +160,4 @@ P8PDataGrid.propTypes = { //Интерфейс модуля //---------------- -export { P8P_DATA_GRID_SIZE, P8P_DATA_GRID_DATA_TYPE, P8P_DATA_GRID_FILTER_SHAPE, P8PDataGrid }; +export { P8P_DATA_GRID_DATA_TYPE, P8P_DATA_GRID_SIZE, P8P_DATA_GRID_FILTER_SHAPE, P8PDataGrid }; diff --git a/app/config_wrapper.js b/app/config_wrapper.js index ca15352..032df34 100644 --- a/app/config_wrapper.js +++ b/app/config_wrapper.js @@ -9,13 +9,43 @@ import React from "react"; //Классы React import { deepCopyObject } from "./core/utils"; //Вспомогательные процедуры и функции -import { BUTTONS, TEXTS, INPUTS } from "../app.text"; //Текстовые ресурсы и константы -import { P8PDataGrid, P8P_DATA_GRID_SIZE } from "./components/p8p_data_grid"; //Таблица данных +import { TITLES, BUTTONS, TEXTS, INPUTS } from "../app.text"; //Текстовые ресурсы и константы +import { P8PPanelsMenuGrid, P8P_PANELS_MENU_PANEL_SHAPE } from "./components/p8p_data_grid"; //Меню панелей +import { P8PAppWorkspace } from "./components/p8p_app_workspace"; //Рабочее пространство +import { P8PTable, P8P_TABLE_DATA_TYPE, P8P_TABLE_SIZE, P8P_TABLE_FILTER_SHAPE } from "./components/p8p_data_grid"; //Таблица данных +import { P8PDataGrid, P8P_DATA_GRID_DATA_TYPE, P8P_DATA_GRID_SIZE, P8P_DATA_GRID_FILTER_SHAPE } from "./components/p8p_data_grid"; //Таблица данных //--------- //Константы //--------- +//Конфигурируемые свойства "Меню панелей (табличное)" (P8PPanelsMenuGrid) +const P8P_PANELS_MENU_GRID_CONFIG_PROPS = { + navigateCaption: BUTTONS.NAVIGATE, + defaultGroupTytle: TITLES.DEFAULT_PANELS_GROUP +}; + +//Конфигурируемые свойства "Рабочего пространства" (P8PAppWorkspace) +const P8P_APP_WORKSPACE_CONFIG_PROPS = { + closeCaption: BUTTONS.CLOSE, + homeCaption: BUTTONS.NAVIGATE_HOME +}; + +//Конфигурируемые свойства "Таблицы" (P8PTable) +const P8P_TABLE_CONFIG_PROPS = { + orderAscMenuItemCaption: BUTTONS.ORDER_ASC, + orderDescMenuItemCaption: BUTTONS.ORDER_DESC, + filterMenuItemCaption: BUTTONS.FILTER, + valueFilterCaption: INPUTS.VALUE, + valueFromFilterCaption: INPUTS.VALUE_FROM, + valueToFilterCaption: INPUTS.VALUE_TO, + okFilterBtnCaption: BUTTONS.OK, + clearFilterBtnCaption: BUTTONS.CLEAR, + cancelFilterBtnCaption: BUTTONS.CANCEL, + morePagesBtnCaption: BUTTONS.MORE, + noDataFoundText: TEXTS.NO_DATA_FOUND +}; + //Конфигурируемые свойства "Таблицы данных" (P8PDataGrid) const P8P_DATA_GRID_CONFIG_PROPS = { orderAscMenuItemCaption: BUTTONS.ORDER_ASC, @@ -42,6 +72,8 @@ const addConfigChildProps = children => if (!React.isValidElement(child)) return child; const { children, ...restProps } = child.props; let configProps = {}; + if (child.type.name === "P8PPanelsMenuGrid") configProps = P8P_PANELS_MENU_GRID_CONFIG_PROPS; + if (child.type.name === "P8PTable") configProps = P8P_TABLE_CONFIG_PROPS; if (child.type.name === "P8PDataGrid") configProps = P8P_DATA_GRID_CONFIG_PROPS; return React.createElement(child.type, { ...configProps, ...restProps }, addConfigChildProps(children)); }); @@ -50,10 +82,17 @@ const addConfigChildProps = children => //Тело модуля //----------- +//Обёртка для компонента "Меню панелей (табличное)" (P8PPanelsMenuGrid) +const P8PPanelsMenuGridConfigWrapped = (props = {}) => ; + +//Обёртка для компонента "Рабочее пространство" (P8PAppWorkspace) +const P8PAppWorkspaceConfigWrapped = (props = {}) => ; + +//Обёртка для компонента "Таблица" (P8PTable) +const P8PTableConfigWrapped = (props = {}) => ; + //Обёртка для компонента "Таблица данных" (P8PDataGrid) -const P8PDataGridConfigWrapped = (props = {}) => { - return ; -}; +const P8PDataGridConfigWrapped = (props = {}) => ; //Универсальный элемент-обёртка в параметры конфигурации const ConfigWrapper = ({ children }) => addConfigChildProps(children); @@ -62,4 +101,21 @@ const ConfigWrapper = ({ children }) => addConfigChildProps(children); //Интерфейс модуля //---------------- -export { P8P_DATA_GRID_CONFIG_PROPS, P8P_DATA_GRID_SIZE, P8PDataGridConfigWrapped, ConfigWrapper }; +export { + P8P_PANELS_MENU_GRID_CONFIG_PROPS, + P8P_PANELS_MENU_PANEL_SHAPE, + P8P_APP_WORKSPACE_CONFIG_PROPS, + P8P_TABLE_CONFIG_PROPS, + P8P_TABLE_DATA_TYPE, + P8P_TABLE_SIZE, + P8P_TABLE_FILTER_SHAPE, + P8P_DATA_GRID_CONFIG_PROPS, + P8P_DATA_GRID_DATA_TYPE, + P8P_DATA_GRID_SIZE, + P8P_DATA_GRID_FILTER_SHAPE, + P8PPanelsMenuGridConfigWrapped, + P8PAppWorkspaceConfigWrapped, + P8PTableConfigWrapped, + P8PDataGridConfigWrapped, + ConfigWrapper +};