powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Диаграмма Ганта и ячейки
4 сообщений из 4, страница 1 из 1
Диаграмма Ганта и ячейки
    #39226168
EugeneYa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть код для Д.Г. И есть вопрос по нему: ячейки задач на диаграмме не совпадают с реальным началом и окончанием. На рисунке нагляднее представлено. Код:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
declare
   c integer := 0;
   d date;
   d2 date;
   ed date;
   d_count pls_integer := 0;
   x integer;
   l_start_cell number;
   l_col_span number;
   l_left_cells integer;
   l_ms varchar2(4000);
   l_proj varchar2(4000);
   l_complete_id number := null;
   l_weeks number := 22;
   l_months number;
   l_color varchar2(30) := null;
   l_title varchar2(4000);
   l_first_month  varchar2(100);
   l_last_month   varchar2(100);
   l_month_span integer;
   l_month_weeks integer;
begin

-- compute start date
d := trunc(sysdate)+(14 * l_weeks);
ed := d + (7 * l_weeks);

-- print headers
l_month_span := 0;
l_month_weeks := 0;
l_last_month := trim(to_char(d+6,'Month'));

sys.htp.prn('<table cellspacing="0" cellpadding="0" class="timelineTable">');

sys.htp.prn('<thead><tr>');
sys.htp.prn('<th></th>');
for i in 1..l_weeks loop
    d2 := d + ((i - 1)*7);
    l_first_month := trim(to_char(d2+6,'Month'));
    if l_first_month != l_last_month then
       htp.prn('<th class="monthLabel" colspan="'||l_month_span||'">'||l_last_month||'</th>');
       l_month_weeks := l_month_weeks + l_month_span;
       l_month_span := 0;
    end if;
    l_month_span := l_month_span + 1;
    l_last_month := l_first_month;
end loop;
if l_month_weeks < l_weeks then
    d2 := d + (7 * l_weeks) + 6;
    htp.prn('<th class="monthLabel" colspan="'||to_char(l_weeks - l_month_weeks)||'">'||
        to_char(d2,'Month')||'</th>');
end if;
sys.htp.prn('</tr>');



sys.htp.prn('<tr>');
sys.htp.prn('<th></th>');
for i in 1..l_weeks loop
    d2 := d + ((i - 1)*7);
    sys.htp.prn('<th class="weekLabel">'||to_char(d2,'DD')||'-'||to_char(d2+6,'DD')||'</th>');
end loop;
sys.htp.prn('</tr></thead><tbody class="hideMe">');


-- print row
for c1 in (
select distinct zadname milestone_name
from zadanie
where (nvl(:P38_NEW,'0') = '0' or zadname = :P38_NEW)
order by 1) loop

c := 0;

for c2 in (
select
   podzadid,
   a.zadname,
   podzadname milestone_name,
   statuszad    milestone_status,
   rukid milestone_owner,
   dnpodzad MILESTONE_START_DATE,
   dopodzad MILESTONE_DATE,
   to_char(dopodzad,'Month') the_month,
   to_char(dopodzad,'YYYY') the_year,
   to_char(dopodzad,'DD') the_day
from podzadachi, zadanie a
where a.zadname = c1.milestone_name and a.zadid = podzadachi.zadid
order by dopodzad
) loop

c := c + 1;
   if c = 1 then
--      sys.htp.prn('<tr>');
      if length(c1.milestone_name) > 50 then
         l_proj := substr(c1.milestone_name,1,50)||'...';
      else
         l_proj := c1.milestone_name;
      end if;
      sys.htp.prn('</tbody><tbody><tr><th><a href="#">'||
         sys.htf.escape_sc(l_proj)||'</a></th>');
   else
      sys.htp.p('<tr><th></th>');
   end if;

  -- compute starting cell
   if c2.MILESTONE_START_DATE <= d then
      l_start_cell := 1;
   else
      l_start_cell := (c2.MILESTONE_START_DATE - d) / 7;
   end if;
   l_start_cell := ceil(l_start_cell);
   
   -- before milestone
   if l_start_cell > 1 then
      l_left_cells := l_start_cell - 1;
      for j in 1..l_left_cells loop
          sys.htp.prn('<td></td>');
      end loop;
   else
      l_left_cells := 0;
   end if;
-- complete milestone length
   if (c2.MILESTONE_DATE - greatest(c2.MILESTONE_START_DATE,d)) < 7 then
      l_col_span := 1;
   else
      l_col_span := (c2.MILESTONE_DATE - greatest(c2.MILESTONE_START_DATE,d)) / 7;
   end if;
   l_col_span := ceil(l_col_span);
   
   l_ms := substr(c2.milestone_name,1,greatest((l_col_span * 15),22));
   if length(l_ms) < length(c2.milestone_name) then
      l_ms := l_ms ||'...';
   end if;
   -- color
   if upper(nvl(c2.milestone_status, 50)) = 50 then
       l_color := 'completedMilestone';
   elsif upper(nvl(c2.milestone_status,75)) = 75 and c2.MILESTONE_DATE >= trunc(sysdate) then
       l_color := '';
   elsif upper(nvl(c2.milestone_status,100)) = 100 and c2.MILESTONE_DATE < trunc(sysdate) then
       l_color := 'lateMilestone';
   else
       l_color := 'brown';
   end if;

l_title :=  trim(to_char(c2.MILESTONE_START_DATE,'DD Month')) ||' - '||
       trim(to_char(c2.MILESTONE_DATE,'DD Month'));
   if c2.milestone_owner is not null then
      l_title := l_title||' - '||sys.htf.escape_sc(c2.milestone_owner);
   end if;
   
   sys.htp.prn('<td colspan="'||l_col_span||'">');
   sys.htp.prn('<a href="#" class="'||l_color||'">');
   sys.htp.prn(sys.htf.escape_sc(l_ms)||'</a></td>');
     
     
   -- fill to right
   x := l_weeks - (l_left_cells + l_col_span);
   if x > 0 then
      for j in 1..x loop
         sys.htp.p('<td></td>');
      end loop;
   end if;
     
   sys.htp.prn('</tr>');
end loop; -- inner loop

sys.htp.prn('</tbody>');

end loop; -- outer loop



-- class values are green red blue brown

-- close table
sys.htp.prn('</table>');

end;


Подскажите, пожалуйста, как можно исправить ситуацию. Заранее спасибо
...
Рейтинг: 0 / 0
Диаграмма Ганта и ячейки
    #39227196
EugeneYa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос решен.
Появился другой: фильтрация по заданиям не получается. Использовался и select list, и lov item, код менялся тоже-без толку. Таблица задания (zadid, zadname), таблица задачи, таблица руководитель.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
for c1 in (
select distinct a.zadname milestone_name
from zadanie a
where (nvl(:P38_NEW,'0') = '0' or a.zadname = :P38_NEW)
order by 1) loop

c := 0;

for c2 in (
select
   podzadid,
   a.zadname,
   podzadname milestone_name,
   statuszad    milestone_status,
   rukid milestone_owner,
   DNPODZAD MILESTONE_START_DATE,
   DOPODZAD MILESTONE_DATE,
   to_char(dopodzad,'Month') the_month,
   to_char(dopodzad,'YYYY') the_year,
   to_char(dopodzad,'DD') the_day
from podzadachi, zadanie a
where a.zadname = c1.milestone_name and a.zadid = podzadachi.zadid
order by dopodzad
) loop


Подскажите, пожалуйста, кто знает-может не вижу чего
...
Рейтинг: 0 / 0
Диаграмма Ганта и ячейки
    #39228040
Фотография Алексей Выхрыстюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EugeneYa,

В сессии не изменяется значения переменной :P38_NEW, при изменении селекта значение должно попадать в сессию через submit.
...
Рейтинг: 0 / 0
Диаграмма Ганта и ячейки
    #39228117
EugeneYa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей Выхрыстюк, большое спасибо, сделала как вы написали и заработало (:
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Диаграмма Ганта и ячейки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]