Add deleted repositories to report

This commit is contained in:
Urban Rotnik 2020-05-20 14:14:47 +02:00
parent 2b493ce6f6
commit 359517eb17
5 changed files with 64 additions and 36 deletions

View file

@ -226,6 +226,16 @@ class MyModule < ApplicationRecord
(live_repositories + selected_snapshots).sort_by { |r| r.name.downcase }
end
def active_snapshot_or_live(repository_id)
r = RepositoryBase.find repository_id
if r.is_a?(Repository) # Selected snapshot or live
selected_snapshot(repository_id) || assigned_repositories&.where(id: repository_id)&.first
else # snapshot for deleted Repository
repository_snapshots.order(updated_at: :desc).first
end
end
def selected_snapshot(repository_id)
repository_snapshots.where(parent_id: repository_id).selected.first
end

View file

@ -15,6 +15,15 @@ class RepositorySnapshot < RepositoryBase
scope :selected, -> { where(selected: true) }
scope :with_deleted_parent_by_team, lambda { |team|
joins(my_module: { experiment: :project })
.where('projects.team_id = ?', team.id)
.left_outer_joins(:original_repository)
.where(original_repositories_repositories: { id: nil })
.select('DISTINCT ON ("repositories"."parent_id") "repositories".*')
.order(:parent_id, updated_at: :desc)
}
def default_columns_count
Constants::REPOSITORY_SNAPSHOT_TABLE_DEFAULT_STATE['length']
end

View file

@ -1,44 +1,47 @@
<% if my_module.blank? and @my_module.present? then my_module = @my_module end %>
<% repository ||= my_module.selected_snapshot(element_id) || Repository.find(element_id) %>
<% repository ||= my_module.active_snapshot_or_live(element_id) || Repository.find_by(id: element_id) %>
<% if order.blank? and @order.present? then order = @order end %>
<% timestamp = Time.current + 1.year - 1.days %>
<% rows_json = my_module.repository_json_hot(repository, order) %>
<div class="report-element report-module-repository-element" data-sort-hot="1" data-ts="<%= timestamp.to_i %>" data-type="my_module_repository" data-id='{ "my_module_id": <%= my_module.id %>, "repository_id": <%= repository.id %> }' data-scroll-id="<%= "#{my_module.id}_#{repository.id}" %>" data-order="<%= order == :asc ? "asc" : "desc" %>" data-name="<%= repository.name %>" data-icon-class="fas fa-list-alt">
<div class="report-element-header">
<div class="row">
<div class="pull-left repository-icon">
<i class="fas fa-list-alt"></i>
</div>
<div class="pull-left repository-name">
<%=t "projects.reports.elements.module_repository.name", repository: repository.name, my_module: my_module.name %>
</div>
<% if defined? export_all and export_all %>
<div class="pull-left table-name">
<a href="<%= path %>">
<em><%=t "projects.reports.elements.module_repository.table_name",
name: filename %></em>
</a>
<% if repository.present? %>
<% rows_json = my_module.repository_json_hot(repository, order) %>
<div class="report-element report-module-repository-element" data-sort-hot="1" data-ts="<%= timestamp.to_i %>" data-type="my_module_repository" data-id='{ "my_module_id": <%= my_module.id %>, "repository_id": <%= repository.id %> }' data-scroll-id="<%= "#{my_module.id}_#{repository.id}" %>" data-order="<%= order == :asc ? "asc" : "desc" %>" data-name="<%= repository.name %>" data-icon-class="fas fa-list-alt">
<div class="report-element-header">
<div class="row">
<div class="pull-left repository-icon">
<i class="fas fa-list-alt"></i>
</div>
<div class="pull-left repository-name">
<%=t "projects.reports.elements.module_repository.name", repository: repository.name, my_module: my_module.name %>
<i><%= t('projects.reports.index.deleted') if repository.is_a?(RepositorySnapshot) && !repository.original_repository %></i>
</div>
<% if defined? export_all and export_all %>
<div class="pull-left table-name">
<a href="<%= path %>">
<em><%=t "projects.reports.elements.module_repository.table_name",
name: filename %></em>
</a>
</div>
<% end %>
<div class="pull-right controls">
<%= render partial: "reports/elements/element_controls.html.erb", locals: { show_sort: true } %>
</div>
<% end %>
<div class="pull-right controls">
<%= render partial: "reports/elements/element_controls.html.erb", locals: { show_sort: true } %>
</div>
</div>
</div>
<div class="report-element-body">
<% if rows_json[:data].count > 0 %>
<input type="hidden" class="hot-table-contents hot-samples" value='<%= rows_json.to_json.force_encoding(Encoding::UTF_8) %>' />
<div class="hot-table-container"></div>
<table class="report-common-table-format"></table>
<% else %>
<div class="row">
<div class="col-xs-12">
<em><%=t "projects.reports.elements.module_repository.no_items" %></em>
<div class="report-element-body">
<% if rows_json[:data].count > 0 %>
<input type="hidden" class="hot-table-contents hot-samples" value='<%= rows_json.to_json.force_encoding(Encoding::UTF_8) %>' />
<div class="hot-table-container"></div>
<table class="report-common-table-format"></table>
<% else %>
<div class="row">
<div class="col-xs-12">
<em><%=t "projects.reports.elements.module_repository.no_items" %></em>
</div>
</div>
</div>
<% end %>
<% end %>
</div>
<div class="report-element-children">
<%= children if (defined? children and children.present?) %>
</div>
</div>
<div class="report-element-children">
<%= children if (defined? children and children.present?) %>
</div>
</div>
<% end %>

View file

@ -74,6 +74,11 @@
<%= form.check_box "module_repository_#{repository.id}", label: repository.name.capitalize, data: { id: repository.id } %>
</li>
<% end %>
<% RepositorySnapshot.with_deleted_parent_by_team(@project.team).each do |repository| %>
<li>
<%= form.check_box "module_repository_#{repository.id}", label: repository.name.capitalize + " #{t('projects.reports.index.deleted')}", data: { id: repository.id } %>
</li>
<% end %>
</ul>
</li>
</ul>

View file

@ -379,6 +379,7 @@ en:
new: "New report"
edit: "Edit"
delete: "Delete"
deleted: "(Deleted)"
thead_project_name: "Project name"
thead_name: "Report name"
thead_created_by: "Created by"