forked from CITKParus/P8-Panels
main #7
308
README.md
308
README.md
@ -1341,18 +1341,18 @@ const MyPanel = () => {
|
|||||||
Такие свойства как `columnsDef`, `groups`, `rows` компонента `P8PDataGrid` требуют от разработчика передачи данных в определённом формате. Это не обязательно должна быть информация из БД Системы, можно, например, просто объявить переменные в коде панели, задать им соответствующие значения и передать в компонент. Но изначально, таблица данных задумывалась для отображения сведений, полученных их учётных регистров Системы. Такие сведения, как правило, собираются хранимым объектом БД, исполняемым из панели посредством вызова `executeStored`. С целью снижения трудозатрат на приведение собранных хранимым объектом данных к форматам, потребляемым `P8PDataGrid`, реализован специальный API на стороне сервера БД.
|
Такие свойства как `columnsDef`, `groups`, `rows` компонента `P8PDataGrid` требуют от разработчика передачи данных в определённом формате. Это не обязательно должна быть информация из БД Системы, можно, например, просто объявить переменные в коде панели, задать им соответствующие значения и передать в компонент. Но изначально, таблица данных задумывалась для отображения сведений, полученных их учётных регистров Системы. Такие сведения, как правило, собираются хранимым объектом БД, исполняемым из панели посредством вызова `executeStored`. С целью снижения трудозатрат на приведение собранных хранимым объектом данных к форматам, потребляемым `P8PDataGrid`, реализован специальный API на стороне сервера БД.
|
||||||
|
|
||||||
Для таблицы данных это (см. детальные описания программных интерфейсов в пакете `PKG_P8PANELS_VISUAL`):
|
Для таблицы данных это (см. детальные описания программных интерфейсов в пакете `PKG_P8PANELS_VISUAL`):
|
||||||
`PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE` - функция, инициализация таблицы данных, возвращает объект для хранения описания таблицы\
|
`PKG_P8PANELS_VISUAL.TDG_MAKE` - функция, инициализация таблицы данных, возвращает объект для хранения описания таблицы\
|
||||||
`PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF` - процедура, добавление описания колонки в таблицу, принимает на вход объект с описанием таблицы и параметры, описывающие добавляемую колонку (её имя, заголовок, тип данных, видимость, доступность отбора и сортировки, набор предопределённых значений и т.д.)\
|
`PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF` - процедура, добавление описания колонки в таблицу, принимает на вход объект с описанием таблицы и параметры, описывающие добавляемую колонку (её имя, заголовок, тип данных, видимость, доступность отбора и сортировки, набор предопределённых значений и т.д.)\
|
||||||
`PKG_P8PANELS_VISUAL.TCOL_VALS_ADD` - процедура, служит для формирования коллекции предопределённых значений колонки таблицы (подготовленная коллекция передаётся в `RCOL_VALS` вызова `TDATA_GRID_ADD_COL_DEF`, если необходимо)\
|
`PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD` - процедура, служит для формирования коллекции предопределённых значений колонки таблицы (подготовленная коллекция передаётся в `RCOL_VALS` вызова `TDG_ADD_COL_DEF`, если необходимо)\
|
||||||
`PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP` - процедура, служит для добавления описания группы в таблицу данных, на вход принимает объект для хранения описания таблицы и параметры добавляемой группы\
|
`PKG_P8PANELS_VISUAL.TDG_ADD_GROUP` - процедура, служит для добавления описания группы в таблицу данных, на вход принимает объект для хранения описания таблицы и параметры добавляемой группы\
|
||||||
`PKG_P8PANELS_VISUAL.TROW_ADD_COL` - процедура, добавляет значение колонки к строке таблицы (значение указывается явно в `[S|N|D]VALUE`)\
|
`PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL` - процедура, добавляет значение колонки к строке таблицы (значение указывается явно в `[S|N|D]VALUE`)\
|
||||||
`PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COL[S|N|D]` - процедура, добавляет значение колонки к строке таблицы (значение указывается через ссылку на номер колонки `NPOSITION` в курсоре `ICURSOR` динамического SQL)\
|
`PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COL[S|N|D]` - процедура, добавляет значение колонки к строке таблицы (значение указывается через ссылку на номер колонки `NPOSITION` в курсоре `ICURSOR` динамического SQL)\
|
||||||
`PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW` - процедура, добавляет сформированную строку со значениями колонок в таблицу данных, на вход принимает объект для хранения описания таблицы и описание строки, сформированное вызовами `TROW_ADD_COL` и `TROW_ADD_CUR_COL[S|N|D]`, а так же год группы, в которую должна быть включена строка\
|
`PKG_P8PANELS_VISUAL.TDG_ADD_ROW` - процедура, добавляет сформированную строку со значениями колонок в таблицу данных, на вход принимает объект для хранения описания таблицы и описание строки, сформированное вызовами `TDG_ROW_ADD_COL` и `TDG_ROW_ADD_CUR_COL[S|N|D]`, а так же год группы, в которую должна быть включена строка\
|
||||||
`PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML` - функция, производит сериализацию объекта, описывающего таблицу данных, в специальный XML-формат, корректно интерпретируемый клиентским компонентом `P8PDataGrid` при передаче в WEB-приложение\
|
`PKG_P8PANELS_VISUAL.TDG_TO_XML` - функция, производит сериализацию объекта, описывающего таблицу данных, в специальный XML-формат, корректно интерпретируемый клиентским компонентом `P8PDataGrid` при передаче в WEB-приложение\
|
||||||
`PKG_P8PANELS_VISUAL.TORDERS_FROM_XML` - функция, служит для десериализации (как правило, полученного от клиентского приложения) состояния сортировок в коллекцию формата `TORDERS`, на вход принимает `CLOB` с сериализованным состоянием сортировок таблицы в виде `BASE64(<orders><name>ИМЯ</name><direction>ASC|DESC</direction></orders>...)` (клиентское приложение должно обеспечить передачу состояния сортировок в этом формате, см. пример ниже)\
|
`PKG_P8PANELS_VISUAL.TDG_ORDERS_FROM_XML` - функция, служит для десериализации (как правило, полученного от клиентского приложения) состояния сортировок в коллекцию формата `TORDERS`, на вход принимает `CLOB` с сериализованным состоянием сортировок таблицы в виде `BASE64(<orders><name>ИМЯ</name><direction>ASC|DESC</direction></orders>...)` (клиентское приложение должно обеспечить передачу состояния сортировок в этом формате, см. пример ниже)\
|
||||||
`PKG_P8PANELS_VISUAL.TORDERS_SET_QUERY` - процедура, вспомогательная утилита, производит в тексте SQL-запроса, поданного на вход, замену указанного шаблона на конструкцию `order by`, сформированную с учётом переданной коллекции `RORDERS`\
|
`PKG_P8PANELS_VISUAL.TDG_ORDERS_SET_QUERY` - процедура, вспомогательная утилита, производит в тексте SQL-запроса, поданного на вход, замену указанного шаблона на конструкцию `order by`, сформированную с учётом переданной коллекции `RORDERS`\
|
||||||
`PKG_P8PANELS_VISUAL.TFILTERS_FROM_XML` - функция, служит для десериализации (как правило, полученного от клиентского приложения) состояния фильтров в коллекцию формата `TFILTERS`, на вход принимает `CLOB` с сериализованным состоянием фильтров таблицы в виде `BASE64(<filters><name>ИМЯ</name><from>ЗНАЧЕНИЕ</from><to>ЗНАЧЕНИЕ</to></filters>...)` (клиентское приложение должно обеспечить передачу состояния фильтров в этом формате, см. пример ниже)\
|
`PKG_P8PANELS_VISUAL.TDG_FILTERS_FROM_XML` - функция, служит для десериализации (как правило, полученного от клиентского приложения) состояния фильтров в коллекцию формата `TFILTERS`, на вход принимает `CLOB` с сериализованным состоянием фильтров таблицы в виде `BASE64(<filters><name>ИМЯ</name><from>ЗНАЧЕНИЕ</from><to>ЗНАЧЕНИЕ</to></filters>...)` (клиентское приложение должно обеспечить передачу состояния фильтров в этом формате, см. пример ниже)\
|
||||||
`PKG_P8PANELS_VISUAL.TFILTERS_SET_QUERY` - процедура, вспомогательная утилита, производит вызов указанной серверной процедуры отбора с учётом переданных переменных окружения и значений в `RFILTERS`\
|
`PKG_P8PANELS_VISUAL.TDG_FILTERS_SET_QUERY` - процедура, вспомогательная утилита, производит вызов указанной серверной процедуры отбора с учётом переданных переменных окружения и значений в `RFILTERS`\
|
||||||
`PKG_P8PANELS_VISUAL.UTL_ROWS_LIMITS_CALC` - процедура, вспомогательная утилита, служит для конвертации номера страницы данных и размера страницы данных в границы диапазона строк выборки (как правило, клиентскому приложению удобнее прислать на сервер текущий номер страницы и её размер, в то время к в запросах, для выборки, удобнее применять границы диапазонов строк)
|
`PKG_P8PANELS_VISUAL.UTL_ROWS_LIMITS_CALC` - процедура, вспомогательная утилита, служит для конвертации номера страницы данных и размера страницы данных в границы диапазона строк выборки (как правило, клиентскому приложению удобнее прислать на сервер текущий номер страницы и её размер, в то время к в запросах, для выборки, удобнее применять границы диапазонов строк)
|
||||||
|
|
||||||
**Пример**
|
**Пример**
|
||||||
@ -1372,11 +1372,11 @@ const MyPanel = () => {
|
|||||||
is
|
is
|
||||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса
|
||||||
NIDENT PKG_STD.TREF := GEN_IDENT(); -- Идентификатор отбора
|
NIDENT PKG_STD.TREF := GEN_IDENT(); -- Идентификатор отбора
|
||||||
RF PKG_P8PANELS_VISUAL.TFILTERS; -- Фильтры
|
RF PKG_P8PANELS_VISUAL.TDG_FILTERS; -- Фильтры
|
||||||
RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки
|
RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки
|
||||||
RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы
|
RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы
|
||||||
RAGN_TYPES PKG_P8PANELS_VISUAL.TCOL_VALS; -- Предопределенные значения "Типа контрагентов"
|
RAGN_TYPES PKG_P8PANELS_VISUAL.TDG_COL_VALS; -- Предопределенные значения "Типа контрагентов"
|
||||||
RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы
|
RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы
|
||||||
NROW_FROM PKG_STD.TREF; -- Номер строки с
|
NROW_FROM PKG_STD.TREF; -- Номер строки с
|
||||||
NROW_TO PKG_STD.TREF; -- Номер строки по
|
NROW_TO PKG_STD.TREF; -- Номер строки по
|
||||||
CSQL clob; -- Буфер для запроса
|
CSQL clob; -- Буфер для запроса
|
||||||
@ -1387,71 +1387,71 @@ const MyPanel = () => {
|
|||||||
NAGNTYPE PKG_STD.TREF; -- Буфер для "Типа"
|
NAGNTYPE PKG_STD.TREF; -- Буфер для "Типа"
|
||||||
begin
|
begin
|
||||||
/* Читаем фильтры */
|
/* Читаем фильтры */
|
||||||
RF := PKG_P8PANELS_VISUAL.TFILTERS_FROM_XML(CFILTERS => CFILTERS);
|
RF := PKG_P8PANELS_VISUAL.TDG_FILTERS_FROM_XML(CFILTERS => CFILTERS);
|
||||||
/* Читем сортировки */
|
/* Читем сортировки */
|
||||||
RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS);
|
RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_FROM_XML(CORDERS => CORDERS);
|
||||||
/* Преобразуем номер и размер страницы в номер строк с и по */
|
/* Преобразуем номер и размер страницы в номер строк с и по */
|
||||||
PKG_P8PANELS_VISUAL.UTL_ROWS_LIMITS_CALC(NPAGE_NUMBER => NPAGE_NUMBER,
|
PKG_P8PANELS_VISUAL.UTL_ROWS_LIMITS_CALC(NPAGE_NUMBER => NPAGE_NUMBER,
|
||||||
NPAGE_SIZE => NPAGE_SIZE,
|
NPAGE_SIZE => NPAGE_SIZE,
|
||||||
NROW_FROM => NROW_FROM,
|
NROW_FROM => NROW_FROM,
|
||||||
NROW_TO => NROW_TO);
|
NROW_TO => NROW_TO);
|
||||||
/* Инициализируем таблицу данных */
|
/* Инициализируем таблицу данных */
|
||||||
RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 2);
|
RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 2);
|
||||||
/* Описываем колонки таблицы данных */
|
/* Описываем колонки таблицы данных */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SAGNABBR',
|
SNAME => 'SAGNABBR',
|
||||||
SCAPTION => 'Мнемокод',
|
SCAPTION => 'Мнемокод',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
SCOND_FROM => 'AgentAbbr',
|
SCOND_FROM => 'AgentAbbr',
|
||||||
BVISIBLE => true,
|
BVISIBLE => true,
|
||||||
BORDER => true,
|
BORDER => true,
|
||||||
BFILTER => true,
|
BFILTER => true,
|
||||||
NWIDTH => 150);
|
NWIDTH => 150);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SAGNINFO',
|
SNAME => 'SAGNINFO',
|
||||||
SCAPTION => 'Сведения',
|
SCAPTION => 'Сведения',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => true,
|
BVISIBLE => true,
|
||||||
BORDER => false,
|
BORDER => false,
|
||||||
BFILTER => false,
|
BFILTER => false,
|
||||||
BEXPANDABLE => true,
|
BEXPANDABLE => true,
|
||||||
NWIDTH => 300);
|
NWIDTH => 300);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SAGNNAME',
|
SNAME => 'SAGNNAME',
|
||||||
SCAPTION => 'Наименование',
|
SCAPTION => 'Наименование',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
SCOND_FROM => 'AgentName',
|
SCOND_FROM => 'AgentName',
|
||||||
BVISIBLE => true,
|
BVISIBLE => true,
|
||||||
BORDER => true,
|
BORDER => true,
|
||||||
BFILTER => true,
|
BFILTER => true,
|
||||||
SPARENT => 'SAGNINFO',
|
SPARENT => 'SAGNINFO',
|
||||||
NWIDTH => 200);
|
NWIDTH => 200);
|
||||||
PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 0);
|
PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 0);
|
||||||
PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 1);
|
PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 1);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'NAGNTYPE',
|
SNAME => 'NAGNTYPE',
|
||||||
SCAPTION => 'Тип',
|
SCAPTION => 'Тип',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
||||||
SCOND_FROM => 'AgentType',
|
SCOND_FROM => 'AgentType',
|
||||||
BVISIBLE => true,
|
BVISIBLE => true,
|
||||||
BORDER => true,
|
BORDER => true,
|
||||||
BFILTER => true,
|
BFILTER => true,
|
||||||
SPARENT => 'SAGNINFO',
|
SPARENT => 'SAGNINFO',
|
||||||
NWIDTH => 100,
|
NWIDTH => 100,
|
||||||
RCOL_VALS => RAGN_TYPES,
|
RCOL_VALS => RAGN_TYPES,
|
||||||
SHINT => 'В Системе бывают контрагенты двух типов:<br>' ||
|
SHINT => 'В Системе бывают контрагенты двух типов:<br>' ||
|
||||||
'<b style="color:blue">Юридическое лицо</b> - организация, которая имеет в собственности, хозяйственном ведении ' ||
|
'<b style="color:blue">Юридическое лицо</b> - организация, которая имеет в собственности, хозяйственном ведении ' ||
|
||||||
'или оперативном управлении обособленное имущество, отвечает по своим обязательствам этим имуществом, может от своего ' ||
|
'или оперативном управлении обособленное имущество, отвечает по своим обязательствам этим имуществом, может от своего ' ||
|
||||||
'имени приобретать и осуществлять имущественные и личные неимущественные права, отвечать по своим обязанностям.<br>' ||
|
'имени приобретать и осуществлять имущественные и личные неимущественные права, отвечать по своим обязанностям.<br>' ||
|
||||||
'<b style="color:green">Физическое лицо</b> - субъект правовых отношений, представляющий собой одного человека.');
|
'<b style="color:green">Физическое лицо</b> - субъект правовых отношений, представляющий собой одного человека.');
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SFULLNAME',
|
SNAME => 'SFULLNAME',
|
||||||
SCAPTION => 'Полное наименование',
|
SCAPTION => 'Полное наименование',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SAGNIDNUMB',
|
SNAME => 'SAGNIDNUMB',
|
||||||
SCAPTION => 'ИНН',
|
SCAPTION => 'ИНН',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
||||||
/* Обходим данные */
|
/* Обходим данные */
|
||||||
begin
|
begin
|
||||||
/* Добавляем подсказку совместимости */
|
/* Добавляем подсказку совместимости */
|
||||||
@ -1477,14 +1477,17 @@ const MyPanel = () => {
|
|||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and AG.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT) %ORDER_BY%) D) F');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and AG.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT) %ORDER_BY%) D) F');
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where F.NROW between :NROW_FROM and :NROW_TO');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where F.NROW between :NROW_FROM and :NROW_TO');
|
||||||
/* Учтём сортировки */
|
/* Учтём сортировки */
|
||||||
PKG_P8PANELS_VISUAL.TORDERS_SET_QUERY(RDATA_GRID => RDG, RORDERS => RO, SPATTERN => '%ORDER_BY%', CSQL => CSQL);
|
PKG_P8PANELS_VISUAL.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG,
|
||||||
|
RORDERS => RO,
|
||||||
|
SPATTERN => '%ORDER_BY%',
|
||||||
|
CSQL => CSQL);
|
||||||
/* Учтём фильтры */
|
/* Учтём фильтры */
|
||||||
PKG_P8PANELS_VISUAL.TFILTERS_SET_QUERY(NIDENT => NIDENT,
|
PKG_P8PANELS_VISUAL.TDG_FILTERS_SET_QUERY(NIDENT => NIDENT,
|
||||||
NCOMPANY => NCOMPANY,
|
NCOMPANY => NCOMPANY,
|
||||||
SUNIT => 'AGNLIST',
|
SUNIT => 'AGNLIST',
|
||||||
SPROCEDURE => 'P_AGNLIST_BASE_COND',
|
SPROCEDURE => 'P_AGNLIST_BASE_COND',
|
||||||
RDATA_GRID => RDG,
|
RDATA_GRID => RDG,
|
||||||
RFILTERS => RF);
|
RFILTERS => RF);
|
||||||
/* Разбираем его */
|
/* Разбираем его */
|
||||||
ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT');
|
ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT');
|
||||||
PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL);
|
PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL);
|
||||||
@ -1512,29 +1515,38 @@ const MyPanel = () => {
|
|||||||
if (NAGNTYPE = 0) then
|
if (NAGNTYPE = 0) then
|
||||||
SGROUP := 'JUR';
|
SGROUP := 'JUR';
|
||||||
SAGNINFO := SAGNNAME || ', ЮЛ';
|
SAGNINFO := SAGNNAME || ', ЮЛ';
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_GROUP(RDATA_GRID => RDG,
|
||||||
SNAME => SGROUP,
|
SNAME => SGROUP,
|
||||||
SCAPTION => 'Юридические лица',
|
SCAPTION => 'Юридические лица',
|
||||||
BEXPANDABLE => true,
|
BEXPANDABLE => true,
|
||||||
BEXPANDED => false);
|
BEXPANDED => false);
|
||||||
else
|
else
|
||||||
SGROUP := 'PERS';
|
SGROUP := 'PERS';
|
||||||
SAGNINFO := SAGNNAME || ', ФЛ';
|
SAGNINFO := SAGNNAME || ', ФЛ';
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_GROUP(RDATA_GRID => RDG,
|
||||||
SNAME => SGROUP,
|
SNAME => SGROUP,
|
||||||
SCAPTION => 'Физические лица',
|
SCAPTION => 'Физические лица',
|
||||||
BEXPANDABLE => true,
|
BEXPANDABLE => true,
|
||||||
BEXPANDED => false);
|
BEXPANDED => false);
|
||||||
end if;
|
end if;
|
||||||
RDG_ROW := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SGROUP);
|
RDG_ROW := PKG_P8PANELS_VISUAL.TDG_ROW_MAKE(SGROUP => SGROUP);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SAGNABBR', ICURSOR => ICURSOR, NPOSITION => 1);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNINFO', SVALUE => SAGNINFO);
|
SNAME => 'SAGNABBR',
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNNAME', SVALUE => SAGNNAME);
|
ICURSOR => ICURSOR,
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NAGNTYPE', NVALUE => NAGNTYPE);
|
NPOSITION => 1);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SFULLNAME', ICURSOR => ICURSOR, NPOSITION => 4);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNINFO', SVALUE => SAGNINFO);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SAGNIDNUMB', ICURSOR => ICURSOR, NPOSITION => 5);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNNAME', SVALUE => SAGNNAME);
|
||||||
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NAGNTYPE', NVALUE => NAGNTYPE);
|
||||||
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
|
||||||
|
SNAME => 'SFULLNAME',
|
||||||
|
ICURSOR => ICURSOR,
|
||||||
|
NPOSITION => 4);
|
||||||
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
|
||||||
|
SNAME => 'SAGNIDNUMB',
|
||||||
|
ICURSOR => ICURSOR,
|
||||||
|
NPOSITION => 5);
|
||||||
/* Добавляем строку в таблицу */
|
/* Добавляем строку в таблицу */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
|
PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
|
||||||
end loop;
|
end loop;
|
||||||
/* Освобождаем курсор */
|
/* Освобождаем курсор */
|
||||||
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
|
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
|
||||||
@ -1544,7 +1556,7 @@ const MyPanel = () => {
|
|||||||
raise;
|
raise;
|
||||||
end;
|
end;
|
||||||
/* Сериализуем описание */
|
/* Сериализуем описание */
|
||||||
COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF);
|
COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF);
|
||||||
end DATA_GRID;
|
end DATA_GRID;
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -1617,14 +1629,14 @@ export const groupCellRender = () => ({ cellStyle: { padding: "2px" } });
|
|||||||
//Пример: Таблица данных "P8PDataGrid"
|
//Пример: Таблица данных "P8PDataGrid"
|
||||||
const DataGrid = ({ title }) => {
|
const DataGrid = ({ title }) => {
|
||||||
//Собственное состояние - таблица данных
|
//Собственное состояние - таблица данных
|
||||||
const [dataGrid, setdataGrid] = useState({
|
const [dataGrid, setDataGrid] = useState({
|
||||||
dataLoaded: false,
|
dataLoaded: false,
|
||||||
columnsDef: [],
|
columnsDef: [],
|
||||||
filters: null,
|
filters: null,
|
||||||
orders: null,
|
orders: null,
|
||||||
groups: [],
|
groups: [],
|
||||||
rows: [],
|
rows: [],
|
||||||
reload: true,
|
reloading: true,
|
||||||
pageNumber: 1,
|
pageNumber: 1,
|
||||||
morePages: true,
|
morePages: true,
|
||||||
fixedHeader: false,
|
fixedHeader: false,
|
||||||
@ -1639,7 +1651,7 @@ const DataGrid = ({ title }) => {
|
|||||||
|
|
||||||
//Загрузка данных таблицы с сервера
|
//Загрузка данных таблицы с сервера
|
||||||
const loadData = useCallback(async () => {
|
const loadData = useCallback(async () => {
|
||||||
if (dataGrid.reload) {
|
if (dataGrid.reloading) {
|
||||||
const data = await executeStored({
|
const data = await executeStored({
|
||||||
stored: "PKG_P8PANELS_SAMPLES.DATA_GRID",
|
stored: "PKG_P8PANELS_SAMPLES.DATA_GRID",
|
||||||
args: {
|
args: {
|
||||||
@ -1651,32 +1663,31 @@ const DataGrid = ({ title }) => {
|
|||||||
},
|
},
|
||||||
respArg: "COUT"
|
respArg: "COUT"
|
||||||
});
|
});
|
||||||
setdataGrid(pv => ({
|
setDataGrid(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
fixedHeader: data.XDATA_GRID.fixedHeader,
|
...data.XDATA_GRID,
|
||||||
fixedColumns: data.XDATA_GRID.fixedColumns,
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
groups: data.XDATA_GRID.groups
|
||||||
groups: data.XGROUPS
|
|
||||||
? pv.pageNumber == 1
|
? pv.pageNumber == 1
|
||||||
? [...data.XGROUPS]
|
? [...data.XDATA_GRID.groups]
|
||||||
: [...pv.groups, ...data.XGROUPS.filter(g => !pv.groups.find(pg => pg.name == g.name))]
|
: [...pv.groups, ...data.XDATA_GRID.groups.filter(g => !pv.groups.find(pg => pg.name == g.name))]
|
||||||
: [...pv.groups],
|
: [...pv.groups],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reloading: false,
|
||||||
morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE
|
morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}, [dataGrid.reload, dataGrid.filters, dataGrid.orders, dataGrid.dataLoaded, dataGrid.pageNumber, executeStored, SERV_DATA_TYPE_CLOB]);
|
}, [dataGrid.reloading, dataGrid.filters, dataGrid.orders, dataGrid.dataLoaded, dataGrid.pageNumber, executeStored, SERV_DATA_TYPE_CLOB]);
|
||||||
|
|
||||||
//При изменении состояния фильтра
|
//При изменении состояния фильтра
|
||||||
const handleFilterChanged = ({ filters }) => setdataGrid(pv => ({ ...pv, filters: [...filters], pageNumber: 1, reload: true }));
|
const handleFilterChanged = ({ filters }) => setDataGrid(pv => ({ ...pv, filters: [...filters], pageNumber: 1, reloading: true }));
|
||||||
|
|
||||||
//При изменении состояния сортировки
|
//При изменении состояния сортировки
|
||||||
const handleOrderChanged = ({ orders }) => setdataGrid(pv => ({ ...pv, orders: [...orders], pageNumber: 1, reload: true }));
|
const handleOrderChanged = ({ orders }) => setDataGrid(pv => ({ ...pv, orders: [...orders], pageNumber: 1, reloading: true }));
|
||||||
|
|
||||||
//При изменении количества отображаемых страниц
|
//При изменении количества отображаемых страниц
|
||||||
const handlePagesCountChanged = () => setdataGrid(pv => ({ ...pv, pageNumber: pv.pageNumber + 1, reload: true }));
|
const handlePagesCountChanged = () => setDataGrid(pv => ({ ...pv, pageNumber: pv.pageNumber + 1, reloading: true }));
|
||||||
|
|
||||||
//При нажатии на копку контрагента
|
//При нажатии на копку контрагента
|
||||||
const handleAgnButtonClicked = agnCode => pOnlineShowDocument({ unitCode: "AGNLIST", document: agnCode, inRnParameter: "in_AGNABBR" });
|
const handleAgnButtonClicked = agnCode => pOnlineShowDocument({ unitCode: "AGNLIST", document: agnCode, inRnParameter: "in_AGNABBR" });
|
||||||
@ -1684,7 +1695,7 @@ const DataGrid = ({ title }) => {
|
|||||||
//При необходимости обновить данные таблицы
|
//При необходимости обновить данные таблицы
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
loadData();
|
loadData();
|
||||||
}, [dataGrid.reload, loadData]);
|
}, [dataGrid.reloading, loadData]);
|
||||||
|
|
||||||
//Генерация содержимого
|
//Генерация содержимого
|
||||||
return (
|
return (
|
||||||
@ -1699,15 +1710,8 @@ const DataGrid = ({ title }) => {
|
|||||||
<P8PDataGrid
|
<P8PDataGrid
|
||||||
{...P8P_DATA_GRID_CONFIG_PROPS}
|
{...P8P_DATA_GRID_CONFIG_PROPS}
|
||||||
containerComponentProps={{ elevation: 6, style: STYLES.DATA_GRID_CONTAINER }}
|
containerComponentProps={{ elevation: 6, style: STYLES.DATA_GRID_CONTAINER }}
|
||||||
columnsDef={dataGrid.columnsDef}
|
{...dataGrid}
|
||||||
groups={dataGrid.groups}
|
|
||||||
rows={dataGrid.rows}
|
|
||||||
size={P8P_DATA_GRID_SIZE.LARGE}
|
size={P8P_DATA_GRID_SIZE.LARGE}
|
||||||
fixedHeader={dataGrid.fixedHeader}
|
|
||||||
fixedColumns={dataGrid.fixedColumns}
|
|
||||||
filtersInitial={dataGrid.filters}
|
|
||||||
morePages={dataGrid.morePages}
|
|
||||||
reloading={dataGrid.reload}
|
|
||||||
valueFormatter={valueFormatter}
|
valueFormatter={valueFormatter}
|
||||||
headCellRender={headCellRender}
|
headCellRender={headCellRender}
|
||||||
dataCellRender={dataCellRender}
|
dataCellRender={dataCellRender}
|
||||||
@ -2126,12 +2130,10 @@ const taskDialogRenderer = ({ task, close }) => {
|
|||||||
//Пример: Диаграмма Ганта "P8Gantt"
|
//Пример: Диаграмма Ганта "P8Gantt"
|
||||||
const Gantt = ({ title }) => {
|
const Gantt = ({ title }) => {
|
||||||
//Собственное состояние
|
//Собственное состояние
|
||||||
const [state, setState] = useState({
|
const [gantt, setGantt] = useState({
|
||||||
init: false,
|
init: false,
|
||||||
dataLoaded: false,
|
dataLoaded: false,
|
||||||
ident: null,
|
ident: null,
|
||||||
ganttDef: {},
|
|
||||||
ganttTasks: [],
|
|
||||||
useCustomTaskDialog: false
|
useCustomTaskDialog: false
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -2142,21 +2144,21 @@ const Gantt = ({ title }) => {
|
|||||||
const loadData = useCallback(async () => {
|
const loadData = useCallback(async () => {
|
||||||
const data = await executeStored({
|
const data = await executeStored({
|
||||||
stored: "PKG_P8PANELS_SAMPLES.GANTT",
|
stored: "PKG_P8PANELS_SAMPLES.GANTT",
|
||||||
args: { NIDENT: state.ident },
|
args: { NIDENT: gantt.ident },
|
||||||
attributeValueProcessor: (name, val) =>
|
attributeValueProcessor: (name, val) =>
|
||||||
name == "numb" ? undefined : ["start", "end"].includes(name) ? formatDateJSONDateOnly(val) : val,
|
name == "numb" ? undefined : ["start", "end"].includes(name) ? formatDateJSONDateOnly(val) : val,
|
||||||
respArg: "COUT"
|
respArg: "COUT"
|
||||||
});
|
});
|
||||||
setState(pv => ({ ...pv, dataLoaded: true, ganttDef: { ...data.XGANTT_DEF }, ganttTasks: [...data.XGANTT_TASKS] }));
|
setGantt(pv => ({ ...pv, dataLoaded: true, ...data.XGANTT }));
|
||||||
}, [state.ident, executeStored]);
|
}, [gantt.ident, executeStored]);
|
||||||
|
|
||||||
//Инициализация данных диаграммы
|
//Инициализация данных диаграммы
|
||||||
const initData = useCallback(async () => {
|
const initData = useCallback(async () => {
|
||||||
if (!state.init) {
|
if (!gantt.init) {
|
||||||
const data = await executeStored({ stored: "PKG_P8PANELS_SAMPLES.GANTT_INIT", args: { NIDENT: state.ident } });
|
const data = await executeStored({ stored: "PKG_P8PANELS_SAMPLES.GANTT_INIT", args: { NIDENT: gantt.ident } });
|
||||||
setState(pv => ({ ...pv, init: true, ident: data.NIDENT }));
|
setGantt(pv => ({ ...pv, init: true, ident: data.NIDENT }));
|
||||||
}
|
}
|
||||||
}, [state.init, state.ident, executeStored]);
|
}, [gantt.init, gantt.ident, executeStored]);
|
||||||
|
|
||||||
//Изменение данных диаграммы
|
//Изменение данных диаграммы
|
||||||
const modifyData = useCallback(
|
const modifyData = useCallback(
|
||||||
@ -2164,13 +2166,13 @@ const Gantt = ({ title }) => {
|
|||||||
try {
|
try {
|
||||||
await executeStored({
|
await executeStored({
|
||||||
stored: "PKG_P8PANELS_SAMPLES.GANTT_MODIFY",
|
stored: "PKG_P8PANELS_SAMPLES.GANTT_MODIFY",
|
||||||
args: { NIDENT: state.ident, NRN: rn, DDATE_FROM: new Date(start), DDATE_TO: new Date(end) }
|
args: { NIDENT: gantt.ident, NRN: rn, DDATE_FROM: new Date(start), DDATE_TO: new Date(end) }
|
||||||
});
|
});
|
||||||
} finally {
|
} finally {
|
||||||
loadData();
|
loadData();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[state.ident, executeStored, loadData]
|
[gantt.ident, executeStored, loadData]
|
||||||
);
|
);
|
||||||
|
|
||||||
//Обработка измненения сроков задачи в диаграмме Гантта
|
//Обработка измненения сроков задачи в диаграмме Гантта
|
||||||
@ -2180,8 +2182,8 @@ const Gantt = ({ title }) => {
|
|||||||
|
|
||||||
//При необходимости обновить данные таблицы
|
//При необходимости обновить данные таблицы
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (state.ident) loadData();
|
if (gantt.ident) loadData();
|
||||||
}, [state.ident, loadData]);
|
}, [gantt.ident, loadData]);
|
||||||
|
|
||||||
//При подключении компонента к странице
|
//При подключении компонента к странице
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -2196,23 +2198,21 @@ const Gantt = ({ title }) => {
|
|||||||
{title}
|
{title}
|
||||||
</Typography>
|
</Typography>
|
||||||
<FormControlLabel
|
<FormControlLabel
|
||||||
control={<Checkbox onChange={() => setState(pv => ({ ...pv, useCustomTaskDialog: !pv.useCustomTaskDialog }))} />}
|
sx={STYLES.CONTROL}
|
||||||
|
control={<Checkbox onChange={() => setGantt(pv => ({ ...pv, useCustomTaskDialog: !pv.useCustomTaskDialog }))} />}
|
||||||
label="Отображать пользовательский диалог задачи"
|
label="Отображать пользовательский диалог задачи"
|
||||||
/>
|
/>
|
||||||
<Grid container spacing={0} direction="column" alignItems="center">
|
<Grid container direction="column" alignItems="center">
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
{state.dataLoaded ? (
|
{gantt.dataLoaded ? (
|
||||||
<Box sx={STYLES.GANTT_CONTAINER} p={1}>
|
<P8PGantt
|
||||||
<P8PGantt
|
{...P8P_GANTT_CONFIG_PROPS}
|
||||||
{...P8P_GANTT_CONFIG_PROPS}
|
{...gantt}
|
||||||
{...state.ganttDef}
|
containerStyle={STYLES.GANTT_CONTAINER}
|
||||||
height={GANTT_HEIGHT}
|
onTaskDatesChange={handleTaskDatesChange}
|
||||||
tasks={state.ganttTasks}
|
taskAttributeRenderer={taskAttributeRenderer}
|
||||||
onTaskDatesChange={handleTaskDatesChange}
|
taskDialogRenderer={gantt.useCustomTaskDialog ? taskDialogRenderer : null}
|
||||||
taskAttributeRenderer={taskAttributeRenderer}
|
/>
|
||||||
taskDialogRenderer={state.useCustomTaskDialog ? taskDialogRenderer : null}
|
|
||||||
/>
|
|
||||||
</Box>
|
|
||||||
) : null}
|
) : null}
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@ -33,34 +33,42 @@ const DISPLAY_SIZE = {
|
|||||||
//Типовые пути конвертации в массив (при переводе XML -> JSON)
|
//Типовые пути конвертации в массив (при переводе XML -> JSON)
|
||||||
const XML_ALWAYS_ARRAY_PATHS = [
|
const XML_ALWAYS_ARRAY_PATHS = [
|
||||||
"XRESPOND.XPAYLOAD.XOUT_ARGUMENTS",
|
"XRESPOND.XPAYLOAD.XOUT_ARGUMENTS",
|
||||||
"XRESPOND.XPAYLOAD.XROWS",
|
"XRESPOND.XPAYLOAD.XDATA_GRID.rows",
|
||||||
"XRESPOND.XPAYLOAD.XCOLUMNS_DEF",
|
"XRESPOND.XPAYLOAD.XDATA_GRID.columnsDef",
|
||||||
"XRESPOND.XPAYLOAD.XCOLUMNS_DEF.values",
|
"XRESPOND.XPAYLOAD.XDATA_GRID.columnsDef.values",
|
||||||
"XRESPOND.XPAYLOAD.XGROUPS",
|
"XRESPOND.XPAYLOAD.XDATA_GRID.groups",
|
||||||
"XRESPOND.XPAYLOAD.XGANTT_DEF.taskAttributes",
|
"XRESPOND.XPAYLOAD.XGANTT.taskAttributes",
|
||||||
"XRESPOND.XPAYLOAD.XGANTT_DEF.taskColors",
|
"XRESPOND.XPAYLOAD.XGANTT.taskColors",
|
||||||
"XRESPOND.XPAYLOAD.XGANTT_TASKS",
|
"XRESPOND.XPAYLOAD.XGANTT.tasks",
|
||||||
"XRESPOND.XPAYLOAD.XGANTT_TASKS.dependencies",
|
"XRESPOND.XPAYLOAD.XGANTT.tasks.dependencies",
|
||||||
"XRESPOND.XPAYLOAD.XCHART.labels",
|
"XRESPOND.XPAYLOAD.XCHART.labels",
|
||||||
"XRESPOND.XPAYLOAD.XCHART.datasets",
|
"XRESPOND.XPAYLOAD.XCHART.datasets",
|
||||||
"XRESPOND.XPAYLOAD.XCHART.datasets.data",
|
"XRESPOND.XPAYLOAD.XCHART.datasets.data",
|
||||||
"XRESPOND.XPAYLOAD.XCHART.datasets.items"
|
"XRESPOND.XPAYLOAD.XCHART.datasets.items",
|
||||||
|
"XRESPOND.XPAYLOAD.XCYCLOGRAM.taskAttributes",
|
||||||
|
"XRESPOND.XPAYLOAD.XCYCLOGRAM.columns",
|
||||||
|
"XRESPOND.XPAYLOAD.XCYCLOGRAM.groups",
|
||||||
|
"XRESPOND.XPAYLOAD.XCYCLOGRAM.tasks"
|
||||||
];
|
];
|
||||||
|
|
||||||
//Типовые шаблоны конвертации в массив (при переводе XML -> JSON)
|
//Типовые шаблоны конвертации в массив (при переводе XML -> JSON)
|
||||||
const XML_ALWAYS_ARRAY_PATH_PATTERNS = [
|
const XML_ALWAYS_ARRAY_PATH_PATTERNS = [
|
||||||
/(.*)XROWS$/,
|
/(.*)XDATA_GRID.rows$/,
|
||||||
/(.*)XCOLUMNS_DEF$/,
|
/(.*)XDATA_GRID.columnsDef$/,
|
||||||
/(.*)XCOLUMNS_DEF.values$/,
|
/(.*)XDATA_GRID.columnsDef.values$/,
|
||||||
/(.*)XGROUPS$/,
|
/(.*)XDATA_GRID.groups$/,
|
||||||
/(.*)XGANTT_DEF.taskAttributes$/,
|
/(.*)XGANTT.taskAttributes$/,
|
||||||
/(.*)XGANTT_DEF.taskColors$/,
|
/(.*)XGANTT.taskColors$/,
|
||||||
/(.*)XGANTT_TASKS$/,
|
/(.*)XGANTT.tasks$/,
|
||||||
/(.*)XGANTT_TASKS.dependencies$/,
|
/(.*)XGANTT.tasks.dependencies$/,
|
||||||
/(.*)XCHART.labels$/,
|
/(.*)XCHART.labels$/,
|
||||||
/(.*)XCHART.datasets$/,
|
/(.*)XCHART.datasets$/,
|
||||||
/(.*)XCHART.datasets.data$/,
|
/(.*)XCHART.datasets.data$/,
|
||||||
/(.*)XCHART.datasets.items$/
|
/(.*)XCHART.datasets.items$/,
|
||||||
|
/(.*)XCYCLOGRAM.taskAttributes$/,
|
||||||
|
/(.*)XCYCLOGRAM.columns$/,
|
||||||
|
/(.*)XCYCLOGRAM.groups$/,
|
||||||
|
/(.*)XCYCLOGRAM.tasks$/
|
||||||
];
|
];
|
||||||
|
|
||||||
//Типовой постфикс тега для массива (при переводе XML -> JSON)
|
//Типовой постфикс тега для массива (при переводе XML -> JSON)
|
||||||
@ -68,11 +76,13 @@ const XML_ALWAYS_ARRAY_POSTFIX = "__SYSTEM__ARRAY__";
|
|||||||
|
|
||||||
//Типовые шаблоны конвертации значения атрибута в строку (при переводе XML -> JSON)
|
//Типовые шаблоны конвертации значения атрибута в строку (при переводе XML -> JSON)
|
||||||
const XML_ATTR_ALWAYS_STR_PATH_PATTERNS = [
|
const XML_ATTR_ALWAYS_STR_PATH_PATTERNS = [
|
||||||
/(.*)XCOLUMNS_DEF.name$/,
|
/(.*)XDATA_GRID.columnsDef.name$/,
|
||||||
/(.*)XCOLUMNS_DEF.caption$/,
|
/(.*)XDATA_GRID.columnsDef.caption$/,
|
||||||
/(.*)XCOLUMNS_DEF.parent$/,
|
/(.*)XDATA_GRID.columnsDef.parent$/,
|
||||||
/(.*)XGROUPS.name$/,
|
/(.*)XDATA_GRID.groups.name$/,
|
||||||
/(.*)XGROUPS.caption$/
|
/(.*)XDATA_GRID.groups.caption$/,
|
||||||
|
/(.*)XCYCLOGRAM.columns.name$/,
|
||||||
|
/(.*)XCYCLOGRAM.groups.name$/
|
||||||
];
|
];
|
||||||
|
|
||||||
//-----------
|
//-----------
|
||||||
|
@ -119,8 +119,8 @@ const EqsPrfrm = () => {
|
|||||||
let cF = 0;
|
let cF = 0;
|
||||||
let sF = 0;
|
let sF = 0;
|
||||||
let properties = [];
|
let properties = [];
|
||||||
if (data.XROWS != null) {
|
if (data.XDATA_GRID.rows != null) {
|
||||||
data.XROWS.map(row => {
|
data.XDATA_GRID.rows.map(row => {
|
||||||
properties = [];
|
properties = [];
|
||||||
Object.entries(row).forEach(([key, value]) => properties.push({ name: key, data: value }));
|
Object.entries(row).forEach(([key, value]) => properties.push({ name: key, data: value }));
|
||||||
let info2 = properties.find(element => {
|
let info2 = properties.find(element => {
|
||||||
@ -156,11 +156,10 @@ const EqsPrfrm = () => {
|
|||||||
}
|
}
|
||||||
setDataGrid(pv => ({
|
setDataGrid(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: [...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
fixedHeader: data.XDATA_GRID.fixedHeader,
|
rows: [...(data.XDATA_GRID.rows || [])],
|
||||||
fixedColumns: data.XDATA_GRID.fixedColumns,
|
groups: [...(data.XDATA_GRID.groups || [])],
|
||||||
groups: [...(data.XGROUPS || [])],
|
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false
|
reload: false
|
||||||
}));
|
}));
|
||||||
|
@ -195,9 +195,10 @@ const useProductDetailsTable = (planSpec, product, orders, pageNumber, stored) =
|
|||||||
});
|
});
|
||||||
setData(pv => ({
|
setData(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
morePages: DATA_GRID_PAGE_SIZE == 0 ? false : (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE,
|
rows: pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
|
morePages: DATA_GRID_PAGE_SIZE == 0 ? false : (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE,
|
||||||
init: true
|
init: true
|
||||||
}));
|
}));
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -150,12 +150,13 @@ const useCostJobsSpecs = task => {
|
|||||||
});
|
});
|
||||||
setCostJobsSpecs(pv => ({
|
setCostJobsSpecs(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
|
...data.XDATA_GRID,
|
||||||
task: task,
|
task: task,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE
|
morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
loadData();
|
loadData();
|
||||||
@ -256,12 +257,13 @@ const useEquipConfiguration = (task, fromAction) => {
|
|||||||
});
|
});
|
||||||
setEquipConfiguration(pv => ({
|
setEquipConfiguration(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
|
...data.XDATA_GRID,
|
||||||
task: task,
|
task: task,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE
|
morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
loadData();
|
loadData();
|
||||||
|
@ -53,14 +53,15 @@ const useCostRouteLists = (task, taskType) => {
|
|||||||
});
|
});
|
||||||
setCostRouteLists(pv => ({
|
setCostRouteLists(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE,
|
morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE,
|
||||||
quantPlanSum: data.XROWS ? data.XROWS.reduce((a, b) => a + b["NQUANT_PLAN"], 0) : 0,
|
quantPlanSum: data.XDATA_GRID.rows ? data.XDATA_GRID.rows.reduce((a, b) => a + b["NQUANT_PLAN"], 0) : 0,
|
||||||
uniqueNomns: data.XROWS
|
uniqueNomns: data.XDATA_GRID.rows
|
||||||
? data.XROWS.reduce((accumulator, current) => {
|
? data.XDATA_GRID.rows.reduce((accumulator, current) => {
|
||||||
if (!accumulator.find(item => item.SMATRES_PLAN_NOMEN === current.SMATRES_PLAN_NOMEN)) {
|
if (!accumulator.find(item => item.SMATRES_PLAN_NOMEN === current.SMATRES_PLAN_NOMEN)) {
|
||||||
accumulator.push(current);
|
accumulator.push(current);
|
||||||
}
|
}
|
||||||
@ -122,11 +123,12 @@ const useIncomFromDeps = (task, taskType) => {
|
|||||||
});
|
});
|
||||||
setIncomFromDeps(pv => ({
|
setIncomFromDeps(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE
|
morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
@ -172,11 +174,12 @@ const useGoodsParties = mainRowRN => {
|
|||||||
});
|
});
|
||||||
setGoodsParties(pv => ({
|
setGoodsParties(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE
|
morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
@ -223,11 +226,12 @@ const useCostDeliveryLists = mainRowRN => {
|
|||||||
});
|
});
|
||||||
setCostDeliveryLists(pv => ({
|
setCostDeliveryLists(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE
|
morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
@ -97,7 +97,7 @@ const parseProdPlanSpXML = async xmlDoc => {
|
|||||||
attributeValueProcessor: (name, val) =>
|
attributeValueProcessor: (name, val) =>
|
||||||
["numb", "title"].includes(name) ? undefined : ["start", "end"].includes(name) ? formatDateJSONDateOnly(val) : val
|
["numb", "title"].includes(name) ? undefined : ["start", "end"].includes(name) ? formatDateJSONDateOnly(val) : val
|
||||||
});
|
});
|
||||||
return data.XDATA;
|
return data.XDATA.XGANTT;
|
||||||
};
|
};
|
||||||
|
|
||||||
//Форматирование для отображения количества документов
|
//Форматирование для отображения количества документов
|
||||||
@ -237,8 +237,7 @@ const MechRecCostProdPlans = () => {
|
|||||||
selectedPlanCtlgLevel: null,
|
selectedPlanCtlgLevel: null,
|
||||||
selectedPlanCtlgSort: null,
|
selectedPlanCtlgSort: null,
|
||||||
selectedPlanCtlgMenuItems: null,
|
selectedPlanCtlgMenuItems: null,
|
||||||
selectedPlanCtlgGanttDef: {},
|
gantt: {},
|
||||||
selectedPlanCtlgSpecs: [],
|
|
||||||
selectedTaskDetail: null,
|
selectedTaskDetail: null,
|
||||||
selectedTaskDetailType: null,
|
selectedTaskDetailType: null,
|
||||||
planSpec: null
|
planSpec: null
|
||||||
@ -282,8 +281,7 @@ const MechRecCostProdPlans = () => {
|
|||||||
selectedPlanCtlgLevel: null,
|
selectedPlanCtlgLevel: null,
|
||||||
selectedPlanCtlgSort: null,
|
selectedPlanCtlgSort: null,
|
||||||
selectedPlanCtlgMenuItems: null,
|
selectedPlanCtlgMenuItems: null,
|
||||||
selectedPlanCtlgSpecs: [],
|
gantt: {},
|
||||||
selectedPlanCtlgGanttDef: {},
|
|
||||||
showPlanList: false,
|
showPlanList: false,
|
||||||
selectedTaskDetail: null,
|
selectedTaskDetail: null,
|
||||||
selectedTaskDetailType: null
|
selectedTaskDetailType: null
|
||||||
@ -300,8 +298,7 @@ const MechRecCostProdPlans = () => {
|
|||||||
selectedPlanCtlgLevel: null,
|
selectedPlanCtlgLevel: null,
|
||||||
selectedPlanCtlgSort: null,
|
selectedPlanCtlgSort: null,
|
||||||
selectedPlanCtlgMenuItems: null,
|
selectedPlanCtlgMenuItems: null,
|
||||||
selectedPlanCtlgSpecs: [],
|
gantt: {},
|
||||||
selectedPlanCtlgGanttDef: {},
|
|
||||||
showPlanList: false,
|
showPlanList: false,
|
||||||
selectedTaskDetail: null,
|
selectedTaskDetail: null,
|
||||||
selectedTaskDetailType: null
|
selectedTaskDetailType: null
|
||||||
@ -324,8 +321,7 @@ const MechRecCostProdPlans = () => {
|
|||||||
? state.selectedPlanCtlgMenuItems
|
? state.selectedPlanCtlgMenuItems
|
||||||
: [...Array(data.NMAX_LEVEL).keys()].map(el => el + 1),
|
: [...Array(data.NMAX_LEVEL).keys()].map(el => el + 1),
|
||||||
selectedPlanCtlgSpecsLoaded: true,
|
selectedPlanCtlgSpecsLoaded: true,
|
||||||
selectedPlanCtlgGanttDef: doc.XGANTT_DEF ? { ...doc.XGANTT_DEF } : {},
|
gantt: { ...doc, tasks: [...(doc?.tasks || [])] }
|
||||||
selectedPlanCtlgSpecs: [...(doc?.XGANTT_TASKS || [])]
|
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
@ -401,7 +397,7 @@ const MechRecCostProdPlans = () => {
|
|||||||
<Grid container>
|
<Grid container>
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
{state.selectedPlanCtlgSpecsLoaded ? (
|
{state.selectedPlanCtlgSpecsLoaded ? (
|
||||||
state.selectedPlanCtlgSpecs.length === 0 ? (
|
state.gantt.tasks.length === 0 ? (
|
||||||
<Box pt={3}>
|
<Box pt={3}>
|
||||||
<InlineMsgInfo
|
<InlineMsgInfo
|
||||||
okBtn={false}
|
okBtn={false}
|
||||||
@ -459,10 +455,9 @@ const MechRecCostProdPlans = () => {
|
|||||||
) : null}
|
) : null}
|
||||||
<P8PGantt
|
<P8PGantt
|
||||||
{...P8P_GANTT_CONFIG_PROPS}
|
{...P8P_GANTT_CONFIG_PROPS}
|
||||||
{...state.selectedPlanCtlgGanttDef}
|
{...state.gantt}
|
||||||
containerStyle={STYLES.GANTT_CONTAINER}
|
containerStyle={STYLES.GANTT_CONTAINER}
|
||||||
titleStyle={STYLES.GANTT_TITLE}
|
titleStyle={STYLES.GANTT_TITLE}
|
||||||
tasks={state.selectedPlanCtlgSpecs}
|
|
||||||
taskDialogRenderer={prms => taskDialogRenderer({ ...prms, handleTaskDetailOpen })}
|
taskDialogRenderer={prms => taskDialogRenderer({ ...prms, handleTaskDetailOpen })}
|
||||||
/>
|
/>
|
||||||
</Box>
|
</Box>
|
||||||
|
@ -62,13 +62,12 @@ const useMechRecDeptCostJobs = (subdiv, fullDate, workHours) => {
|
|||||||
});
|
});
|
||||||
setCostJobs(pv => ({
|
setCostJobs(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
fixedHeader: data.XDATA_GRID.fixedHeader,
|
...data.XDATA_GRID,
|
||||||
fixedColumns: data.XDATA_GRID.fixedColumns,
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE_LARGE,
|
morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE_LARGE,
|
||||||
date: fullDate
|
date: fullDate
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
@ -109,11 +108,12 @@ const useInsDepartment = fullDate => {
|
|||||||
});
|
});
|
||||||
setInsDepartments(pv => ({
|
setInsDepartments(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE_SMALL
|
morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE_SMALL
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
if (insDepartments.reload) {
|
if (insDepartments.reload) {
|
||||||
|
@ -75,13 +75,12 @@ const useDeptCostProdPlans = () => {
|
|||||||
});
|
});
|
||||||
setState(pv => ({
|
setState(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
fixedHeader: data.XDATA_GRID.fixedHeader,
|
...data.XDATA_GRID,
|
||||||
fixedColumns: data.XDATA_GRID.fixedColumns,
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE_LARGE
|
morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE_LARGE
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
if (state.reload) {
|
if (state.reload) {
|
||||||
@ -144,11 +143,12 @@ const useCostRouteLists = task => {
|
|||||||
});
|
});
|
||||||
setCostRouteLists(pv => ({
|
setCostRouteLists(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE_SMALL
|
morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE_SMALL
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
if (costRouteLists.reload && task) {
|
if (costRouteLists.reload && task) {
|
||||||
@ -202,11 +202,12 @@ const useCostRouteListsSpecs = mainRowRN => {
|
|||||||
});
|
});
|
||||||
setCostRouteListsSpecs(pv => ({
|
setCostRouteListsSpecs(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE_LARGE
|
morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE_LARGE
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
if (costRouteListsSpecs.reload) {
|
if (costRouteListsSpecs.reload) {
|
||||||
@ -258,11 +259,12 @@ const useIncomFromDeps = task => {
|
|||||||
});
|
});
|
||||||
setIncomFromDeps(pv => ({
|
setIncomFromDeps(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE_LARGE
|
morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE_LARGE
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
if (incomFromDeps.reload) {
|
if (incomFromDeps.reload) {
|
||||||
|
@ -84,11 +84,12 @@ const Projects = () => {
|
|||||||
});
|
});
|
||||||
setProjectsDataGrid(pv => ({
|
setProjectsDataGrid(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= configSystemPageSize
|
morePages: (data.XDATA_GRID.rows || []).length >= configSystemPageSize
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}, [
|
}, [
|
||||||
|
@ -57,8 +57,9 @@ const StageArts = ({ stage, filters }) => {
|
|||||||
});
|
});
|
||||||
setStageArtsDataGrid(pv => ({
|
setStageArtsDataGrid(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: [...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: [...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false
|
reload: false
|
||||||
}));
|
}));
|
||||||
|
@ -67,11 +67,12 @@ const StageContracts = ({ stage, filters }) => {
|
|||||||
});
|
});
|
||||||
setStageContractsDataGrid(pv => ({
|
setStageContractsDataGrid(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= configSystemPageSize
|
morePages: (data.XDATA_GRID.rows || []).length >= configSystemPageSize
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}, [
|
}, [
|
||||||
|
@ -71,11 +71,12 @@ const Stages = ({ project, projectName, filters }) => {
|
|||||||
});
|
});
|
||||||
setStagesDataGrid(pv => ({
|
setStagesDataGrid(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= configSystemPageSize
|
morePages: (data.XDATA_GRID.rows || []).length >= configSystemPageSize
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}, [
|
}, [
|
||||||
|
@ -55,11 +55,10 @@ const PrjGraph = () => {
|
|||||||
const data = await executeStored({ stored: "PKG_P8PANELS_PROJECTS.GRAPH", args: {}, respArg: "COUT" });
|
const data = await executeStored({ stored: "PKG_P8PANELS_PROJECTS.GRAPH", args: {}, respArg: "COUT" });
|
||||||
setdataGrid(pv => ({
|
setdataGrid(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
fixedHeader: data.XDATA_GRID.fixedHeader,
|
...data.XDATA_GRID,
|
||||||
fixedColumns: data.XDATA_GRID.fixedColumns,
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
rows: [...(data.XDATA_GRID.rows || [])],
|
||||||
rows: [...(data.XROWS || [])],
|
groups: [...(data.XDATA_GRID.groups || [])],
|
||||||
groups: [...(data.XGROUPS || [])],
|
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false
|
reload: false
|
||||||
}));
|
}));
|
||||||
|
@ -57,11 +57,12 @@ const LabFactRptDtl = ({ periodId, title, onHide }) => {
|
|||||||
});
|
});
|
||||||
setFactRptDtl(pv => ({
|
setFactRptDtl(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= configSystemPageSize
|
morePages: (data.XDATA_GRID.rows || []).length >= configSystemPageSize
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}, [
|
}, [
|
||||||
|
@ -56,11 +56,12 @@ const LabPlanFOTDtl = ({ periodId, title, onHide }) => {
|
|||||||
});
|
});
|
||||||
setPlanFOTDtl(pv => ({
|
setPlanFOTDtl(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= configSystemPageSize
|
morePages: (data.XDATA_GRID.rows || []).length >= configSystemPageSize
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}, [
|
}, [
|
||||||
|
@ -61,11 +61,12 @@ const LabPlanJobsDtl = ({ periodId, title, onHide, onProjectClick }) => {
|
|||||||
});
|
});
|
||||||
setPlanJobsDtl(pv => ({
|
setPlanJobsDtl(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= configSystemPageSize
|
morePages: (data.XDATA_GRID.rows || []).length >= configSystemPageSize
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}, [
|
}, [
|
||||||
|
@ -265,8 +265,7 @@ const PrjJobs = () => {
|
|||||||
selectedProjectJobsLoaded: false,
|
selectedProjectJobsLoaded: false,
|
||||||
selectedProject: null,
|
selectedProject: null,
|
||||||
selectedProjectDocRn: null,
|
selectedProjectDocRn: null,
|
||||||
selectedProjectGanttDef: {},
|
gantt: {},
|
||||||
selectedProjectTasks: [],
|
|
||||||
showInitDialog: false
|
showInitDialog: false
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -308,8 +307,9 @@ const PrjJobs = () => {
|
|||||||
setState(pv => ({
|
setState(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
selectedProjectJobsLoaded: true,
|
selectedProjectJobsLoaded: true,
|
||||||
selectedProjectGanttDef: tasksOnly === true ? { ...pv.selectedProjectGanttDef } : data.XGANTT_DEF ? { ...data.XGANTT_DEF } : {},
|
gantt: {
|
||||||
selectedProjectTasks: [...data.XGANTT_TASKS]
|
...(tasksOnly === true ? { ...pv.gantt, tasks: [...data.XGANTT.tasks] } : data.XGANTT ? { ...data.XGANTT } : {})
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
[executeStored, state.ident, state.selectedProject]
|
[executeStored, state.ident, state.selectedProject]
|
||||||
@ -394,8 +394,7 @@ const PrjJobs = () => {
|
|||||||
selectedProject: project,
|
selectedProject: project,
|
||||||
selectedProjectDocRn: projectDocRn,
|
selectedProjectDocRn: projectDocRn,
|
||||||
selectedProjectJobsLoaded: false,
|
selectedProjectJobsLoaded: false,
|
||||||
selectedProjectTasks: [],
|
gantt: {},
|
||||||
selectedProjectGanttDef: {},
|
|
||||||
showProjectsList: false
|
showProjectsList: false
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
@ -407,8 +406,7 @@ const PrjJobs = () => {
|
|||||||
selectedProjectJobsLoaded: false,
|
selectedProjectJobsLoaded: false,
|
||||||
selectedProject: null,
|
selectedProject: null,
|
||||||
selectedProjectDocRn: null,
|
selectedProjectDocRn: null,
|
||||||
selectedProjectTasks: [],
|
gantt: {},
|
||||||
selectedProjectGanttDef: {},
|
|
||||||
showProjectsList: false
|
showProjectsList: false
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -515,11 +513,10 @@ const PrjJobs = () => {
|
|||||||
{state.selectedProjectJobsLoaded ? (
|
{state.selectedProjectJobsLoaded ? (
|
||||||
<P8PGantt
|
<P8PGantt
|
||||||
{...P8P_GANTT_CONFIG_PROPS}
|
{...P8P_GANTT_CONFIG_PROPS}
|
||||||
{...state.selectedProjectGanttDef}
|
{...state.gantt}
|
||||||
containerStyle={STYLES.GANTT_CONTAINER}
|
containerStyle={STYLES.GANTT_CONTAINER}
|
||||||
titleStyle={STYLES.GANTT_TITLE}
|
titleStyle={STYLES.GANTT_TITLE}
|
||||||
onTitleClick={handleTitleClick}
|
onTitleClick={handleTitleClick}
|
||||||
tasks={state.selectedProjectTasks}
|
|
||||||
onTaskDatesChange={handleTaskDatesChange}
|
onTaskDatesChange={handleTaskDatesChange}
|
||||||
taskAttributeRenderer={taskAttributeRenderer}
|
taskAttributeRenderer={taskAttributeRenderer}
|
||||||
/>
|
/>
|
||||||
|
@ -79,11 +79,12 @@ const ResMon = ({ ident, onPlanJobsDtlProjectClick }) => {
|
|||||||
});
|
});
|
||||||
setPeriods(pv => ({
|
setPeriods(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
...data.XDATA_GRID,
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reload: false,
|
||||||
morePages: (data.XROWS || []).length >= configSystemPageSize
|
morePages: (data.XDATA_GRID.rows || []).length >= configSystemPageSize
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}, [ident, peridos.reload, peridos.orders, peridos.dataLoaded, peridos.pageNumber, executeStored, configSystemPageSize, SERV_DATA_TYPE_CLOB]);
|
}, [ident, peridos.reload, peridos.orders, peridos.dataLoaded, peridos.pageNumber, executeStored, configSystemPageSize, SERV_DATA_TYPE_CLOB]);
|
||||||
|
@ -97,16 +97,15 @@ const useConf = (currentTab, handleSectionChange) => {
|
|||||||
sections.map(s => {
|
sections.map(s => {
|
||||||
let dg = {};
|
let dg = {};
|
||||||
Object.assign(dg, dataGrid, {
|
Object.assign(dg, dataGrid, {
|
||||||
|
...s.XDATA.XDATA_GRID,
|
||||||
rn: s.NRN,
|
rn: s.NRN,
|
||||||
code: s.SCODE,
|
code: s.SCODE,
|
||||||
name: s.SNAME,
|
name: s.SNAME,
|
||||||
delete_allow: s.NDELETE_ALLOW,
|
delete_allow: s.NDELETE_ALLOW,
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
columnsDef: [...(s.XDATA.XCOLUMNS_DEF || [])],
|
columnsDef: [...(s.XDATA.XDATA_GRID.columnsDef || [])],
|
||||||
groups: [...(s.XDATA.XGROUPS || [])],
|
groups: [...(s.XDATA.XDATA_GRID.groups || [])],
|
||||||
rows: [...(s.XDATA.XROWS || [])],
|
rows: [...(s.XDATA.XDATA_GRID.rows || [])],
|
||||||
fixedHeader: s.XDATA.XDATA_GRID.fixedHeader,
|
|
||||||
fixedColumns: s.XDATA.XDATA_GRID.fixedColumns,
|
|
||||||
reload: false
|
reload: false
|
||||||
});
|
});
|
||||||
//Если раздел имеет составы показателей
|
//Если раздел имеет составы показателей
|
||||||
|
@ -239,8 +239,7 @@ const Cyclogram = ({ title }) => {
|
|||||||
const data = await executeStored({
|
const data = await executeStored({
|
||||||
stored: "PKG_P8PANELS_SAMPLES.CYCLOGRAM",
|
stored: "PKG_P8PANELS_SAMPLES.CYCLOGRAM",
|
||||||
args: { NIDENT: state.ident },
|
args: { NIDENT: state.ident },
|
||||||
attributeValueProcessor: (name, val) =>
|
attributeValueProcessor: (name, val) => (["ddate_start", "ddate_end"].includes(name) ? formatDateJSONDateOnly(val) : val),
|
||||||
name === "name" ? undefined : ["ddate_start", "ddate_end"].includes(name) ? formatDateJSONDateOnly(val) : val,
|
|
||||||
respArg: "COUT"
|
respArg: "COUT"
|
||||||
});
|
});
|
||||||
setState(pv => ({ ...pv, dataLoaded: true, ...data.XCYCLOGRAM, reload: false }));
|
setState(pv => ({ ...pv, dataLoaded: true, ...data.XCYCLOGRAM, reload: false }));
|
||||||
|
@ -86,14 +86,14 @@ export const groupCellRender = () => ({ cellStyle: { padding: "2px" } });
|
|||||||
//Пример: Таблица данных "P8PDataGrid"
|
//Пример: Таблица данных "P8PDataGrid"
|
||||||
const DataGrid = ({ title }) => {
|
const DataGrid = ({ title }) => {
|
||||||
//Собственное состояние - таблица данных
|
//Собственное состояние - таблица данных
|
||||||
const [dataGrid, setdataGrid] = useState({
|
const [dataGrid, setDataGrid] = useState({
|
||||||
dataLoaded: false,
|
dataLoaded: false,
|
||||||
columnsDef: [],
|
columnsDef: [],
|
||||||
filters: null,
|
filters: null,
|
||||||
orders: null,
|
orders: null,
|
||||||
groups: [],
|
groups: [],
|
||||||
rows: [],
|
rows: [],
|
||||||
reload: true,
|
reloading: true,
|
||||||
pageNumber: 1,
|
pageNumber: 1,
|
||||||
morePages: true,
|
morePages: true,
|
||||||
fixedHeader: false,
|
fixedHeader: false,
|
||||||
@ -108,7 +108,7 @@ const DataGrid = ({ title }) => {
|
|||||||
|
|
||||||
//Загрузка данных таблицы с сервера
|
//Загрузка данных таблицы с сервера
|
||||||
const loadData = useCallback(async () => {
|
const loadData = useCallback(async () => {
|
||||||
if (dataGrid.reload) {
|
if (dataGrid.reloading) {
|
||||||
const data = await executeStored({
|
const data = await executeStored({
|
||||||
stored: "PKG_P8PANELS_SAMPLES.DATA_GRID",
|
stored: "PKG_P8PANELS_SAMPLES.DATA_GRID",
|
||||||
args: {
|
args: {
|
||||||
@ -120,32 +120,31 @@ const DataGrid = ({ title }) => {
|
|||||||
},
|
},
|
||||||
respArg: "COUT"
|
respArg: "COUT"
|
||||||
});
|
});
|
||||||
setdataGrid(pv => ({
|
setDataGrid(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
fixedHeader: data.XDATA_GRID.fixedHeader,
|
...data.XDATA_GRID,
|
||||||
fixedColumns: data.XDATA_GRID.fixedColumns,
|
columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])],
|
||||||
rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],
|
groups: data.XDATA_GRID.groups
|
||||||
groups: data.XGROUPS
|
|
||||||
? pv.pageNumber == 1
|
? pv.pageNumber == 1
|
||||||
? [...data.XGROUPS]
|
? [...data.XDATA_GRID.groups]
|
||||||
: [...pv.groups, ...data.XGROUPS.filter(g => !pv.groups.find(pg => pg.name == g.name))]
|
: [...pv.groups, ...data.XDATA_GRID.groups.filter(g => !pv.groups.find(pg => pg.name == g.name))]
|
||||||
: [...pv.groups],
|
: [...pv.groups],
|
||||||
dataLoaded: true,
|
dataLoaded: true,
|
||||||
reload: false,
|
reloading: false,
|
||||||
morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE
|
morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}, [dataGrid.reload, dataGrid.filters, dataGrid.orders, dataGrid.dataLoaded, dataGrid.pageNumber, executeStored, SERV_DATA_TYPE_CLOB]);
|
}, [dataGrid.reloading, dataGrid.filters, dataGrid.orders, dataGrid.dataLoaded, dataGrid.pageNumber, executeStored, SERV_DATA_TYPE_CLOB]);
|
||||||
|
|
||||||
//При изменении состояния фильтра
|
//При изменении состояния фильтра
|
||||||
const handleFilterChanged = ({ filters }) => setdataGrid(pv => ({ ...pv, filters: [...filters], pageNumber: 1, reload: true }));
|
const handleFilterChanged = ({ filters }) => setDataGrid(pv => ({ ...pv, filters: [...filters], pageNumber: 1, reloading: true }));
|
||||||
|
|
||||||
//При изменении состояния сортировки
|
//При изменении состояния сортировки
|
||||||
const handleOrderChanged = ({ orders }) => setdataGrid(pv => ({ ...pv, orders: [...orders], pageNumber: 1, reload: true }));
|
const handleOrderChanged = ({ orders }) => setDataGrid(pv => ({ ...pv, orders: [...orders], pageNumber: 1, reloading: true }));
|
||||||
|
|
||||||
//При изменении количества отображаемых страниц
|
//При изменении количества отображаемых страниц
|
||||||
const handlePagesCountChanged = () => setdataGrid(pv => ({ ...pv, pageNumber: pv.pageNumber + 1, reload: true }));
|
const handlePagesCountChanged = () => setDataGrid(pv => ({ ...pv, pageNumber: pv.pageNumber + 1, reloading: true }));
|
||||||
|
|
||||||
//При нажатии на копку контрагента
|
//При нажатии на копку контрагента
|
||||||
const handleAgnButtonClicked = agnCode => pOnlineShowDocument({ unitCode: "AGNLIST", document: agnCode, inRnParameter: "in_AGNABBR" });
|
const handleAgnButtonClicked = agnCode => pOnlineShowDocument({ unitCode: "AGNLIST", document: agnCode, inRnParameter: "in_AGNABBR" });
|
||||||
@ -153,7 +152,7 @@ const DataGrid = ({ title }) => {
|
|||||||
//При необходимости обновить данные таблицы
|
//При необходимости обновить данные таблицы
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
loadData();
|
loadData();
|
||||||
}, [dataGrid.reload, loadData]);
|
}, [dataGrid.reloading, loadData]);
|
||||||
|
|
||||||
//Генерация содержимого
|
//Генерация содержимого
|
||||||
return (
|
return (
|
||||||
@ -168,15 +167,8 @@ const DataGrid = ({ title }) => {
|
|||||||
<P8PDataGrid
|
<P8PDataGrid
|
||||||
{...P8P_DATA_GRID_CONFIG_PROPS}
|
{...P8P_DATA_GRID_CONFIG_PROPS}
|
||||||
containerComponentProps={{ elevation: 6, style: STYLES.DATA_GRID_CONTAINER }}
|
containerComponentProps={{ elevation: 6, style: STYLES.DATA_GRID_CONTAINER }}
|
||||||
columnsDef={dataGrid.columnsDef}
|
{...dataGrid}
|
||||||
groups={dataGrid.groups}
|
|
||||||
rows={dataGrid.rows}
|
|
||||||
size={P8P_DATA_GRID_SIZE.LARGE}
|
size={P8P_DATA_GRID_SIZE.LARGE}
|
||||||
fixedHeader={dataGrid.fixedHeader}
|
|
||||||
fixedColumns={dataGrid.fixedColumns}
|
|
||||||
filtersInitial={dataGrid.filters}
|
|
||||||
morePages={dataGrid.morePages}
|
|
||||||
reloading={dataGrid.reload}
|
|
||||||
valueFormatter={valueFormatter}
|
valueFormatter={valueFormatter}
|
||||||
headCellRender={headCellRender}
|
headCellRender={headCellRender}
|
||||||
dataCellRender={dataCellRender}
|
dataCellRender={dataCellRender}
|
||||||
|
@ -97,12 +97,10 @@ const taskDialogRenderer = ({ task, close }) => {
|
|||||||
//Пример: Диаграмма Ганта "P8Gantt"
|
//Пример: Диаграмма Ганта "P8Gantt"
|
||||||
const Gantt = ({ title }) => {
|
const Gantt = ({ title }) => {
|
||||||
//Собственное состояние
|
//Собственное состояние
|
||||||
const [state, setState] = useState({
|
const [gantt, setGantt] = useState({
|
||||||
init: false,
|
init: false,
|
||||||
dataLoaded: false,
|
dataLoaded: false,
|
||||||
ident: null,
|
ident: null,
|
||||||
ganttDef: {},
|
|
||||||
ganttTasks: [],
|
|
||||||
useCustomTaskDialog: false
|
useCustomTaskDialog: false
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -113,21 +111,21 @@ const Gantt = ({ title }) => {
|
|||||||
const loadData = useCallback(async () => {
|
const loadData = useCallback(async () => {
|
||||||
const data = await executeStored({
|
const data = await executeStored({
|
||||||
stored: "PKG_P8PANELS_SAMPLES.GANTT",
|
stored: "PKG_P8PANELS_SAMPLES.GANTT",
|
||||||
args: { NIDENT: state.ident },
|
args: { NIDENT: gantt.ident },
|
||||||
attributeValueProcessor: (name, val) =>
|
attributeValueProcessor: (name, val) =>
|
||||||
name == "numb" ? undefined : ["start", "end"].includes(name) ? formatDateJSONDateOnly(val) : val,
|
name == "numb" ? undefined : ["start", "end"].includes(name) ? formatDateJSONDateOnly(val) : val,
|
||||||
respArg: "COUT"
|
respArg: "COUT"
|
||||||
});
|
});
|
||||||
setState(pv => ({ ...pv, dataLoaded: true, ganttDef: { ...data.XGANTT_DEF }, ganttTasks: [...data.XGANTT_TASKS] }));
|
setGantt(pv => ({ ...pv, dataLoaded: true, ...data.XGANTT }));
|
||||||
}, [state.ident, executeStored]);
|
}, [gantt.ident, executeStored]);
|
||||||
|
|
||||||
//Инициализация данных диаграммы
|
//Инициализация данных диаграммы
|
||||||
const initData = useCallback(async () => {
|
const initData = useCallback(async () => {
|
||||||
if (!state.init) {
|
if (!gantt.init) {
|
||||||
const data = await executeStored({ stored: "PKG_P8PANELS_SAMPLES.GANTT_INIT", args: { NIDENT: state.ident } });
|
const data = await executeStored({ stored: "PKG_P8PANELS_SAMPLES.GANTT_INIT", args: { NIDENT: gantt.ident } });
|
||||||
setState(pv => ({ ...pv, init: true, ident: data.NIDENT }));
|
setGantt(pv => ({ ...pv, init: true, ident: data.NIDENT }));
|
||||||
}
|
}
|
||||||
}, [state.init, state.ident, executeStored]);
|
}, [gantt.init, gantt.ident, executeStored]);
|
||||||
|
|
||||||
//Изменение данных диаграммы
|
//Изменение данных диаграммы
|
||||||
const modifyData = useCallback(
|
const modifyData = useCallback(
|
||||||
@ -135,13 +133,13 @@ const Gantt = ({ title }) => {
|
|||||||
try {
|
try {
|
||||||
await executeStored({
|
await executeStored({
|
||||||
stored: "PKG_P8PANELS_SAMPLES.GANTT_MODIFY",
|
stored: "PKG_P8PANELS_SAMPLES.GANTT_MODIFY",
|
||||||
args: { NIDENT: state.ident, NRN: rn, DDATE_FROM: new Date(start), DDATE_TO: new Date(end) }
|
args: { NIDENT: gantt.ident, NRN: rn, DDATE_FROM: new Date(start), DDATE_TO: new Date(end) }
|
||||||
});
|
});
|
||||||
} finally {
|
} finally {
|
||||||
loadData();
|
loadData();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[state.ident, executeStored, loadData]
|
[gantt.ident, executeStored, loadData]
|
||||||
);
|
);
|
||||||
|
|
||||||
//Обработка измненения сроков задачи в диаграмме Гантта
|
//Обработка измненения сроков задачи в диаграмме Гантта
|
||||||
@ -151,8 +149,8 @@ const Gantt = ({ title }) => {
|
|||||||
|
|
||||||
//При необходимости обновить данные таблицы
|
//При необходимости обновить данные таблицы
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (state.ident) loadData();
|
if (gantt.ident) loadData();
|
||||||
}, [state.ident, loadData]);
|
}, [gantt.ident, loadData]);
|
||||||
|
|
||||||
//При подключении компонента к странице
|
//При подключении компонента к странице
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -168,20 +166,19 @@ const Gantt = ({ title }) => {
|
|||||||
</Typography>
|
</Typography>
|
||||||
<FormControlLabel
|
<FormControlLabel
|
||||||
sx={STYLES.CONTROL}
|
sx={STYLES.CONTROL}
|
||||||
control={<Checkbox onChange={() => setState(pv => ({ ...pv, useCustomTaskDialog: !pv.useCustomTaskDialog }))} />}
|
control={<Checkbox onChange={() => setGantt(pv => ({ ...pv, useCustomTaskDialog: !pv.useCustomTaskDialog }))} />}
|
||||||
label="Отображать пользовательский диалог задачи"
|
label="Отображать пользовательский диалог задачи"
|
||||||
/>
|
/>
|
||||||
<Grid container direction="column" alignItems="center">
|
<Grid container direction="column" alignItems="center">
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
{state.dataLoaded ? (
|
{gantt.dataLoaded ? (
|
||||||
<P8PGantt
|
<P8PGantt
|
||||||
{...P8P_GANTT_CONFIG_PROPS}
|
{...P8P_GANTT_CONFIG_PROPS}
|
||||||
{...state.ganttDef}
|
{...gantt}
|
||||||
containerStyle={STYLES.GANTT_CONTAINER}
|
containerStyle={STYLES.GANTT_CONTAINER}
|
||||||
tasks={state.ganttTasks}
|
|
||||||
onTaskDatesChange={handleTaskDatesChange}
|
onTaskDatesChange={handleTaskDatesChange}
|
||||||
taskAttributeRenderer={taskAttributeRenderer}
|
taskAttributeRenderer={taskAttributeRenderer}
|
||||||
taskDialogRenderer={state.useCustomTaskDialog ? taskDialogRenderer : null}
|
taskDialogRenderer={gantt.useCustomTaskDialog ? taskDialogRenderer : null}
|
||||||
/>
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@ -227,10 +227,10 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
||||||
SPRJ_GROUP_NAME PKG_STD.TSTRING; -- Наименование группы для проекта
|
SPRJ_GROUP_NAME PKG_STD.TSTRING; -- Наименование группы для проекта
|
||||||
BEXPANDED boolean; -- Флаг раскрытости уровня
|
BEXPANDED boolean; -- Флаг раскрытости уровня
|
||||||
RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы
|
RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы
|
||||||
RDG_ROW_INFO PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы с информацией по объекту ремонта
|
RDG_ROW_INFO PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы с информацией по объекту ремонта
|
||||||
RDG_ROW_PLAN PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы с планом по объекту ремонта
|
RDG_ROW_PLAN PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы с планом по объекту ремонта
|
||||||
RDG_ROW_FACT PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы с фактом по объекту ремонта
|
RDG_ROW_FACT PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы с фактом по объекту ремонта
|
||||||
NCURYEAR PKG_STD.TNUMBER; -- Текущий год
|
NCURYEAR PKG_STD.TNUMBER; -- Текущий год
|
||||||
NCURMONTH PKG_STD.TNUMBER; -- Текущий месяц
|
NCURMONTH PKG_STD.TNUMBER; -- Текущий месяц
|
||||||
NTOTALDAYS PKG_STD.TNUMBER; -- Дней в текущем месяце
|
NTOTALDAYS PKG_STD.TNUMBER; -- Дней в текущем месяце
|
||||||
@ -399,99 +399,99 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
/* Определим дату конца периода */
|
/* Определим дату конца периода */
|
||||||
NTODATE := LAST_DAY(TO_DATE('01.' || LPAD(TO_CHAR(NTOMONTH), 2, '0') || '.' || TO_CHAR(NTOYEAR), 'dd.mm.yyyy'));
|
NTODATE := LAST_DAY(TO_DATE('01.' || LPAD(TO_CHAR(NTOMONTH), 2, '0') || '.' || TO_CHAR(NTOYEAR), 'dd.mm.yyyy'));
|
||||||
/* Инициализируем таблицу данных */
|
/* Инициализируем таблицу данных */
|
||||||
RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 2);
|
RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 2);
|
||||||
/* Формируем структуру заголовка */
|
/* Формируем структуру заголовка */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SOBJINFO',
|
SNAME => 'SOBJINFO',
|
||||||
SCAPTION => 'Информация по объекту ремонта',
|
SCAPTION => 'Информация по объекту ремонта',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
NWIDTH => 80);
|
NWIDTH => 80);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SINFO',
|
SNAME => 'SINFO',
|
||||||
SCAPTION => 'Объект ремонта',
|
SCAPTION => 'Объект ремонта',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
NWIDTH => 80);
|
NWIDTH => 80);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SWRKTYPE',
|
SNAME => 'SWRKTYPE',
|
||||||
SCAPTION => 'Тип работ',
|
SCAPTION => 'Тип работ',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
SPARENT => 'SINFO',
|
SPARENT => 'SINFO',
|
||||||
NWIDTH => 80);
|
NWIDTH => 80);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'NRN',
|
SNAME => 'NRN',
|
||||||
SCAPTION => 'Рег. номер',
|
SCAPTION => 'Рег. номер',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SWORKNAME',
|
SNAME => 'SWORKNAME',
|
||||||
SCAPTION => 'Наименование работы',
|
SCAPTION => 'Наименование работы',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'STECHOBJCODE',
|
SNAME => 'STECHOBJCODE',
|
||||||
SCAPTION => 'Код тех. объекта',
|
SCAPTION => 'Код тех. объекта',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'STECHOBJNAME',
|
SNAME => 'STECHOBJNAME',
|
||||||
SCAPTION => 'Наименование тех. объекта',
|
SCAPTION => 'Наименование тех. объекта',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SBELONG',
|
SNAME => 'SBELONG',
|
||||||
SCAPTION => 'Принадлежность',
|
SCAPTION => 'Принадлежность',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SPRODOBJ',
|
SNAME => 'SPRODOBJ',
|
||||||
SCAPTION => 'Производственный объект',
|
SCAPTION => 'Производственный объект',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'STECHSERV',
|
SNAME => 'STECHSERV',
|
||||||
SCAPTION => 'Тех. служба',
|
SCAPTION => 'Тех. служба',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SRESPDEP',
|
SNAME => 'SRESPDEP',
|
||||||
SCAPTION => 'Отвественное подразделение',
|
SCAPTION => 'Отвественное подразделение',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'STECSERVCODE',
|
SNAME => 'STECSERVCODE',
|
||||||
SCAPTION => 'Вид ремонта',
|
SCAPTION => 'Вид ремонта',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'DDATEPLANBEG',
|
SNAME => 'DDATEPLANBEG',
|
||||||
SCAPTION => 'Начало работы (план)',
|
SCAPTION => 'Начало работы (план)',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'DDATEPLANEND',
|
SNAME => 'DDATEPLANEND',
|
||||||
SCAPTION => 'Окончание работы (план)',
|
SCAPTION => 'Окончание работы (план)',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'DDATEFACTBEG',
|
SNAME => 'DDATEFACTBEG',
|
||||||
SCAPTION => 'Начало работы (факт)',
|
SCAPTION => 'Начало работы (факт)',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'DDATEFACTEND',
|
SNAME => 'DDATEFACTEND',
|
||||||
SCAPTION => 'Окончание работы (факт)',
|
SCAPTION => 'Окончание работы (факт)',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'STECSRVKINDCODE',
|
SNAME => 'STECSRVKINDCODE',
|
||||||
SCAPTION => 'Код типа работы',
|
SCAPTION => 'Код типа работы',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'STECSRVKINDNAME',
|
SNAME => 'STECSRVKINDNAME',
|
||||||
SCAPTION => 'Наименование типа работы',
|
SCAPTION => 'Наименование типа работы',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
/* Очистка коллекций */
|
/* Очистка коллекций */
|
||||||
PKG_CONTVALLOC1S.PURGE(RCONTAINER => YM);
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => YM);
|
||||||
PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR);
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR);
|
||||||
@ -530,12 +530,12 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
else
|
else
|
||||||
BEXPANDED := false;
|
BEXPANDED := false;
|
||||||
end if;
|
end if;
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M),
|
SNAME => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M),
|
||||||
SCAPTION => LPAD(TO_CHAR(M), 2, '0') || ' ' || TO_CHAR(Y),
|
SCAPTION => LPAD(TO_CHAR(M), 2, '0') || ' ' || TO_CHAR(Y),
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BEXPANDABLE => true,
|
BEXPANDABLE => true,
|
||||||
BEXPANDED => BEXPANDED);
|
BEXPANDED => BEXPANDED);
|
||||||
/* Подсчёт кол-ва дней в месяце */
|
/* Подсчёт кол-ва дней в месяце */
|
||||||
NTOTALDAYS := TO_NUMBER(TO_CHAR(LAST_DAY(TO_DATE('01.' || LPAD(TO_CHAR(M), 2, '0') || '.' || TO_CHAR(Y),
|
NTOTALDAYS := TO_NUMBER(TO_CHAR(LAST_DAY(TO_DATE('01.' || LPAD(TO_CHAR(M), 2, '0') || '.' || TO_CHAR(Y),
|
||||||
'dd.mm.yyyy')),
|
'dd.mm.yyyy')),
|
||||||
@ -544,12 +544,11 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
/* Цикл по дням месяца */
|
/* Цикл по дням месяца */
|
||||||
for D in 1 .. NTOTALDAYS
|
for D in 1 .. NTOTALDAYS
|
||||||
loop
|
loop
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M) || '_' ||
|
SNAME => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M) || '_' || TO_CHAR(D),
|
||||||
TO_CHAR(D),
|
SCAPTION => TO_CHAR(D, '99'),
|
||||||
SCAPTION => TO_CHAR(D, '99'),
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SPARENT => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M));
|
||||||
SPARENT => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M));
|
|
||||||
end loop;
|
end loop;
|
||||||
end loop;
|
end loop;
|
||||||
end loop;
|
end loop;
|
||||||
@ -573,7 +572,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
if (NFROMYEAR = NTOYEAR) then
|
if (NFROMYEAR = NTOYEAR) then
|
||||||
NMS := NFROMMONTH;
|
NMS := NFROMMONTH;
|
||||||
NME := NTOMONTH;
|
NME := NTOMONTH;
|
||||||
/* Иначе вычисляем кол-во месяцев в каждом году периода отчёта */
|
/* Иначе вычисляем кол-во месяцев в каждом году периода отчёта */
|
||||||
else
|
else
|
||||||
if (Y = NFROMYEAR) then
|
if (Y = NFROMYEAR) then
|
||||||
NMS := NFROMMONTH;
|
NMS := NFROMMONTH;
|
||||||
@ -590,14 +589,14 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
for M in NMS .. NME
|
for M in NMS .. NME
|
||||||
loop
|
loop
|
||||||
SPERIODNAME := '_' || TO_CHAR(Y) || '_' || TO_CHAR(M);
|
SPERIODNAME := '_' || TO_CHAR(Y) || '_' || TO_CHAR(M);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_INFO,
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_INFO,
|
||||||
SNAME => SPERIODNAME,
|
SNAME => SPERIODNAME,
|
||||||
SVALUE => 'план: ' || HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
SVALUE => 'план: ' || HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
||||||
SROWID => SPERIODNAME || '_P'),
|
SROWID => SPERIODNAME || '_P'),
|
||||||
1)) || ' факт: ' ||
|
1)) || ' факт: ' ||
|
||||||
HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
||||||
SROWID => SPERIODNAME || '_F'),
|
SROWID => SPERIODNAME || '_F'),
|
||||||
1)));
|
1)));
|
||||||
/* Добавление в коллекцию трудоёмкость план */
|
/* Добавление в коллекцию трудоёмкость план */
|
||||||
PKG_CONTVALLOC1S.PUTN(RCONTAINER => YM, SROWID => SPERIODNAME || '_P', NVALUE => 0);
|
PKG_CONTVALLOC1S.PUTN(RCONTAINER => YM, SROWID => SPERIODNAME || '_P', NVALUE => 0);
|
||||||
/* Добавление в коллекцию трудоёмкость факт */
|
/* Добавление в коллекцию трудоёмкость факт */
|
||||||
@ -605,17 +604,17 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
end loop;
|
end loop;
|
||||||
end loop;
|
end loop;
|
||||||
/* Добавление строки с трудоёмкостью */
|
/* Добавление строки с трудоёмкостью */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_INFO);
|
PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_INFO);
|
||||||
end if;
|
end if;
|
||||||
/* Добавление группы с объектом ремонта */
|
/* Добавление группы с объектом ремонта */
|
||||||
SCURTECHOBJ := QQ.STECHOBJNAME;
|
SCURTECHOBJ := QQ.STECHOBJNAME;
|
||||||
SPRJ_GROUP_NAME := SCURTECHOBJ;
|
SPRJ_GROUP_NAME := SCURTECHOBJ;
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_GROUP(RDATA_GRID => RDG,
|
||||||
SNAME => SPRJ_GROUP_NAME,
|
SNAME => SPRJ_GROUP_NAME,
|
||||||
SCAPTION => QQ.STECHOBJNAME,
|
SCAPTION => QQ.STECHOBJNAME,
|
||||||
BEXPANDABLE => false);
|
BEXPANDABLE => false);
|
||||||
RDG_ROW_INFO := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
RDG_ROW_INFO := PKG_P8PANELS_VISUAL.TDG_ROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_INFO, SNAME => 'SOBJINFO', SVALUE => SCURTECHOBJ);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_INFO, SNAME => 'SOBJINFO', SVALUE => SCURTECHOBJ);
|
||||||
end if;
|
end if;
|
||||||
/* Формируем имя группы для вида ремонта */
|
/* Формируем имя группы для вида ремонта */
|
||||||
SCURTSKCODE := SCURTECHOBJ || '_' || QQ.STECSRVKINDCODE;
|
SCURTSKCODE := SCURTECHOBJ || '_' || QQ.STECSRVKINDCODE;
|
||||||
@ -623,7 +622,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => GF, SROWID => SCURTSKCODE) = false) then
|
if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => GF, SROWID => SCURTSKCODE) = false) then
|
||||||
/* Добавляем строку плана */
|
/* Добавляем строку плана */
|
||||||
if (RDG_ROW_PLAN.RCOLS is not null) then
|
if (RDG_ROW_PLAN.RCOLS is not null) then
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_PLAN);
|
PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_PLAN);
|
||||||
end if;
|
end if;
|
||||||
/* Добавляем строку факта */
|
/* Добавляем строку факта */
|
||||||
if (RDG_ROW_FACT.RCOLS is not null) then
|
if (RDG_ROW_FACT.RCOLS is not null) then
|
||||||
@ -631,27 +630,27 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
/* Цикл по коллекции для закрашивания месяцев */
|
/* Цикл по коллекции для закрашивания месяцев */
|
||||||
for Z in 1 .. PKG_CONTVALLOC1S.COUNT_(RCONTAINER => MCLR)
|
for Z in 1 .. PKG_CONTVALLOC1S.COUNT_(RCONTAINER => MCLR)
|
||||||
loop
|
loop
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_FACT,
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_FACT,
|
||||||
SNAME => CR,
|
SNAME => CR,
|
||||||
SVALUE => PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => CR));
|
SVALUE => PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => CR));
|
||||||
CR := PKG_CONTVALLOC1S.NEXT_(RCONTAINER => MCLR, SROWID => CR);
|
CR := PKG_CONTVALLOC1S.NEXT_(RCONTAINER => MCLR, SROWID => CR);
|
||||||
end loop;
|
end loop;
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_FACT);
|
PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_FACT);
|
||||||
end if;
|
end if;
|
||||||
PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR);
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR);
|
||||||
/* Добвим группу для вида ремонта */
|
/* Добвим группу для вида ремонта */
|
||||||
SPRJ_GROUP_NAME := SCURTSKCODE;
|
SPRJ_GROUP_NAME := SCURTSKCODE;
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_GROUP(RDATA_GRID => RDG,
|
||||||
SNAME => SPRJ_GROUP_NAME,
|
SNAME => SPRJ_GROUP_NAME,
|
||||||
SCAPTION => QQ.STECSRVKINDCODE,
|
SCAPTION => QQ.STECSRVKINDCODE,
|
||||||
BEXPANDABLE => false);
|
BEXPANDABLE => false);
|
||||||
/* Строка плана */
|
/* Строка плана */
|
||||||
RDG_ROW_PLAN := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
RDG_ROW_PLAN := PKG_P8PANELS_VISUAL.TDG_ROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => 'SOBJINFO', SVALUE => QQ.STECSRVKINDCODE);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => 'SOBJINFO', SVALUE => QQ.STECSRVKINDCODE);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => 'SWRKTYPE', SVALUE => 'План');
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => 'SWRKTYPE', SVALUE => 'План');
|
||||||
/* Строка факта */
|
/* Строка факта */
|
||||||
RDG_ROW_FACT := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
RDG_ROW_FACT := PKG_P8PANELS_VISUAL.TDG_ROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_FACT, SNAME => 'SWRKTYPE', SVALUE => 'Факт');
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_FACT, SNAME => 'SWRKTYPE', SVALUE => 'Факт');
|
||||||
/* Добавляем в заполненные группы */
|
/* Добавляем в заполненные группы */
|
||||||
PKG_CONTVALLOC1S.PUTS(RCONTAINER => GF, SROWID => SPRJ_GROUP_NAME, SVALUE => '');
|
PKG_CONTVALLOC1S.PUTS(RCONTAINER => GF, SROWID => SPRJ_GROUP_NAME, SVALUE => '');
|
||||||
end if;
|
end if;
|
||||||
@ -676,7 +675,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
/* Закрашивание месяца плана синим */
|
/* Закрашивание месяца плана синим */
|
||||||
if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => COLS, SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN') =
|
if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => COLS, SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN') =
|
||||||
false) then
|
false) then
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => SPERIODNAME, SVALUE => 'blue');
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => SPERIODNAME, SVALUE => 'blue');
|
||||||
PKG_CONTVALLOC1S.PUTS(RCONTAINER => COLS,
|
PKG_CONTVALLOC1S.PUTS(RCONTAINER => COLS,
|
||||||
SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN',
|
SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN',
|
||||||
SVALUE => '');
|
SVALUE => '');
|
||||||
@ -686,7 +685,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
/* Закрашивание дня плана синим */
|
/* Закрашивание дня плана синим */
|
||||||
if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => COLS, SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN') =
|
if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => COLS, SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN') =
|
||||||
false) then
|
false) then
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => SPERIODNAME, SVALUE => 'blue');
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => SPERIODNAME, SVALUE => 'blue');
|
||||||
PKG_CONTVALLOC1S.PUTS(RCONTAINER => COLS,
|
PKG_CONTVALLOC1S.PUTS(RCONTAINER => COLS,
|
||||||
SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN',
|
SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN',
|
||||||
SVALUE => '');
|
SVALUE => '');
|
||||||
@ -783,37 +782,37 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
for M in NMS .. NME
|
for M in NMS .. NME
|
||||||
loop
|
loop
|
||||||
SPERIODNAME := '_' || TO_CHAR(Y) || '_' || TO_CHAR(M);
|
SPERIODNAME := '_' || TO_CHAR(Y) || '_' || TO_CHAR(M);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_INFO,
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_INFO,
|
||||||
SNAME => SPERIODNAME,
|
SNAME => SPERIODNAME,
|
||||||
SVALUE => 'план: ' || HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
SVALUE => 'план: ' || HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
||||||
SROWID => SPERIODNAME || '_P'),
|
SROWID => SPERIODNAME || '_P'),
|
||||||
1)) || ' факт: ' ||
|
1)) || ' факт: ' ||
|
||||||
HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
||||||
SROWID => SPERIODNAME || '_F'),
|
SROWID => SPERIODNAME || '_F'),
|
||||||
1)));
|
1)));
|
||||||
end loop;
|
end loop;
|
||||||
end loop;
|
end loop;
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_INFO);
|
PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_INFO);
|
||||||
end if;
|
end if;
|
||||||
/* План для последней записи */
|
/* План для последней записи */
|
||||||
if ((RDG_ROW_PLAN.RCOLS is not null) and (NROWS = 0)) then
|
if ((RDG_ROW_PLAN.RCOLS is not null) and (NROWS = 0)) then
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_PLAN);
|
PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_PLAN);
|
||||||
end if;
|
end if;
|
||||||
/* Факт для последней записи */
|
/* Факт для последней записи */
|
||||||
if ((RDG_ROW_FACT.RCOLS is not null) and (NROWS = 0)) then
|
if ((RDG_ROW_FACT.RCOLS is not null) and (NROWS = 0)) then
|
||||||
CR := PKG_CONTVALLOC1S.FIRST_(RCONTAINER => MCLR);
|
CR := PKG_CONTVALLOC1S.FIRST_(RCONTAINER => MCLR);
|
||||||
for Z in 1 .. PKG_CONTVALLOC1S.COUNT_(RCONTAINER => MCLR)
|
for Z in 1 .. PKG_CONTVALLOC1S.COUNT_(RCONTAINER => MCLR)
|
||||||
loop
|
loop
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_FACT,
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_FACT,
|
||||||
SNAME => CR,
|
SNAME => CR,
|
||||||
SVALUE => PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => CR));
|
SVALUE => PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => CR));
|
||||||
CR := PKG_CONTVALLOC1S.NEXT_(RCONTAINER => MCLR, SROWID => CR);
|
CR := PKG_CONTVALLOC1S.NEXT_(RCONTAINER => MCLR, SROWID => CR);
|
||||||
end loop;
|
end loop;
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_FACT);
|
PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_FACT);
|
||||||
end if;
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
/* Сериализуем описание */
|
/* Сериализуем описание */
|
||||||
COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1);
|
COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1);
|
||||||
/* Очищаем контейнеры */
|
/* Очищаем контейнеры */
|
||||||
PKG_CONTVALLOC1S.PURGE(RCONTAINER => YM);
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => YM);
|
||||||
PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR);
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR);
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -784,8 +784,8 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
is
|
is
|
||||||
NVERSION PKG_STD.TREF; -- Рег. номер версии словаря контрагентов
|
NVERSION PKG_STD.TREF; -- Рег. номер версии словаря контрагентов
|
||||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса
|
||||||
RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы
|
RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы
|
||||||
RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы
|
RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы
|
||||||
CDG clob; -- XML данных раздела
|
CDG clob; -- XML данных раздела
|
||||||
CXML PKG_CONTVALLOC2NS.TCONTAINER; -- Контейнер для данных XML
|
CXML PKG_CONTVALLOC2NS.TCONTAINER; -- Контейнер для данных XML
|
||||||
RRRPCONFSCTNMRK RRPCONFSCTNMRK%rowtype; -- Рег. номер показателя
|
RRRPCONFSCTNMRK RRPCONFSCTNMRK%rowtype; -- Рег. номер показателя
|
||||||
@ -798,8 +798,8 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
/* Инициализация колонок граф показателей */
|
/* Инициализация колонок граф показателей */
|
||||||
procedure MARKS_COLUMNS_INIT
|
procedure MARKS_COLUMNS_INIT
|
||||||
(
|
(
|
||||||
RDG in out nocopy PKG_P8PANELS_VISUAL.TDATA_GRID, -- Описание таблицы
|
RDG in out nocopy PKG_P8PANELS_VISUAL.TDG, -- Описание таблицы
|
||||||
NRRPCONFSCTN in number -- Рег. номер раздела
|
NRRPCONFSCTN in number -- Рег. номер раздела
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
begin
|
begin
|
||||||
@ -816,35 +816,35 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
order by C.CODE)
|
order by C.CODE)
|
||||||
loop
|
loop
|
||||||
/* Наименование графы */
|
/* Наименование графы */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SCOL_' || REC.CODE,
|
SNAME => 'SCOL_' || REC.CODE,
|
||||||
SCAPTION => REC.NAME,
|
SCAPTION => REC.NAME,
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
NWIDTH => 200);
|
NWIDTH => 200);
|
||||||
/* Рег. номер графы */
|
/* Рег. номер графы */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'NCOL_RN_' || REC.CODE,
|
SNAME => 'NCOL_RN_' || REC.CODE,
|
||||||
SCAPTION => REC.NAME || ' рег. номер',
|
SCAPTION => REC.NAME || ' рег. номер',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
/* Рег. номер показателя */
|
/* Рег. номер показателя */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'NMARK_RN_' || REC.CODE,
|
SNAME => 'NMARK_RN_' || REC.CODE,
|
||||||
SCAPTION => REC.NAME || ' рег. номер показателя',
|
SCAPTION => REC.NAME || ' рег. номер показателя',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
/* Мнемокод показателя */
|
/* Мнемокод показателя */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SMARK_CODE_' || REC.CODE,
|
SNAME => 'SMARK_CODE_' || REC.CODE,
|
||||||
SCAPTION => REC.NAME || ' мнемокод показателя',
|
SCAPTION => REC.NAME || ' мнемокод показателя',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
/* Для составов показтелей */
|
/* Для составов показтелей */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'MARK_CNS_' || REC.CODE,
|
SNAME => 'MARK_CNS_' || REC.CODE,
|
||||||
SCAPTION => REC.NAME || ' состав показателя',
|
SCAPTION => REC.NAME || ' состав показателя',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
end loop;
|
end loop;
|
||||||
end MARKS_COLUMNS_INIT;
|
end MARKS_COLUMNS_INIT;
|
||||||
|
|
||||||
@ -897,25 +897,25 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
order by T.CODE)
|
order by T.CODE)
|
||||||
loop
|
loop
|
||||||
/* Инициализируем таблицу данных */
|
/* Инициализируем таблицу данных */
|
||||||
RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 1);
|
RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 1);
|
||||||
/* Формируем структуру заголовка */
|
/* Формируем структуру заголовка */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SROW_NAME',
|
SNAME => 'SROW_NAME',
|
||||||
SCAPTION => '',
|
SCAPTION => '',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
NWIDTH => 150);
|
NWIDTH => 150);
|
||||||
/* Формируем структуру заголовка */
|
/* Формируем структуру заголовка */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SROW_CODE',
|
SNAME => 'SROW_CODE',
|
||||||
SCAPTION => 'Мнемокод строки',
|
SCAPTION => 'Мнемокод строки',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
/* Формируем структуру заголовка */
|
/* Формируем структуру заголовка */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'NROW_RN',
|
SNAME => 'NROW_RN',
|
||||||
SCAPTION => 'Рег. номер строки',
|
SCAPTION => 'Рег. номер строки',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
/* Если раздел содержит показатели */
|
/* Если раздел содержит показатели */
|
||||||
if (S.NMARKS_EXISTS = 1) then
|
if (S.NMARKS_EXISTS = 1) then
|
||||||
/* Инициализируем колонки граф */
|
/* Инициализируем колонки граф */
|
||||||
@ -938,11 +938,11 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
LPAD(R.CODE, 20, '0'))
|
LPAD(R.CODE, 20, '0'))
|
||||||
loop
|
loop
|
||||||
/* Заполняем наименование строки */
|
/* Заполняем наименование строки */
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SROW_NAME', SVALUE => R.NAME, BCLEAR => true);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SROW_NAME', SVALUE => R.NAME, BCLEAR => true);
|
||||||
/* Заполняем мнемокод строки */
|
/* Заполняем мнемокод строки */
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SROW_CODE', SVALUE => R.CODE);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SROW_CODE', SVALUE => R.CODE);
|
||||||
/* Заполняем рег. номер строки */
|
/* Заполняем рег. номер строки */
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NROW_RN', NVALUE => R.RN);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NROW_RN', NVALUE => R.RN);
|
||||||
/* Обходим графы раздела */
|
/* Обходим графы раздела */
|
||||||
for C in (select C.RN,
|
for C in (select C.RN,
|
||||||
C.CODE,
|
C.CODE,
|
||||||
@ -963,29 +963,29 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
/* Считываем показатель по строке/графе */
|
/* Считываем показатель по строке/графе */
|
||||||
RRRPCONFSCTNMRK := RRPCONFSCTNMRK_GET_ROWCOL(NRRPCONFSCTN => S.NRN, NRRPROW => R.RN, NRRPCOLUMN => C.RN);
|
RRRPCONFSCTNMRK := RRPCONFSCTNMRK_GET_ROWCOL(NRRPCONFSCTN => S.NRN, NRRPROW => R.RN, NRRPCOLUMN => C.RN);
|
||||||
/* Заполняем рег. номер графы */
|
/* Заполняем рег. номер графы */
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SCOL_' || C.CODE, SVALUE => C.NAME);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SCOL_' || C.CODE, SVALUE => C.NAME);
|
||||||
/* Заполняем рег. номер графы */
|
/* Заполняем рег. номер графы */
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCOL_RN_' || C.CODE, NVALUE => C.RN);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCOL_RN_' || C.CODE, NVALUE => C.RN);
|
||||||
/* Заполняем рег. номер показателя */
|
/* Заполняем рег. номер показателя */
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW,
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW,
|
||||||
SNAME => 'NMARK_RN_' || C.CODE,
|
SNAME => 'NMARK_RN_' || C.CODE,
|
||||||
NVALUE => RRRPCONFSCTNMRK.RN);
|
NVALUE => RRRPCONFSCTNMRK.RN);
|
||||||
/* Если ошибка считывания показателя */
|
/* Если ошибка считывания показателя */
|
||||||
if (RRRPCONFSCTNMRK.RN is not null) then
|
if (RRRPCONFSCTNMRK.RN is not null) then
|
||||||
/* Заполняем мнемокод показателя */
|
/* Заполняем мнемокод показателя */
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW,
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW,
|
||||||
SNAME => 'SMARK_CODE_' || C.CODE,
|
SNAME => 'SMARK_CODE_' || C.CODE,
|
||||||
SVALUE => RRRPCONFSCTNMRK.CODE);
|
SVALUE => RRRPCONFSCTNMRK.CODE);
|
||||||
/* Добавляем атрибут состава показателей */
|
/* Добавляем атрибут состава показателей */
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'MARK_CNS_' || C.CODE, SVALUE => null);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'MARK_CNS_' || C.CODE, SVALUE => null);
|
||||||
end if;
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
/* Добавим строку для раздела */
|
/* Добавим строку для раздела */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
|
PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
|
||||||
end loop;
|
end loop;
|
||||||
end if;
|
end if;
|
||||||
/* Сериализуем описание */
|
/* Сериализуем описание */
|
||||||
CDG := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1);
|
CDG := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1);
|
||||||
/* Заполняем контейнер данными о разделе */
|
/* Заполняем контейнер данными о разделе */
|
||||||
PKG_CONTVALLOC2NS.PUTN(RCONTAINER => CXML, NTABID => S.RNUM, SROWID => 'RN', NVALUE => S.NRN);
|
PKG_CONTVALLOC2NS.PUTN(RCONTAINER => CXML, NTABID => S.RNUM, SROWID => 'RN', NVALUE => S.NRN);
|
||||||
PKG_CONTVALLOC2NS.PUTS(RCONTAINER => CXML, NTABID => S.RNUM, SROWID => 'CODE', SVALUE => S.SCODE);
|
PKG_CONTVALLOC2NS.PUTS(RCONTAINER => CXML, NTABID => S.RNUM, SROWID => 'CODE', SVALUE => S.SCODE);
|
||||||
|
@ -257,11 +257,11 @@ create or replace package body PKG_P8PANELS_SAMPLES as
|
|||||||
is
|
is
|
||||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса
|
||||||
NIDENT PKG_STD.TREF := GEN_IDENT(); -- Идентификатор отбора
|
NIDENT PKG_STD.TREF := GEN_IDENT(); -- Идентификатор отбора
|
||||||
RF PKG_P8PANELS_VISUAL.TFILTERS; -- Фильтры
|
RF PKG_P8PANELS_VISUAL.TDG_FILTERS; -- Фильтры
|
||||||
RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки
|
RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки
|
||||||
RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы
|
RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы
|
||||||
RAGN_TYPES PKG_P8PANELS_VISUAL.TCOL_VALS; -- Предопределенные значения "Типа контрагентов"
|
RAGN_TYPES PKG_P8PANELS_VISUAL.TDG_COL_VALS; -- Предопределенные значения "Типа контрагентов"
|
||||||
RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы
|
RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы
|
||||||
NROW_FROM PKG_STD.TREF; -- Номер строки с
|
NROW_FROM PKG_STD.TREF; -- Номер строки с
|
||||||
NROW_TO PKG_STD.TREF; -- Номер строки по
|
NROW_TO PKG_STD.TREF; -- Номер строки по
|
||||||
CSQL clob; -- Буфер для запроса
|
CSQL clob; -- Буфер для запроса
|
||||||
@ -272,71 +272,71 @@ create or replace package body PKG_P8PANELS_SAMPLES as
|
|||||||
NAGNTYPE PKG_STD.TREF; -- Буфер для "Типа"
|
NAGNTYPE PKG_STD.TREF; -- Буфер для "Типа"
|
||||||
begin
|
begin
|
||||||
/* Читаем фильтры */
|
/* Читаем фильтры */
|
||||||
RF := PKG_P8PANELS_VISUAL.TFILTERS_FROM_XML(CFILTERS => CFILTERS);
|
RF := PKG_P8PANELS_VISUAL.TDG_FILTERS_FROM_XML(CFILTERS => CFILTERS);
|
||||||
/* Читем сортировки */
|
/* Читем сортировки */
|
||||||
RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS);
|
RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_FROM_XML(CORDERS => CORDERS);
|
||||||
/* Преобразуем номер и размер страницы в номер строк с и по */
|
/* Преобразуем номер и размер страницы в номер строк с и по */
|
||||||
PKG_P8PANELS_VISUAL.UTL_ROWS_LIMITS_CALC(NPAGE_NUMBER => NPAGE_NUMBER,
|
PKG_P8PANELS_VISUAL.UTL_ROWS_LIMITS_CALC(NPAGE_NUMBER => NPAGE_NUMBER,
|
||||||
NPAGE_SIZE => NPAGE_SIZE,
|
NPAGE_SIZE => NPAGE_SIZE,
|
||||||
NROW_FROM => NROW_FROM,
|
NROW_FROM => NROW_FROM,
|
||||||
NROW_TO => NROW_TO);
|
NROW_TO => NROW_TO);
|
||||||
/* Инициализируем таблицу данных */
|
/* Инициализируем таблицу данных */
|
||||||
RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 2);
|
RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 2);
|
||||||
/* Описываем колонки таблицы данных */
|
/* Описываем колонки таблицы данных */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SAGNABBR',
|
SNAME => 'SAGNABBR',
|
||||||
SCAPTION => 'Мнемокод',
|
SCAPTION => 'Мнемокод',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
SCOND_FROM => 'AgentAbbr',
|
SCOND_FROM => 'AgentAbbr',
|
||||||
BVISIBLE => true,
|
BVISIBLE => true,
|
||||||
BORDER => true,
|
BORDER => true,
|
||||||
BFILTER => true,
|
BFILTER => true,
|
||||||
NWIDTH => 150);
|
NWIDTH => 150);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SAGNINFO',
|
SNAME => 'SAGNINFO',
|
||||||
SCAPTION => 'Сведения',
|
SCAPTION => 'Сведения',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => true,
|
BVISIBLE => true,
|
||||||
BORDER => false,
|
BORDER => false,
|
||||||
BFILTER => false,
|
BFILTER => false,
|
||||||
BEXPANDABLE => true,
|
BEXPANDABLE => true,
|
||||||
NWIDTH => 300);
|
NWIDTH => 300);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SAGNNAME',
|
SNAME => 'SAGNNAME',
|
||||||
SCAPTION => 'Наименование',
|
SCAPTION => 'Наименование',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
SCOND_FROM => 'AgentName',
|
SCOND_FROM => 'AgentName',
|
||||||
BVISIBLE => true,
|
BVISIBLE => true,
|
||||||
BORDER => true,
|
BORDER => true,
|
||||||
BFILTER => true,
|
BFILTER => true,
|
||||||
SPARENT => 'SAGNINFO',
|
SPARENT => 'SAGNINFO',
|
||||||
NWIDTH => 200);
|
NWIDTH => 200);
|
||||||
PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 0);
|
PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 0);
|
||||||
PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 1);
|
PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 1);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'NAGNTYPE',
|
SNAME => 'NAGNTYPE',
|
||||||
SCAPTION => 'Тип',
|
SCAPTION => 'Тип',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
||||||
SCOND_FROM => 'AgentType',
|
SCOND_FROM => 'AgentType',
|
||||||
BVISIBLE => true,
|
BVISIBLE => true,
|
||||||
BORDER => true,
|
BORDER => true,
|
||||||
BFILTER => true,
|
BFILTER => true,
|
||||||
SPARENT => 'SAGNINFO',
|
SPARENT => 'SAGNINFO',
|
||||||
NWIDTH => 100,
|
NWIDTH => 100,
|
||||||
RCOL_VALS => RAGN_TYPES,
|
RCOL_VALS => RAGN_TYPES,
|
||||||
SHINT => 'В Системе бывают контрагенты двух типов:<br>' ||
|
SHINT => 'В Системе бывают контрагенты двух типов:<br>' ||
|
||||||
'<b style="color:blue">Юридическое лицо</b> - организация, которая имеет в собственности, хозяйственном ведении ' ||
|
'<b style="color:blue">Юридическое лицо</b> - организация, которая имеет в собственности, хозяйственном ведении ' ||
|
||||||
'или оперативном управлении обособленное имущество, отвечает по своим обязательствам этим имуществом, может от своего ' ||
|
'или оперативном управлении обособленное имущество, отвечает по своим обязательствам этим имуществом, может от своего ' ||
|
||||||
'имени приобретать и осуществлять имущественные и личные неимущественные права, отвечать по своим обязанностям.<br>' ||
|
'имени приобретать и осуществлять имущественные и личные неимущественные права, отвечать по своим обязанностям.<br>' ||
|
||||||
'<b style="color:green">Физическое лицо</b> - субъект правовых отношений, представляющий собой одного человека.');
|
'<b style="color:green">Физическое лицо</b> - субъект правовых отношений, представляющий собой одного человека.');
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SFULLNAME',
|
SNAME => 'SFULLNAME',
|
||||||
SCAPTION => 'Полное наименование',
|
SCAPTION => 'Полное наименование',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SAGNIDNUMB',
|
SNAME => 'SAGNIDNUMB',
|
||||||
SCAPTION => 'ИНН',
|
SCAPTION => 'ИНН',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
||||||
/* Обходим данные */
|
/* Обходим данные */
|
||||||
begin
|
begin
|
||||||
/* Добавляем подсказку совместимости */
|
/* Добавляем подсказку совместимости */
|
||||||
@ -362,14 +362,17 @@ create or replace package body PKG_P8PANELS_SAMPLES as
|
|||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and AG.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT) %ORDER_BY%) D) F');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and AG.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT) %ORDER_BY%) D) F');
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where F.NROW between :NROW_FROM and :NROW_TO');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where F.NROW between :NROW_FROM and :NROW_TO');
|
||||||
/* Учтём сортировки */
|
/* Учтём сортировки */
|
||||||
PKG_P8PANELS_VISUAL.TORDERS_SET_QUERY(RDATA_GRID => RDG, RORDERS => RO, SPATTERN => '%ORDER_BY%', CSQL => CSQL);
|
PKG_P8PANELS_VISUAL.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG,
|
||||||
|
RORDERS => RO,
|
||||||
|
SPATTERN => '%ORDER_BY%',
|
||||||
|
CSQL => CSQL);
|
||||||
/* Учтём фильтры */
|
/* Учтём фильтры */
|
||||||
PKG_P8PANELS_VISUAL.TFILTERS_SET_QUERY(NIDENT => NIDENT,
|
PKG_P8PANELS_VISUAL.TDG_FILTERS_SET_QUERY(NIDENT => NIDENT,
|
||||||
NCOMPANY => NCOMPANY,
|
NCOMPANY => NCOMPANY,
|
||||||
SUNIT => 'AGNLIST',
|
SUNIT => 'AGNLIST',
|
||||||
SPROCEDURE => 'P_AGNLIST_BASE_COND',
|
SPROCEDURE => 'P_AGNLIST_BASE_COND',
|
||||||
RDATA_GRID => RDG,
|
RDATA_GRID => RDG,
|
||||||
RFILTERS => RF);
|
RFILTERS => RF);
|
||||||
/* Разбираем его */
|
/* Разбираем его */
|
||||||
ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT');
|
ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT');
|
||||||
PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL);
|
PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL);
|
||||||
@ -382,7 +385,7 @@ create or replace package body PKG_P8PANELS_SAMPLES as
|
|||||||
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 2);
|
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 2);
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 3);
|
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 3);
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 4);
|
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 4);
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 5);
|
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 5);
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 6);
|
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 6);
|
||||||
/* Делаем выборку */
|
/* Делаем выборку */
|
||||||
if (PKG_SQL_DML.EXECUTE(ICURSOR => ICURSOR) = 0) then
|
if (PKG_SQL_DML.EXECUTE(ICURSOR => ICURSOR) = 0) then
|
||||||
@ -397,29 +400,38 @@ create or replace package body PKG_P8PANELS_SAMPLES as
|
|||||||
if (NAGNTYPE = 0) then
|
if (NAGNTYPE = 0) then
|
||||||
SGROUP := 'JUR';
|
SGROUP := 'JUR';
|
||||||
SAGNINFO := SAGNNAME || ', ЮЛ';
|
SAGNINFO := SAGNNAME || ', ЮЛ';
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_GROUP(RDATA_GRID => RDG,
|
||||||
SNAME => SGROUP,
|
SNAME => SGROUP,
|
||||||
SCAPTION => 'Юридические лица',
|
SCAPTION => 'Юридические лица',
|
||||||
BEXPANDABLE => true,
|
BEXPANDABLE => true,
|
||||||
BEXPANDED => false);
|
BEXPANDED => false);
|
||||||
else
|
else
|
||||||
SGROUP := 'PERS';
|
SGROUP := 'PERS';
|
||||||
SAGNINFO := SAGNNAME || ', ФЛ';
|
SAGNINFO := SAGNNAME || ', ФЛ';
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_GROUP(RDATA_GRID => RDG,
|
||||||
SNAME => SGROUP,
|
SNAME => SGROUP,
|
||||||
SCAPTION => 'Физические лица',
|
SCAPTION => 'Физические лица',
|
||||||
BEXPANDABLE => true,
|
BEXPANDABLE => true,
|
||||||
BEXPANDED => false);
|
BEXPANDED => false);
|
||||||
end if;
|
end if;
|
||||||
RDG_ROW := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SGROUP);
|
RDG_ROW := PKG_P8PANELS_VISUAL.TDG_ROW_MAKE(SGROUP => SGROUP);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SAGNABBR', ICURSOR => ICURSOR, NPOSITION => 1);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNINFO', SVALUE => SAGNINFO);
|
SNAME => 'SAGNABBR',
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNNAME', SVALUE => SAGNNAME);
|
ICURSOR => ICURSOR,
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NAGNTYPE', NVALUE => NAGNTYPE);
|
NPOSITION => 1);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SFULLNAME', ICURSOR => ICURSOR, NPOSITION => 4);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNINFO', SVALUE => SAGNINFO);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SAGNIDNUMB', ICURSOR => ICURSOR, NPOSITION => 5);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNNAME', SVALUE => SAGNNAME);
|
||||||
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NAGNTYPE', NVALUE => NAGNTYPE);
|
||||||
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
|
||||||
|
SNAME => 'SFULLNAME',
|
||||||
|
ICURSOR => ICURSOR,
|
||||||
|
NPOSITION => 4);
|
||||||
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
|
||||||
|
SNAME => 'SAGNIDNUMB',
|
||||||
|
ICURSOR => ICURSOR,
|
||||||
|
NPOSITION => 5);
|
||||||
/* Добавляем строку в таблицу */
|
/* Добавляем строку в таблицу */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
|
PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
|
||||||
end loop;
|
end loop;
|
||||||
/* Освобождаем курсор */
|
/* Освобождаем курсор */
|
||||||
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
|
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
|
||||||
@ -429,7 +441,7 @@ create or replace package body PKG_P8PANELS_SAMPLES as
|
|||||||
raise;
|
raise;
|
||||||
end;
|
end;
|
||||||
/* Сериализуем описание */
|
/* Сериализуем описание */
|
||||||
COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF);
|
COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF);
|
||||||
end DATA_GRID;
|
end DATA_GRID;
|
||||||
|
|
||||||
/* График */
|
/* График */
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user