diff --git a/app/views/gantts/show.html.erb b/app/views/gantts/show.html.erb new file mode 100644 index 0000000..7159d8f --- /dev/null +++ b/app/views/gantts/show.html.erb @@ -0,0 +1,430 @@ +<% @gantt.view = self %> +
<%= l(:notice_gantt_chart_truncated, :max => @gantt.max_rows) %>
+<% end %> + +| + <% + style = "" + style += "position:relative;" + style += "height: #{t_height + 24}px;" + style += "width: #{subject_width + 1}px;" + %> + <%= content_tag(:div, :style => style, :class => "gantt_subjects_container #{'draw_selected_columns' if @query.draw_selected_columns}") do %> + <% + style = "" + style += "width: #{subject_width + 1}px;" + style += "height: #{headers_height}px;" + style += 'background: #eee;' + %> + <%= content_tag(:div, "", :style => style, :class => "gantt_hdr") %> + <% + style = "" + style += "z-index: 1;" + style += "width: #{subject_width + 1}px;" + style += "height: #{t_height}px;" + style += 'overflow: hidden;' + %> + <%= content_tag(:div, "", :style => style, :class => "gantt_hdr") %> + <%= content_tag(:div, :class => "gantt_subjects") do %> + <%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do -%> + <%= hidden_field_tag 'back_url', url_for(:params => request.query_parameters), :id => nil %> + <%= @gantt.subjects.html_safe %> + <% end %> + <% end %> + <% end %> + | +<% + @query.columns.each do |column| + next if Redmine::Helpers::Gantt::UNAVAILABLE_COLUMNS.include?(column.name) + column_name = column.name.to_s.tr('.', '_') +%> ++ <% + style = "position: relative;" + style += "height: #{t_height + 24}px;" + %> + <%= content_tag(:div, :style => style, :class => "gantt_#{column_name}_container gantt_selected_column_container") do %> + <% + style = "height: #{t_height}px;" + style += 'overflow: hidden;' + %> + <%= content_tag(:div, '', :style => style, :class => "gantt_hdr") %> + <% + style = "height: #{headers_height}px;" + style += 'background: #eee;' + %> + <%= content_tag(:div, content_tag(:p, column.caption, :class => 'gantt_hdr_selected_column_name'), :style => style, :class => "gantt_hdr") %> + <%= content_tag(:div, :class => "gantt_#{column_name} gantt_selected_column_content") do %> + <%= @gantt.selected_column_content({:column => column, :top => headers_height + 8, :zoom => zoom, :g_width => g_width}).html_safe %> + <% end %> + <% end %> + | +<% end %> +
+
+<%
+ style = ""
+ style += "width: #{g_width - 1}px;"
+ style += "height: #{headers_height}px;"
+ style += 'background: #eee;'
+%>
+<%= content_tag(:div, ' '.html_safe, :style => style, :class => "gantt_hdr") %>
+
+<% ###### Months headers ###### %>
+<%
+ month_f = @gantt.date_from
+ left = 0
+ height = (show_weeks ? header_height : header_height + g_height)
+%>
+<% @gantt.months.times do %>
+ <%
+ width = (((month_f >> 1) - month_f) * zoom - 1).to_i
+ style = ""
+ style += "left: #{left}px;"
+ style += "width: #{width}px;"
+ style += "height: #{height}px;"
+ %>
+ <%= content_tag(:div, :style => style, :class => "gantt_hdr") do %>
+ <%= link_to "#{month_f.year}-#{month_f.month}",
+ @gantt.params.merge(:year => month_f.year, :month => month_f.month),
+ :title => "#{month_name(month_f.month)} #{month_f.year}" %>
+ <% end %>
+ <%
+ left = left + width + 1
+ month_f = month_f >> 1
+ %>
+<% end %>
+
+<% ###### Weeks headers ###### %>
+<% if show_weeks %>
+ <%
+ left = 0
+ height = (show_days ? header_height - 1 : header_height - 1 + g_height)
+ %>
+ <% if @gantt.date_from.cwday == 1 %>
+ <%
+ # @date_from is monday
+ week_f = @gantt.date_from
+ %>
+ <% else %>
+ <%
+ # find next monday after @date_from
+ week_f = @gantt.date_from + (7 - @gantt.date_from.cwday + 1)
+ width = (7 - @gantt.date_from.cwday + 1) * zoom - 1
+ style = ""
+ style += "left: #{left}px;"
+ style += "top: 19px;"
+ style += "width: #{width}px;"
+ style += "height: #{height}px;"
+ %>
+ <%= content_tag(:div, ' '.html_safe,
+ :style => style, :class => "gantt_hdr") %>
+ <% left = left + width + 1 %>
+ <% end %>
+ <% while week_f <= @gantt.date_to %>
+ <%
+ width = ((week_f + 6 <= @gantt.date_to) ?
+ 7 * zoom - 1 :
+ (@gantt.date_to - week_f + 1) * zoom - 1).to_i
+ style = ""
+ style += "left: #{left}px;"
+ style += "top: 19px;"
+ style += "width: #{width}px;"
+ style += "height: #{height}px;"
+ %>
+ <%= content_tag(:div, :style => style, :class => "gantt_hdr") do %>
+ <%= content_tag(:small) do %>
+ <%= week_f.cweek if width >= 16 %>
+ <% end %>
+ <% end %>
+ <%
+ left = left + width + 1
+ week_f = week_f + 7
+ %>
+ <% end %>
+<% end %>
+
+<% ###### Day numbers headers ###### %>
+<% if show_day_num %>
+ <%
+ left = 0
+ height = g_height + header_height*2 - 1
+ wday = @gantt.date_from.cwday
+ day_num = @gantt.date_from
+ %>
+ <% (@gantt.date_to - @gantt.date_from + 1).to_i.times do %>
+ <%
+ width = zoom - 1
+ style = ""
+ style += "left:#{left}px;"
+ style += "top:37px;"
+ style += "width:#{width}px;"
+ style += "height:#{height}px;"
+ style += "font-size:0.7em;"
+ clss = "gantt_hdr"
+ clss << " nwday" if @gantt.non_working_week_days.include?(wday)
+ %>
+ <%= content_tag(:div, :style => style, :class => clss) do %>
+ <%= day_num.day %>
+ <% end %>
+ <%
+ left = left + width+1
+ day_num = day_num + 1
+ wday = wday + 1
+ wday = 1 if wday > 7
+ %>
+ <% end %>
+<% end %>
+
+<% ###### Days headers ####### %>
+<% if show_days %>
+ <%
+ left = 0
+ height = g_height + header_height - 1
+ top = (show_day_num ? 55 : 37)
+ %>
+ <% (@gantt.date_from..@gantt.date_to).each do |g_date| %>
+ <%
+ width = zoom - 1
+ style = ""
+ style += "left: #{left}px;"
+ style += "top: #{top}px;"
+ style += "width: #{width}px;"
+ style += "height: #{height}px;"
+ style += "font-size:0.7em;"
+ clss = "gantt_hdr"
+ clss << " nwday" if @gantt.non_working_week_days.include?(g_date.cwday)
+ %>
+ <%= content_tag(:div, :style => style, :class => clss) do %>
+ <%= day_letter(g_date.cwday) %>
+ <% end %>
+ <%
+ left = left + width + 1
+ %>
+ <% end %>
+<% end %>
+
+<%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do -%>
+ <%= hidden_field_tag 'back_url', url_for(:params => request.query_parameters), :id => nil %>
+ <%= @gantt.lines.html_safe %>
+<% end %>
+
+<% ###### Today red line (excluded from cache) ###### %>
+<% if User.current.today >= @gantt.date_from and User.current.today <= @gantt.date_to %>
+ <%
+ today_left = (((User.current.today - @gantt.date_from + 1) * zoom).floor() - 1).to_i
+ style = ""
+ style += "position: absolute;"
+ style += "height: #{g_height}px;"
+ style += "top: #{headers_height + 1}px;"
+ style += "left: #{today_left}px;"
+ style += "width:10px;"
+ style += "border-left: 1px dashed red;"
+ %>
+ <%= content_tag(:div, ' '.html_safe, :style => style, :id => 'today_line') %>
+<% end %>
+<%
+ style = ""
+ style += "position: absolute;"
+ style += "height: #{g_height}px;"
+ style += "top: #{headers_height + 1}px;"
+ style += "left: 0px;"
+ style += "width: #{g_width - 1}px;"
+%>
+<%= content_tag(:div, '', :style => style, :id => "gantt_draw_area") %>
+
+ |
+