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 } (live_repositories + selected_snapshots).sort_by { |r| r.name.downcase }
end 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) def selected_snapshot(repository_id)
repository_snapshots.where(parent_id: repository_id).selected.first repository_snapshots.where(parent_id: repository_id).selected.first
end end

View file

@ -15,6 +15,15 @@ class RepositorySnapshot < RepositoryBase
scope :selected, -> { where(selected: true) } 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 def default_columns_count
Constants::REPOSITORY_SNAPSHOT_TABLE_DEFAULT_STATE['length'] Constants::REPOSITORY_SNAPSHOT_TABLE_DEFAULT_STATE['length']
end end

View file

@ -1,44 +1,47 @@
<% if my_module.blank? and @my_module.present? then my_module = @my_module end %> <% 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 %> <% if order.blank? and @order.present? then order = @order end %>
<% timestamp = Time.current + 1.year - 1.days %> <% timestamp = Time.current + 1.year - 1.days %>
<% rows_json = my_module.repository_json_hot(repository, order) %> <% if repository.present? %>
<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"> <% rows_json = my_module.repository_json_hot(repository, order) %>
<div class="report-element-header"> <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="row"> <div class="report-element-header">
<div class="pull-left repository-icon"> <div class="row">
<i class="fas fa-list-alt"></i> <div class="pull-left repository-icon">
</div> <i class="fas fa-list-alt"></i>
<div class="pull-left repository-name"> </div>
<%=t "projects.reports.elements.module_repository.name", repository: repository.name, my_module: my_module.name %> <div class="pull-left repository-name">
</div> <%=t "projects.reports.elements.module_repository.name", repository: repository.name, my_module: my_module.name %>
<% if defined? export_all and export_all %> <i><%= t('projects.reports.index.deleted') if repository.is_a?(RepositorySnapshot) && !repository.original_repository %></i>
<div class="pull-left table-name"> </div>
<a href="<%= path %>"> <% if defined? export_all and export_all %>
<em><%=t "projects.reports.elements.module_repository.table_name", <div class="pull-left table-name">
name: filename %></em> <a href="<%= path %>">
</a> <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> </div>
<% end %>
<div class="pull-right controls">
<%= render partial: "reports/elements/element_controls.html.erb", locals: { show_sort: true } %>
</div> </div>
</div> </div>
</div> <div class="report-element-body">
<div class="report-element-body"> <% if rows_json[:data].count > 0 %>
<% 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) %>' />
<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>
<div class="hot-table-container"></div> <table class="report-common-table-format"></table>
<table class="report-common-table-format"></table> <% else %>
<% else %> <div class="row">
<div class="row"> <div class="col-xs-12">
<div class="col-xs-12"> <em><%=t "projects.reports.elements.module_repository.no_items" %></em>
<em><%=t "projects.reports.elements.module_repository.no_items" %></em> </div>
</div> </div>
</div> <% end %>
<% end %> </div>
<div class="report-element-children">
<%= children if (defined? children and children.present?) %>
</div>
</div> </div>
<div class="report-element-children"> <% end %>
<%= children if (defined? children and children.present?) %>
</div>
</div>

View file

@ -74,6 +74,11 @@
<%= form.check_box "module_repository_#{repository.id}", label: repository.name.capitalize, data: { id: repository.id } %> <%= form.check_box "module_repository_#{repository.id}", label: repository.name.capitalize, data: { id: repository.id } %>
</li> </li>
<% end %> <% 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> </ul>
</li> </li>
</ul> </ul>

View file

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