Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor project activity components #936

Draft
wants to merge 12 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
href:
link_to(
@activity[:project].puid,
namespace_project_path(@activity[:group], @activity[:project]),
namespace_project_path(@activity[:group], @activity[:project].project),
class: "text-slate-800 dark:text-slate-300 font-medium hover:underline",
),
old_namespace: @activity[:old_namespace],
Expand Down
2 changes: 1 addition & 1 deletion app/components/activities/group_activity_component.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ def initialize(activity: nil)
end

def project_link
@activity[:group] && @activity[:project] && !@activity[:project].namespace.nil?
@activity[:group] && @activity[:project]
end

def group_link
Expand Down
20 changes: 19 additions & 1 deletion app/components/activities/list_item_component.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,25 @@
<% if activity[:type] == 'Namespace' && activity[:key].include?('group') %>
<%= render Activities::GroupActivityComponent.new(activity: activity) %>
<% elsif activity[:type] == 'Namespace' && activity[:key].include?('project_namespace') %>
<%= render Activities::ProjectActivityComponent.new(activity: activity) %>
<% if metadata_template_action %>
<%= render Activities::Projects::MetadataTemplateActivityComponent.new(
activity: activity,
) %>
<% elsif sample_action %>
<%= render Activities::Projects::SampleActivityComponent.new(activity: activity) %>
<% elsif sample_transfer_action %>
<%= render Activities::Projects::SampleTransferActivityComponent.new(
activity: activity,
) %>
<% elsif sample_clone_action %>
<%= render Activities::Projects::SampleCloneActivityComponent.new(
activity: activity,
) %>
<% elsif project_namespace_transfer_action %>
<%= render Activities::Projects::TransferActivityComponent.new(activity: activity) %>
<% else %>
<%= render Activities::Projects::BaseActivityComponent.new(activity: activity) %>
<% end %>
<% elsif activity[:type] == 'WorkflowExecution' %>
<%= render Activities::WorkflowExecutionActivityComponent.new(activity: activity) %>
<% elsif activity[:type] == 'Member' %>
Expand Down
21 changes: 21 additions & 0 deletions app/components/activities/list_item_component.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,26 @@ class ListItemComponent < Component
def initialize(activity: nil)
@activity = activity
end

def metadata_template_action
%w[metadata_template_create metadata_template_destroy metadata_template_update].include?(@activity[:action])
end

def project_namespace_transfer_action
%w[project_namespace_transfer].include?(@activity[:action])
end

def sample_clone_action
%w[sample_clone].include?(@activity[:action])
end

def sample_action
%w[sample_create sample_update attachment_create attachment_destroy
metadata_update sample_destroy sample_destroy_multiple].include?(@activity[:action])
end

def sample_transfer_action
%w[sample_transfer].include?(@activity[:action])
end
end
end
60 changes: 0 additions & 60 deletions app/components/activities/project_activity_component.html.erb

This file was deleted.

30 changes: 0 additions & 30 deletions app/components/activities/project_activity_component.rb

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<%= t("#{@activity[:key]}", user: @activity[:user], name: @activity[:name]) %>
14 changes: 14 additions & 0 deletions app/components/activities/projects/base_activity_component.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# frozen_string_literal: true

module Activities
module Projects
# Base Component for rendering an activity of type Namespace for Projects
class BaseActivityComponent < Component
include PathHelper

def initialize(activity: nil)
@activity = activity
end
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<% if destroy_template %>
<%= t(
"#{@activity[:key]}",
user: @activity[:user],
template_name: @activity[:template_name],
) %>
<% else %>
<% if template_exists %>
<%= t(
"#{@activity[:key]}",
user: @activity[:user],
href:
link_to(
@activity[:template_name],
namespace_project_metadata_templates_path(
@activity[:current_project].parent,
@activity[:current_project].project,
@activity[:template_id],
),
class: "text-slate-800 dark:text-slate-300 font-medium hover:underline",
),
) %>
<% else %>
<%= t("#{@activity[:key]}", user: @activity[:user], href: @activity[:template_name]) %>
<% end %>
<% end %>
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# frozen_string_literal: true

module Activities
module Projects
# Component for rendering a metadata template activity for projects
class MetadataTemplateActivityComponent < BaseActivityComponent
def destroy_template
@activity[:action] == 'metadata_template_destroy'
end

def template_exists
return false if @activity[:template].nil?

!@activity[:template].deleted?
end
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<% if sample_destroy_multiple_action %>
<%= t(
"#{@activity[:key]}",
user: @activity[:user],
name: @activity[:name],
deleted_count: @activity[:deleted_count],
) %>
<% else %>
<% if sample_exists(@activity[:sample]) %>
<% url =
namespace_project_sample_path(
@activity[:current_project].parent,
@activity[:current_project].project,
id: @activity[:sample_id],
) %>
<%= t(
"#{@activity[:key]}",
user: @activity[:user],
href:
link_to(
@activity[:sample_puid],
path_with_params(url, { tab: samples_tab }),
class: "text-slate-800 dark:text-slate-300 font-medium hover:underline",
),
) %>
<% else %>
<%= t("#{@activity[:key]}", user: @activity[:user], href: @activity[:sample_puid]) %>
<% end %>
<% end %>
22 changes: 22 additions & 0 deletions app/components/activities/projects/sample_activity_component.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# frozen_string_literal: true

module Activities
module Projects
# Component for rendering an project sample activity
class SampleActivityComponent < BaseActivityComponent
def sample_destroy_multiple_action
@activity[:action] == 'sample_destroy_multiple'
end

def sample_exists(sample)
return false if sample.nil?

!sample.deleted?
end

def samples_tab
@activity[:action] == 'metadata_update' ? 'metadata' : ''
end
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<% namespace =
(
if @activity[:source_project].present?
@activity[:source_project]
else
@activity[:target_project]
end
) %>
<% if project_exists(namespace) %>
<%= t(
"#{@activity[:key]}",
user: @activity[:user],
href:
link_to(
namespace_puid(namespace),
namespace_project_samples_path(namespace.parent, namespace.project),
class: "text-slate-800 dark:text-slate-300 font-medium hover:underline",
),
cloned_samples_count: @activity[:cloned_samples_ids]&.size,
cloned_samples_ids: @activity[:cloned_samples_ids],
cloned_samples_puids: @activity[:cloned_samples_puids],
) %>
<% else %>
<%= t(
"#{@activity[:key]}",
user: @activity[:user],
cloned_samples_count: @activity[:cloned_samples_ids]&.size,
href: namespace_puid(namespace),
) %>
<% end %>
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# frozen_string_literal: true

module Activities
module Projects
# Component for rendering project sample clone activity
class SampleCloneActivityComponent < BaseActivityComponent
def namespace_puid(namespace)
return namespace.puid unless namespace.nil?
return @activity[:target_project_puid] if @activity[:target_project_puid]

@activity[:source_project_puid]
end

def project_exists(namespace)
return false if namespace.nil?

!namespace.deleted? && !namespace.project.deleted?
end
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<% namespace =
(
if @activity[:source_project].present?
@activity[:source_project]
else
@activity[:target_project]
end
) %>
<% if project_exists(namespace) %>
<%= t(
"#{@activity[:key]}",
user: @activity[:user],
href:
link_to(
namespace_puid(namespace),
namespace_project_samples_path(namespace.parent, namespace.project),
class: "text-slate-800 dark:text-slate-300 font-medium hover:underline",
),
transferred_samples_count: @activity[:transferred_samples_ids]&.size,
transferred_samples_ids: @activity[:transferred_samples_ids],
transferred_samples_puids: @activity[:transferred_samples_puids],
) %>
<% else %>
<%= t(
"#{@activity[:key]}",
user: @activity[:user],
transferred_samples_count: @activity[:transferred_samples_ids]&.size,
href: namespace_puid(namespace),
) %>
<% end %>
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# frozen_string_literal: true

module Activities
module Projects
# Component for rendering project sample transfer activity
class SampleTransferActivityComponent < BaseActivityComponent
def namespace_puid(namespace)
return namespace.puid unless namespace.nil?
return @activity[:target_project_puid] if @activity[:target_project_puid]

@activity[:source_project_puid]
end

def project_exists(namespace)
return false if namespace.nil?

!namespace.deleted? && !namespace.project.deleted?
end
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<%= t(
"#{@activity[:key]}",
user: @activity[:user],
old_namespace: @activity[:old_namespace],
new_namespace: @activity[:new_namespace],
) %>
Loading
Loading