Skip to content

Commit

Permalink
[webui] fixes for the overview page for packages
Browse files Browse the repository at this point in the history
  • Loading branch information
coolo committed Oct 2, 2012
1 parent aea7e01 commit 5ac1610
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 109 deletions.
62 changes: 36 additions & 26 deletions src/webui/app/controllers/package_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class PackageController < ApplicationController
before_filter :require_project, :except => [:rawlog, :submit_request, :devel_project]
before_filter :require_package, :except => [:rawlog, :submit_request, :save_new_link, :save_new, :devel_project ]
# make sure it's after the require_, it requires both
before_filter :load_requests, :except => [:rawlog, :submit_request, :save_new_link, :save_new, :devel_project ]
before_filter :load_requests, :except => [:rawlog, :submit_request, :save_new_link, :save_new, :devel_project, :rpmlint_log ]
before_filter :require_login, :only => [:branch]
prepend_before_filter :lockout_spiders, :only => [:revisions, :dependency, :rdiff, :binary, :binaries, :requests]

Expand All @@ -28,6 +28,8 @@ def show
@revision = params[:rev]
fill_status_cache unless @buildresult.blank?
set_linking_packages
@expand = 1
set_file_details
begin
@current_rev = Package.current_rev(@project.name, @package.name)
#TODO generate file list here:
Expand Down Expand Up @@ -157,25 +159,14 @@ def files
@expand = 1
@expand = begin Integer(params[:expand]) rescue 1 end if params[:expand]
@expand = 0 if @spider_bot
begin
set_file_details
rescue ActiveXML::Transport::Error => e
message, _, _ = ActiveXML::Transport.extract_error_message e
if @expand == 1
@expand = 0
flash[:error] = "Files could not be expanded: " + message
begin
set_file_details
rescue ActiveXML::Transport::Error => e
message, _, _ = ActiveXML::Transport.extract_error_message e
# seems really bad even without expand
flash[:error] = "Files could not be expanded: " + message
redirect_to :action => :show, :project => params[:project], :package => params[:package] and return
end
else
flash[:error] = "No such revision: #{@revision_parameter}"
redirect_to :action => :files, :project => params[:project], :package => params[:package] and return

if set_file_details
unless @forced_unexpand.blank?
flash[:error] = "Files could not be expanded: #{forced_unexpand}"
end
else
flash[:error] = "No such revision: #{@revision_parameter}"
redirect_to :back
end
end

Expand Down Expand Up @@ -282,16 +273,28 @@ def update_parameters
end

def set_file_details
@forced_unexpand ||= ''
if not @revision and not @srcmd5
# on very first page load only
@revision = Package.current_rev(@project.name, @package.name)
end
if @srcmd5
@files = @package.files(@srcmd5, @expand)
else
@files = @package.files(@revision, @expand)

begin
if @srcmd5
@files = @package.files(@srcmd5, @expand)
else
@files = @package.files(@revision, @expand)
end
rescue ActiveXML::Transport::Error => e
if @expand == 1
@forced_unexpand, _, _ = ActiveXML::Transport.extract_error_message e
@expand = 0
return set_file_details
end
@files = []
return false
end

@spec_count = 0
@files.each do |file|
@spec_count += 1 if file[:ext] == "spec"
Expand All @@ -303,11 +306,12 @@ def set_file_details
end
end
end

# check source service state
@services = find_cached(Service, :project => @project, :package => @package )
@serviceerror = nil
@serviceerror = @package.serviceinfo.value(:error) if @package.serviceinfo
return true
end
private :set_file_details

Expand Down Expand Up @@ -1068,10 +1072,15 @@ def rpmlint_result
repos.uniq.each do |repo_name|
@repo_list << [repo_name, valid_xml_id(elide(repo_name, 30))]
end
render :partial => 'rpmlint_result', :locals => {:index => params[:index]}
if @repo_list.empty?
render :partial => 'no_repositories'
else
render :partial => 'rpmlint_result', :locals => {:index => params[:index]}
end
end

def rpmlint_log
required_parameters :project, :package, :repository, :architecture
begin
rpmlint_log = frontend.get_rpmlint_log(params[:project], params[:package], params[:repository], params[:architecture])
res = ''
Expand Down Expand Up @@ -1283,6 +1292,7 @@ def fill_status_cache

def load_requests
return if @spider_bot
return if request.xhr?
cachekey="package_reviews_#{@project.name}_#{@package.name}"
Rails.cache.delete(cachekey) if discard_cache?
# TODO make requests xmlhashs to be cachable
Expand Down
2 changes: 1 addition & 1 deletion src/webui/app/views/package/_buildstatus.html.erb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div id="package_buildstatus">
<% if not @project.has_element?(:repository) %>
<p><i>The project this package belongs to currently has no <%= link_to "build targets", :controller => :project, :action => 'add_repository_from_default_list', :project => @project %> defined. </i></p>
<%= render "no_repositories" %>
<% elsif @buildresult.blank? %>
<p><i>No build result available</i></p>
<% else %>
Expand Down
10 changes: 4 additions & 6 deletions src/webui/app/views/package/_files_view.html.erb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<% unless @files.empty? %>
<% unless @files.blank? %>
<table id="files_table">
<thead>
<tr>
Expand Down Expand Up @@ -36,26 +36,24 @@
<% end %>
</tbody>
</table>
<%= javascript_tag do %>
$(document).ready(function() {
<% content_for :ready_function do %>
$('#files_table').dataTable({
'aoColumns': [null, null, null, {'bSortable': false}],
});
});
<% end %>
<% else %>
<p><i>This package has no files yet</i></p>
<% end %>
<% if @package.can_edit?( session[:login] ) %>
<p>
<%= link_to image_tag('page_white_add.png', :alt => "Add", :title => "Add file"),
<%= link_to sprite_tag('page_white_add'),
:action => :add_file, :project => @project, :package => @package %>
<%= link_to 'Add file', :action => :add_file, :project => @project, :package => @package %>
</p>
<% end %>
<% unless @files.empty? or @spider_bot %>
<% unless @files.blank? or @spider_bot %>
<% if @revision && !(@revision == @current_rev)%>
<h3>Revision <%= @revision %> (latest revision is <%= @current_rev %>)</h3>
<% else %>
Expand Down
32 changes: 32 additions & 0 deletions src/webui/app/views/package/_no_repositories.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<div id="package_buildstatus">
<% if not @project.has_element?(:repository) %>
<p><i>The project this package belongs to currently has no <%= link_to "build targets", :controller => :project, :action => 'add_repository_from_default_list', :project => @project %> defined. </i></p>
<% elsif @buildresult.blank? %>
<p><i>No build result available</i></p>
<% else %>

<table class="repostatus">
<% @buildresult.each do |r,archs|
index = 0
archs.each do |a|
-%>
<tr>
<% if index == 0 %>
<td class="nowrap" title="<%= r %>" rowspan="<%= archs.length %>">
<%= link_to(elide(r, 26), {:action => :binaries, :controller => :package, :project => @project, :package => @package, :repository => r}, {:title => "Binaries for #{r}"}) %>
</td>
<% index += 1 -%>
<% end # if -%>
<td class="arch">
<div class="nowrap" style="margin: 0 0.5ex">
<%= repo_status_icon @repostatushash[r][a] %> <%= a %>
</div>
</td>
<%= arch_repo_table_cell r, a, @package.name %>
</tr>
<% end # all archs -%>
<% end # all builds -%>
</table>
<% end # if -%>
</div>
87 changes: 11 additions & 76 deletions src/webui/app/views/package/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,15 @@
<% if @linkinfo %>
<% linked_project, linked_package = @linkinfo.project, @linkinfo.package %>
<li>
<%= image_tag 'package_link.png' %> Links to
<%= sprite_tag 'package_link' %> Links to
<%= render :partial => 'shared/project_or_package_link', :locals => {:project => linked_project, :package => linked_package, :short => true} %>
</li>
<% if @linkinfo.value :error %>
<li><%= image_tag 'exclamation.png' %> Link has errors: <i><%= @linkinfo.error %></i></li>
<li><%= sprite_tag 'exclamation' %> Link has errors: <i><%= @linkinfo.error %></i></li>
<% else %>
<%#TODO: Only display if there is really a diff: %>
<li>
<%= image_tag 'information.png' %>
<%= sprite_tag 'information' %>
Could have <%= link_to_if !Project.is_remote?(linked_project), 'a link diff', :action => :rdiff, :oproject => linked_project, :opackage => linked_package, :project => @project, :package => @package, :rev => @revision %>
</li>
<% end%>
Expand All @@ -83,21 +83,21 @@
<% if session[:login] %>
<% if @current_rev %>
<li>
<%= link_to(image_tag('arrow_branch.png', :title => 'Branch package'), {:action => :branch_dialog, :project => @project, :package => @package}, :remote => true) %>
<%= link_to(sprite_tag('arrow_branch'), {:action => :branch_dialog, :project => @project, :package => @package}, :remote => true) %>
<%= link_to('Branch package', {:action => :branch_dialog, :project => @project, :package => @package}, :remote => true) %>
</li>
<li>
<%= link_to(image_tag('package_go.png', :title => 'Submit package'), {:action => :submit_request_dialog, :project => @project, :package => @package}, :remote => true) %>
<%= link_to(sprite_tag('package_go'), {:action => :submit_request_dialog, :project => @project, :package => @package}, :remote => true) %>
<%= link_to('Submit package', {:action => :submit_request_dialog, :project => @project, :package => @package}, :remote => true) %>
</li>
<% end %>
<% if @package.can_edit?(session[:login]) %>
<li>
<%= link_to image_tag('package_edit.png', :title => "Edit description"), :action => 'edit', :project => @project, :package => @package, :spec_count => @spec_count -%>
<%= link_to sprite_tag('package_edit'), :action => 'edit', :project => @project, :package => @package, :spec_count => @spec_count -%>
<%= link_to "Edit description", { :action => 'edit', :project => @project, :package => @package, :spec_count => @spec_count }, id: 'edit-description' -%>
</li>
<li>
<%= link_to(image_tag('package_delete.png', :title => 'Delete package'), {:action => :delete_dialog, :package => @package, :project => @project}, :remote => true) %>
<%= link_to(sprite_tag('package_delete'), {:action => :delete_dialog, :package => @package, :project => @project}, :remote => true) %>
<%= link_to('Delete package', {:action => :delete_dialog, :package => @package, :project => @project}, :remote => true, id: 'delete-package') %>
</li>
<% else %>
Expand All @@ -124,79 +124,14 @@
</div>

<div class="grid_10 alpha box box-shadow">
<h2 class="box-header">Sources <% if @revision && @revision != @current_rev %>(Revision <%= @revision %>)<% end %></h2>
<%= render :partial => 'commit_item', :locals => {:rev => @current_rev } %>
<% if @files && @files.length > 0 %>
<table id="files_table">
<thead>
<tr>
<th>Filename</th>
<th>Size</th>
<th>Changed</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<% @files.each do |file| %>
<tr>
<td>
<%= link_to_if(file[:viewable], nbsp(file[:name]), :action => :view_file, :project => @project, :package => @package, :file => file[:name], :rev => file[:srcmd5], :expand => @expand) %>
<% if @link && @link.has_add_patch?(file[:name]) %>
(Added Patch)
<% elsif @link && @link.has_patch?(file[:name]) %>
(Global Patch)
<% end %>
</td>
<td><%= human_readable_fsize(file[:size]) %></td>
<td><%= fuzzy_time_string(Time.at(file[:mtime].to_i).to_s) %></td>
<td>
<%# limit download for anonymous user to avoid getting killed by crawlers %>
<% if @user or file[:size].to_i < ( 4 * 1024 * 1024 ) %>
<%= link_to image_tag('page_white_get.png', :alt => "Download", :title => "Download File"), file_url(@project, @package, file[:name], file[:srcmd5]) %>
<% end %>
<% if @package.can_edit?( session[:login] ) %>
<%= link_to image_tag('page_white_delete.png', :alt => "Remove", :title => "Remove File"), {:action => :remove_file, :project => @project,
:package => @package, :filename => file[:name]},
{:confirm => "Really remove file '#{file[:name]}'?", :method => :post }%>
<% end %>
</td>
</tr>
<% end %>
</tbody>
</table>
<% else %>
<p><i>This package has no files yet</i></p>
<h2 class="box-header">Sources</h2>
<% unless @forced_unexpand.blank? %>
<i>Sources could not be expanded: <%= @forced_unexpand %></i>
<% end %>
<div class="clearfix"></div><%# TODO: Not nice, dataTables should clear %>
<p>
<% if @linkinfo && @revision_parameter.nil? %>
<%= image_tag('ajax-loader.gif', :id => 'spinner_files', :class => 'hidden') %>
<span style="font-size: small; font-weight: normal">
<% if @expand && @expand.to_s == "1" %>
<%= link_to '(show unmerged sources)', :project => @project.name, :package => @package.name, :action => :files, :rev => @revision_parameter, :expand => "0" %>
<% else %>
<%= link_to '(show merged sources derived from linked package)', :project => @project.name, :package => @package.name, :action => :files, :rev => @revision_parameter, :expand => "1" %>
<% end %>
</span>
<% end %>
<% if @package.can_edit?( session[:login] ) %>
<%= link_to image_tag('page_white_add.png', :title => "Add file"), :action => :add_file, :project => @project, :package => @package %>
<%= link_to 'Add file', :action => :add_file, :project => @project, :package => @package %>
<% end %>
</p>
<%= render :partial => 'files_view' %>
</div>

<div class="grid_6 omega box box-shadow">
<%= render :partial => 'shared/buildresult_box', :locals => {:project => @project.value('name'), :package => @package.value('name')} %>
</div>

<% if @files && @files.length > 0 %>
<%= javascript_tag do %>
$(document).ready(function() {
$('#files_table').dataTable({
'aoColumns': [null, null, null, {'bSortable': false}]
});
});
<% end %>
<% end %>

0 comments on commit 5ac1610

Please sign in to comment.