Skip to content

Commit

Permalink
Move view code to a helper
Browse files Browse the repository at this point in the history
This also fixes Rubocop offenses in the moved code.
  • Loading branch information
bgeuken committed Dec 6, 2018
1 parent cdc0617 commit 3004f02
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 81 deletions.
81 changes: 81 additions & 0 deletions src/api/app/helpers/webui/projects/status_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
module Webui::Projects::StatusHelper
def parse_status(package)
comments_to_clear = []
outs = []
icon = 'ok'
sortkey = "9-ok-#{package['name']}"

if package['requests_from'].empty?
package['problems'].sort.each do |problem|
if problem == 'different_changes'
age = distance_of_time_in_words_to_now(package['develmtime'].to_i)
outs << link_to("Different changes in devel project (since #{age})",
package_rdiff_path(project: package['develproject'], package: package['develpackage'], oproject: @project.name, opackage: package['name']))
sortkey = "5-changes-#{package['develmtime']}-#{package['name']}"
icon = 'changes'
elsif problem == 'different_sources'
age = distance_of_time_in_words_to_now(package['develmtime'].to_i)
outs << link_to("Different sources in devel project (since #{age})", package_rdiff_path(project: package['develproject'], package: package['develpackage'],
oproject: @project.name, opackage: package['name']))
sortkey = "6-changes-#{package['develmtime']}-#{package['name']}"
icon = 'changes'
elsif problem == 'diff_against_link'
outs << link_to('Linked package is different', package_rdiff_path(oproject: package['lproject'], opackage: package['lpackage'],
project: @project.name, package: package['name']))
sortkey = "7-changes#{package['name']}"
icon = 'changes'
elsif problem.match?(/^error-/)
outs << link_to(c[6..-1], package_show_path(project: package['develproject'], package: package['develpackage']))
sortkey = "1-problem-#{package['name']}"
icon = 'error'
elsif problem == 'currently_declined'
outs << link_to("Current sources were declined: request #{package['currently_declined']}",
request_show_path(number: package['currently_declined']))
sortkey = "2-declines-#{package['name']}"
icon = 'error'
else
outs << link_to(c, package_show_path(project: package['develproject'], package: package['develpackage']))
sortkey = "1-changes-#{package['name']}"
icon = 'error'
end
end
end
package['requests_to'].each do |number|
# rubocop:disable Rails/OutputSafety
outs.unshift("Request #{link_to(number, request_show_path(number: number))} to #{h(package['develproject'])}".html_safe)
# rubocop:enable Rails/OutputSafety
icon = 'changes'
sortkey = "3-request-#{999_999 - number}-#{package['name']}"
end
package['requests_from'].each do |number|
# rubocop:disable Rails/OutputSafety
outs.unshift("Request #{link_to(number, request_show_path(number: number))} to #{h(@project.name)}".html_safe)
# rubocop:enable Rails/OutputSafety
icon = 'changes'
sortkey = "2-drequest-#{999_999 - number}-#{package['name']}"
end
# ignore the upstream version if there are already changes pending
if package['upstream_version'] && sortkey.nil?
if package['upstream_url']
outs << "New upstream version #{link_to(package['upstream_version'], package['upstream_url'])} available"
else
outs << "New upstream version #{package['upstream_version']} available"
end
sortkey = "8-outdated-#{package['name']}"
end
if package['firstfail']
# rubocop:disable Rails/OutputSafety
url = package_live_build_log_path(arch: h(package['failedarch']), repository: h(package['failedrepo']),
project: h(@project.name), package: h(package['name']))
outs.unshift("#{link_to('Fails', url)} since #{distance_of_time_in_words_to_now(package['firstfail'].to_i)}".html_safe)
# rubocop:enable Rails/OutputSafety

icon = 'error'
sortkey = "1-fails-#{Time.now.to_i - package['firstfail']}-#{package['name']}"
elsif package['failedcomment']
comments_to_clear << package['failedcomment']
end

{ summary: outs, sortkey: sortkey, icon_type: icon, comments_to_clear: comments_to_clear }
end
end
93 changes: 12 additions & 81 deletions src/api/app/views/webui2/webui/project/status.html.haml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
:ruby
@pagetitle = "Status of #{@project}"
parsed_result = {}

.card
= render partial: 'tabs', locals: { project: @project }
Expand All @@ -8,8 +9,6 @@
%h3
= @pagetitle

- comments_to_clear = []

= form_tag(project_status_path, method: :get) do
= hidden_field_tag(:project, @project.name)
= hidden_field_tag(:limit_to_fails, 'false', id: 'fails_hidden')
Expand Down Expand Up @@ -54,83 +53,14 @@
Comments
%tbody
- @packages.each do |package|
:ruby
outs = []
icon = "ok"
sortkey = nil

if package['requests_from'].empty?
package['problems'].sort.each do |c|
if c == 'different_changes'
age = distance_of_time_in_words_to_now(package['develmtime'].to_i)
outs << link_to("Different changes in devel project (since #{age})",
package_rdiff_path(project: package['develproject'], package: package['develpackage'], oproject: @project.name, opackage: package['name']))
sortkey = "5-changes-#{package['develmtime']}-#{package['name']}"
icon = "changes"
elsif c == 'different_sources'
age = distance_of_time_in_words_to_now(package['develmtime'].to_i)
outs << link_to("Different sources in devel project (since #{age})", package_rdiff_path(project: package['develproject'], package: package['develpackage'],
oproject: @project.name, opackage: package['name']))
sortkey = "6-changes-#{package['develmtime']}-" + package['name']
icon = "changes"
elsif c == 'diff_against_link'
outs << link_to("Linked package is different", package_rdiff_path(oproject: package['lproject'], opackage: package['lpackage'],
project: @project.name, package: package['name']))
sortkey = "7-changes" + package['name']
icon = "changes"
elsif c =~ /^error-/
outs << link_to(c[6..-1], package_show_path(project: package['develproject'], package: package['develpackage']))
sortkey = "1-problem-" + package['name']
icon = "error"
elsif c == 'currently_declined'
outs << link_to("Current sources were declined: request #{package['currently_declined']}",
request_show_path(number: package['currently_declined']))
sortkey = "2-declines-" + package['name']
icon = "error"
else
outs << link_to(c, package_show_path(project: package['develproject'], package: package['develpackage']))
sortkey = "1-changes" + package['name']
icon = "error"
end
end
end
package['requests_to'].each do |number|
outs.unshift(("Request %s to %s" % [link_to(number, request_show_path(number: number)), h(package['develproject'])]).html_safe)
icon = "changes"
sortkey = "3-request%06d-%s" % [ 999999 - number, package['name']]
end
package['requests_from'].each do |number|
outs.unshift(("Request %s to %s" % [link_to(number, request_show_path(number: number)), h(@project.name)]).html_safe)
icon = "changes"
sortkey = "2-drequest%06d-%s" % [ 999999 - number, package['name']]
end
# ignore the upstream version if there are already changes pending
if package['upstream_version'] && sortkey.nil?
if package['upstream_url']
outs << "New upstream version " + link_to(package['upstream_version'], package['upstream_url']) + " available"
else
outs << "New upstream version #{package['upstream_version']} available"
end
sortkey = "8-outdated-" + package['name']
end
if package['firstfail']
outs.unshift(link_to("Fails", package_live_build_log_path(arch: h(package['failedarch']), repository: h(package['failedrepo']),
project: h(@project.name), package: h(package['name']))).html_safe +
" since #{distance_of_time_in_words_to_now(package['firstfail'].to_i)}")
icon = "error"
sortkey = '1-fails-%010d-%s' % [ Time.now.to_i - package['firstfail'], package['name'] ]
elsif package['failedcomment'] && User.current.can_modify?(@project.api_obj)
comments_to_clear << package['failedcomment']
end
unless sortkey
sortkey = "9-ok-" + package['name']
end
- parsed_result = parse_status(package)

%tr
%td.nowrap
- if icon == "error"
- case parsed_result[:icon_type]
- when 'error'
%i.fa.fa-exclamation-circle.text-danger{ title: 'Error' }
- elsif icon == "ok"
- when 'ok'
%i.fa.fa-check-circle.text-success{ title: 'Ok' }
- else
%i.fa.fa-info-circle.text-info{ title: 'Info' }
Expand All @@ -140,9 +70,10 @@
- if package['develproject']
= link_to(truncate(package['develproject']), package_show_path(project: package['develproject'], package: package['name']))
%td
%span.d-none= sortkey
- outs.each do |out|
= out
%span.d-none
= parsed_result[:sortkey]
- parsed_result[:summary].each do |summary|
= summary
%br
%td{ data: { package_name: package['name'] } }
= render partial: 'status_comment', locals: { package_name: package['name'], editable: package['firstfail'].present?,
Expand All @@ -151,6 +82,6 @@
- content_for :ready_function do
$('#status-table').dataTable({ 'iDisplayLength': 50, responsive: true, 'columnDefs': [ { 'width': '20%', 'targets': 0 } ] });

- if User.current.can_modify?(@project) && !comments_to_clear.empty?
= link_to("Clear all comments of not failing packages (#{comments_to_clear.join(',')})",
action: :clear_failed_comment, project: @project.name, package: comments_to_clear)
- if User.current.can_modify?(@project) && parsed_result[:comments_to_clear].present?
= link_to("Clear all comments of not failing packages (#{parsed_result[:comments_to_clear].join(',')})",
action: :clear_failed_comment, project: @project.name, package: parsed_result[:comments_to_clear])

0 comments on commit 3004f02

Please sign in to comment.