Skip to content

Commit

Permalink
Setup edit template ui
Browse files Browse the repository at this point in the history
  • Loading branch information
deepsidhu85 committed Feb 4, 2025
1 parent 4a2a70e commit bfad392
Show file tree
Hide file tree
Showing 8 changed files with 156 additions and 5 deletions.
21 changes: 18 additions & 3 deletions app/controllers/concerns/metadata_template_actions.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ module MetadataTemplateActions # rubocop:disable Metrics/ModuleLength
included do
before_action proc { namespace }
before_action proc { metadata_template }, only: %i[destroy edit show update]
before_action proc { metadata_template_fields }, only: %i[edit update]
end

def index
Expand Down Expand Up @@ -79,7 +80,7 @@ def destroy
end
end

def update
def update # rubocop:disable Metrics/MethodLength
@updated = MetadataTemplates::UpdateService.new(current_user, @metadata_template, metadata_template_params).execute

respond_to do |format|
Expand All @@ -89,9 +90,14 @@ def update
template_name: @metadata_template.name))
end
else
msg = if @metadata_template.errors.any?
@metadata_template.errors.full_messages.to_sentence
else
I18n.t('concerns.metadata_template_actions.update.error',
template_name: @metadata_template.name)
end
format.turbo_stream do
render_error(I18n.t('concerns.metadata_template_actions.update.error',
template_name: @metadata_template.name))
render_error(msg)
end
end
end
Expand All @@ -113,6 +119,15 @@ def metadata_template
@metadata_template = MetadataTemplate.find_by(id: params[:id], namespace: @namespace)
end

def metadata_template_fields
@current_template_fields = if params.key?(:metadata_template) && metadata_template_params.key?(:fields)
metadata_template_params[:fields]
else
@metadata_template.fields
end
@available_metadata_fields = @namespace.metadata_fields.sort_by(&:downcase) - @current_template_fields
end

def render_success(message)
render status: :ok, locals: {
type: 'success',
Expand Down
3 changes: 2 additions & 1 deletion app/controllers/groups/metadata_templates_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ class MetadataTemplatesController < Groups::ApplicationController
private

def metadata_template_params
params.require(:metadata_template).permit(:name, :description, fields: [])
defaults = { fields: [] }
params.require(:metadata_template).permit(:name, :description, fields: []).reverse_merge(defaults)
end

protected
Expand Down
3 changes: 2 additions & 1 deletion app/controllers/projects/metadata_templates_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ class MetadataTemplatesController < Projects::ApplicationController
private

def metadata_template_params
params.require(:metadata_template).permit(:name, fields: [])
defaults = { fields: [] }
params.require(:metadata_template).permit(:name, :description, fields: []).reverse_merge(defaults)
end

protected
Expand Down
10 changes: 10 additions & 0 deletions app/views/groups/metadata_templates/edit.turbo_stream.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<%= turbo_stream.update "metadata_template_modal",
partial: "shared/metadata_templates/edit_template_dialog",
locals: {
open: true,
update_path:
group_metadata_template_path(
@namespace,
@metadata_template,
),
} %>
20 changes: 20 additions & 0 deletions app/views/groups/metadata_templates/update.turbo_stream.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<%= turbo_stream.update "metadata_template_modal",
partial: "shared/metadata_templates/edit_template_dialog",
locals: {
open: @metadata_template.errors.any? ? true : false,
update_path:
group_metadata_template_path(
@namespace,
@metadata_template,
),
} %>

<% if !@metadata_template.errors.any? %>
<%= turbo_stream.append "flashes" do %>
<%= viral_flash(type:, data: message) %>
<% end %>

<% else %>
<%= turbo_stream.update "metadata_template_error_alert",
viral_alert(type:, message:, classes: "mb-4") %>
<% end %>
11 changes: 11 additions & 0 deletions app/views/projects/metadata_templates/edit.turbo_stream.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<%= turbo_stream.update "metadata_template_modal",
partial: "shared/metadata_templates/edit_template_dialog",
locals: {
open: true,
update_path:
namespace_project_metadata_template_path(
@namespace.parent,
@namespace.project,
@metadata_template,
),
} %>
21 changes: 21 additions & 0 deletions app/views/projects/metadata_templates/update.turbo_stream.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<%= turbo_stream.update "metadata_template_modal",
partial: "shared/metadata_templates/edit_template_dialog",
locals: {
open: @metadata_template.errors.any? ? true : false,
update_path:
namespace_project_metadata_template_path(
@namespace.parent,
@namespace.project,
@metadata_template,
),
} %>

<% if !@metadata_template.errors.any? %>
<%= turbo_stream.append "flashes" do %>
<%= viral_flash(type:, data: message) %>
<% end %>

<% else %>
<%= turbo_stream.update "metadata_template_error_alert",
viral_alert(type:, message:, classes: "mb-4") %>
<% end %>
72 changes: 72 additions & 0 deletions app/views/shared/metadata_templates/_edit_template_dialog.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
<%= viral_dialog(open: open, size: :large) do |dialog| %>
<%= dialog.with_header(title: "Edit Template #{@metadata_template.name}") %>
<%= dialog.with_section do %>
<%= turbo_frame_tag "metadata_template_error_alert" %>
<%= turbo_frame_tag "metadata_template_dialog_content" do %>
<div
data-controller="viral--sortable-lists--two-lists-selection"
data-viral--sortable-lists--two-lists-selection-selected-list-value="selected"
data-viral--sortable-lists--two-lists-selection-available-list-value="available"
data-viral--sortable-lists--two-lists-selection-field-name-value="metadata_template[fields][]"
class="font-normal text-slate-500 dark:text-slate-400"
>
<div class="grid gap-4">
<%= viral_sortable_lists(
title: t("metadata_templates.new_template_dialog.metadata"),
description: t("metadata_templates.new_template_dialog.description")
) do |sortable_lists| %>
<%= sortable_lists.with_list(
id: "available",
title: t("metadata_templates.new_template_dialog.available"),
list_items: @available_metadata_fields,
group: "metadata_selection",
container_classes: "block mb-1 pr-2 text-sm font-medium",
list_classes: "overflow-y-auto max-w-[356px] min-w-[356px] w-full",
) %>
<%= sortable_lists.with_list(
id: "selected",
title: t("metadata_templates.new_template_dialog.selected"),
list_items: @current_template_fields,
group: "metadata_selection",
container_classes: "block mb-1 text-sm font-medium",
list_classes: "overflow-y-auto max-w-[356px] min-w-[356px] w-full",
) %>
<% end %>
<%= form_for(@metadata_template, url: update_path, method: :patch
) do |form| %>
<div class="grid gap-4">
<div class="form-field mt-2">
<%= form.label :name %>
<%= form.text_field :name,
class: "form-control",
required: true,
value: @metadata_template.name %>
</div>
<div class="form-field mt-2">
<%= form.label :description %>
<%= form.text_area :description,
class: "form-control",
value: @metadata_template.description %>
</div>
<div
class="hidden"
data-viral--sortable-lists--two-lists-selection-target="field"
></div>
<div>
<%= form.submit "Update",
data: {
turbo_frame: "_top",
action:
"click->viral--sortable-lists--two-lists-selection#constructParams",
"viral--sortable-lists--two-lists-selection-target": "submitBtn",
},
class: "button button--state-primary button--size-default",
disabled: true %>
</div>
</div>
<% end %>
</div>
</div>
<% end %>
<% end %>
<% end %>

0 comments on commit bfad392

Please sign in to comment.