БД: P8PGantt - управление видимостью атрибута задачи
This commit is contained in:
parent
75f05bfaae
commit
30c75fb079
@ -11,7 +11,9 @@ create table P8PNL_SMPL_GANTT
|
||||
NAME varchar2(200) not null, -- Наименование задачи
|
||||
DATE_FROM date not null, -- Дата начала задачи
|
||||
DATE_TO date not null, -- Дата окончания задачи
|
||||
STATE number(1) not null, -- Состояние задачи (0 - не выполняется, 1 - выполняется)
|
||||
constraint C_P8PNL_SMPL_GANTT_RN_PK primary key (RN),
|
||||
constraint C_P8PNL_SMPL_GANTT_VAL check (TYPE in (0, 1)),
|
||||
constraint C_P8PNL_SMPL_GANTT_TP_VAL check (TYPE in (0, 1)),
|
||||
constraint C_P8PNL_SMPL_GANTT_ST_VAL check (STATE in (0, 1)),
|
||||
constraint C_P8PNL_SMPL_GANTT_UN unique (IDENT, NUMB)
|
||||
);
|
||||
|
@ -456,15 +456,16 @@ create or replace package body PKG_P8PANELS_SAMPLES as
|
||||
SNUMB in varchar2, -- Номер задачи
|
||||
SNAME in varchar2, -- Наименование задачи
|
||||
DDATE_FROM in date, -- Дата начала задачи
|
||||
DDATE_TO in date -- Дата окончания задачи
|
||||
DDATE_TO in date, -- Дата окончания задачи
|
||||
NSTATE in number -- Состояние (0 - не выполняется, 1 - выполняется)
|
||||
)
|
||||
is
|
||||
begin
|
||||
/* Добавим запись */
|
||||
insert into P8PNL_SMPL_GANTT
|
||||
(RN, IDENT, type, NUMB, name, DATE_FROM, DATE_TO)
|
||||
(RN, IDENT, type, NUMB, name, DATE_FROM, DATE_TO, STATE)
|
||||
values
|
||||
(GEN_ID(), NIDENT, NTYPE, SNUMB, SNAME, DDATE_FROM, DDATE_TO);
|
||||
(GEN_ID(), NIDENT, NTYPE, SNUMB, SNAME, DDATE_FROM, DDATE_TO, NSTATE);
|
||||
end GANTT_BASE_INSERT;
|
||||
|
||||
/* Исправление данных в буфере диаграммы Ганта */
|
||||
@ -503,6 +504,10 @@ create or replace package body PKG_P8PANELS_SAMPLES as
|
||||
NYEAR PKG_STD.TNUMBER; -- Текущий год
|
||||
NMONTH PKG_STD.TNUMBER; -- Месяц начала этапа
|
||||
DDATE_FROM PKG_STD.TLDATE; -- Дата начала этапа
|
||||
DDATE_TO PKG_STD.TLDATE; -- Дата окончания этапа
|
||||
DDATE_FROM_J PKG_STD.TLDATE; -- Дата начала работы
|
||||
DDATE_TO_J PKG_STD.TLDATE; -- Дата окончания работы
|
||||
NSTATE PKG_STD.TNUMBER; -- Состояние задачи
|
||||
begin
|
||||
/* Удаляем старые данные из буфера */
|
||||
if (NIDENT is not null) then
|
||||
@ -519,23 +524,41 @@ create or replace package body PKG_P8PANELS_SAMPLES as
|
||||
/* Сформируем период этапа */
|
||||
NMONTH := ST * NSTAGE_LEN - NSTAGE_LEN + 1;
|
||||
DDATE_FROM := TO_DATE('01.' || NMONTH || '.' || TO_CHAR(NYEAR), 'dd.mm.yyyy');
|
||||
DDATE_TO := LAST_DAY(ADD_MONTHS(DDATE_FROM, NSTAGE_LEN) - 1);
|
||||
/* Сформируем значение для атриуба "состояние" этапа */
|
||||
if (TRUNC(sysdate) between TRUNC(DDATE_FROM) and TRUNC(DDATE_TO)) then
|
||||
NSTATE := 1;
|
||||
else
|
||||
NSTATE := 0;
|
||||
end if;
|
||||
/* Добавим его в буфер */
|
||||
GANTT_BASE_INSERT(NIDENT => NIDENT,
|
||||
NTYPE => 0,
|
||||
SNUMB => TO_CHAR(ST),
|
||||
SNAME => 'Этап ' || TO_CHAR(ST),
|
||||
DDATE_FROM => DDATE_FROM,
|
||||
DDATE_TO => LAST_DAY(ADD_MONTHS(DDATE_FROM, NSTAGE_LEN) - 1));
|
||||
DDATE_TO => DDATE_TO,
|
||||
NSTATE => NSTATE);
|
||||
/* Работы */
|
||||
for J in 0 .. NSTAGE_LEN - 1
|
||||
loop
|
||||
/* Сформируем период работы */
|
||||
DDATE_FROM_J := ADD_MONTHS(DDATE_FROM, J);
|
||||
DDATE_TO_J := LAST_DAY(ADD_MONTHS(DDATE_FROM, J + 1) - 1);
|
||||
/* Сформируем значение для атриуба "состояние" работы */
|
||||
if (TRUNC(sysdate) between TRUNC(DDATE_FROM_J) and TRUNC(DDATE_TO_J)) then
|
||||
NSTATE := 1;
|
||||
else
|
||||
NSTATE := 0;
|
||||
end if;
|
||||
/* Добавим в буфер */
|
||||
GANTT_BASE_INSERT(NIDENT => NIDENT,
|
||||
NTYPE => 1,
|
||||
SNUMB => TO_CHAR(ST) || '.' || TO_CHAR(J + 1),
|
||||
SNAME => 'Работа ' || TO_CHAR(J + 1) || ' этапа ' || TO_CHAR(ST),
|
||||
DDATE_FROM => ADD_MONTHS(DDATE_FROM, J),
|
||||
DDATE_TO => LAST_DAY(ADD_MONTHS(DDATE_FROM, J + 1) - 1));
|
||||
DDATE_FROM => DDATE_FROM_J,
|
||||
DDATE_TO => DDATE_TO_J,
|
||||
NSTATE => NSTATE);
|
||||
end loop;
|
||||
end loop;
|
||||
end GANTT_INIT;
|
||||
@ -559,7 +582,11 @@ create or replace package body PKG_P8PANELS_SAMPLES as
|
||||
RG := PKG_P8PANELS_VISUAL.TGANTT_MAKE(STITLE => 'Задачи на ' || TO_CHAR(EXTRACT(year from sysdate)) || ' год',
|
||||
NZOOM => PKG_P8PANELS_VISUAL.NGANTT_ZOOM_MONTH);
|
||||
/* Добавим динамические атрибуты к задачам */
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_ATTR(RGANTT => RG, SNAME => 'type', SCAPTION => 'Тип');
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_ATTR(RGANTT => RG, SNAME => 'type', SCAPTION => 'Тип', BVISIBLE => true);
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_ATTR(RGANTT => RG,
|
||||
SNAME => 'state',
|
||||
SCAPTION => 'Состояние',
|
||||
BVISIBLE => false);
|
||||
/* Добавим описание цветов задач */
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_COLOR(RGANTT => RG,
|
||||
SBG_COLOR => SBG_COLOR_JOB,
|
||||
@ -589,6 +616,7 @@ create or replace package body PKG_P8PANELS_SAMPLES as
|
||||
SNAME => 'type',
|
||||
SVALUE => C.TYPE,
|
||||
BCLEAR => true);
|
||||
PKG_P8PANELS_VISUAL.TGANTT_TASK_ADD_ATTR_VAL(RGANTT => RG, RTASK => RGT, SNAME => 'state', SVALUE => C.STATE);
|
||||
/* Добавляем задачу в диаграмму */
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK(RGANTT => RG, RTASK => RGT);
|
||||
end loop;
|
||||
|
@ -125,7 +125,8 @@ create or replace package PKG_P8PANELS_VISUAL as
|
||||
type TGANTT_TASK_ATTR is record
|
||||
(
|
||||
SNAME PKG_STD.TSTRING, -- Наименование
|
||||
SCAPTION PKG_STD.TSTRING -- Заголовок
|
||||
SCAPTION PKG_STD.TSTRING, -- Заголовок
|
||||
BVISIBLE boolean -- Разрешить отображение
|
||||
);
|
||||
|
||||
/* Типы данных - коллекция описаний атрибутов задачи для диаграммы Ганта */
|
||||
@ -483,6 +484,7 @@ create or replace package PKG_P8PANELS_VISUAL as
|
||||
RGANTT in out nocopy TGANTT, -- Описание диаграммы Ганта
|
||||
SNAME in varchar2, -- Наименование
|
||||
SCAPTION in varchar2, -- Заголовок
|
||||
BVISIBLE boolean := true, -- Разрешить отображение
|
||||
BCLEAR in boolean := false -- Флаг очистки коллекции атрибутов (false - не очищать, true - очистить коллекцию перед добавлением)
|
||||
);
|
||||
|
||||
@ -1897,6 +1899,7 @@ text="Формат data_grid и gant как в chart"
|
||||
RGANTT in out nocopy TGANTT, -- Описание диаграммы Ганта
|
||||
SNAME in varchar2, -- Наименование
|
||||
SCAPTION in varchar2, -- Заголовок
|
||||
BVISIBLE boolean := true, -- Разрешить отображение
|
||||
BCLEAR in boolean := false -- Флаг очистки коллекции атрибутов (false - не очищать, true - очистить коллекцию перед добавлением)
|
||||
)
|
||||
is
|
||||
@ -1917,6 +1920,7 @@ text="Формат data_grid и gant как в chart"
|
||||
RGANTT.RTASK_ATTRS.EXTEND();
|
||||
RGANTT.RTASK_ATTRS(RGANTT.RTASK_ATTRS.LAST).SNAME := SNAME;
|
||||
RGANTT.RTASK_ATTRS(RGANTT.RTASK_ATTRS.LAST).SCAPTION := SCAPTION;
|
||||
RGANTT.RTASK_ATTRS(RGANTT.RTASK_ATTRS.LAST).BVISIBLE := BVISIBLE;
|
||||
end TGANTT_ADD_TASK_ATTR;
|
||||
|
||||
/* Добавление описания цвета задачи диаграммы Ганта */
|
||||
@ -2001,6 +2005,7 @@ text="Формат data_grid и gant как в chart"
|
||||
/* Наполняем его атрибутами */
|
||||
PKG_XFAST.ATTR(SNAME => SRESP_ATTR_NAME, SVALUE => RGANTT.RTASK_ATTRS(I).SNAME);
|
||||
PKG_XFAST.ATTR(SNAME => SRESP_ATTR_CAPTION, SVALUE => RGANTT.RTASK_ATTRS(I).SCAPTION);
|
||||
PKG_XFAST.ATTR(SNAME => SRESP_ATTR_VISIBLE, BVALUE => RGANTT.RTASK_ATTRS(I).BVISIBLE);
|
||||
/* Закрываем динамический атрибут задачи */
|
||||
PKG_XFAST.UP();
|
||||
end loop;
|
||||
|
Loading…
x
Reference in New Issue
Block a user