Can delete stats
This commit is contained in:
parent
781893f12f
commit
7ba4ae2b50
|
@ -18,6 +18,7 @@ class CharacterSheetSectionsController < ApplicationController
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@section = @character.character_sheet_sections.new(character_sheet_section_params)
|
@section = @character.character_sheet_sections.new(character_sheet_section_params)
|
||||||
|
@editable = true
|
||||||
unless @section.save
|
unless @section.save
|
||||||
@parent_section = @section.parent_section
|
@parent_section = @section.parent_section
|
||||||
render :new, status: :unprocessable_entity
|
render :new, status: :unprocessable_entity
|
||||||
|
|
|
@ -15,6 +15,12 @@ class StatsController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
stat = Current.user.stats.find(params[:id])
|
||||||
|
@id = helpers.dom_id(stat)
|
||||||
|
stat.destroy
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def set_character
|
def set_character
|
||||||
@character = @section.character
|
@character = @section.character
|
||||||
|
|
|
@ -5,6 +5,7 @@ class Character < ApplicationRecord
|
||||||
belongs_to :game_system
|
belongs_to :game_system
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
has_many :character_sheet_sections, dependent: :destroy
|
has_many :character_sheet_sections, dependent: :destroy
|
||||||
|
has_many :stats, through: :character_sheet_sections
|
||||||
|
|
||||||
validates :name, presence: true,
|
validates :name, presence: true,
|
||||||
length: { maximum: 200 }
|
length: { maximum: 200 }
|
||||||
|
|
|
@ -9,6 +9,7 @@ class User < ApplicationRecord
|
||||||
has_many :character_sheet_sections, through: :characters
|
has_many :character_sheet_sections, through: :characters
|
||||||
has_many :owned_tables, foreign_key: :owner_id, class_name: "Table"
|
has_many :owned_tables, foreign_key: :owner_id, class_name: "Table"
|
||||||
has_many :players, dependent: :destroy
|
has_many :players, dependent: :destroy
|
||||||
|
has_many :stats, through: :character_sheet_sections
|
||||||
has_many :tables, through: :players
|
has_many :tables, through: :players
|
||||||
has_rich_text :profile
|
has_rich_text :profile
|
||||||
has_one_attached :avatar do |attachable|
|
has_one_attached :avatar do |attachable|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
data: { turbo_stream: true } %>
|
data: { turbo_stream: true } %>
|
||||||
<% if section.present? %>
|
<% if section.present? %>
|
||||||
<%= link_to t(".add_stat"),
|
<%= link_to t(".add_stat"),
|
||||||
new_character_sheet_section_stat_path(section), data: { turbo_stream: true } %>
|
new_character_sheet_section_stat_path(section), data: { turbo_stream: true }, class: "add-stat" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% unless id == "character_sheet_add_section" %>
|
<% unless id == "character_sheet_add_section" %>
|
||||||
<%= link_to t(".delete_section", name: section.name), character_sheet_section_path(section),
|
<%= link_to t(".delete_section", name: section.name), character_sheet_section_path(section),
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
<div class="stat" id="<%= dom_id(stat) %>">
|
<div class="stat" id="<%= dom_id(stat) %>">
|
||||||
|
<% if @editable %>
|
||||||
|
<%= link_to(t(".delete"), stat, data: { turbo_method: :delete, turbo_confirm: t(".confirm_delete", name: stat.name) }) %>
|
||||||
|
<% end %>
|
||||||
<h6><%= stat.name %></h6>
|
<h6><%= stat.name %></h6>
|
||||||
<input type="number" value="<%= stat.value %>" step="1">
|
<input type="number" value="<%= stat.value %>" step="1">
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
<%= turbo_stream.remove @id %>
|
|
@ -133,6 +133,9 @@ en:
|
||||||
log_out: Log out
|
log_out: Log out
|
||||||
success: "You have signed out."
|
success: "You have signed out."
|
||||||
stats:
|
stats:
|
||||||
|
stat:
|
||||||
|
delete: Delete
|
||||||
|
confirm_delete: Are you sure you want to delete %{name}?
|
||||||
new:
|
new:
|
||||||
create_stat: Create stat
|
create_stat: Create stat
|
||||||
table_invite_mailer:
|
table_invite_mailer:
|
||||||
|
|
|
@ -21,6 +21,7 @@ Rails.application.routes.draw do
|
||||||
resources :characters do
|
resources :characters do
|
||||||
resources :character_sheet_sections, only: [ :index, :new, :create ]
|
resources :character_sheet_sections, only: [ :index, :new, :create ]
|
||||||
end
|
end
|
||||||
|
resources :stats, only: [ :destroy ]
|
||||||
resources :table_invites, only: [ :index, :edit, :update ]
|
resources :table_invites, only: [ :index, :edit, :update ]
|
||||||
resources :tables do
|
resources :tables do
|
||||||
resources :table_invites, only: [ :new, :create ]
|
resources :table_invites, only: [ :new, :create ]
|
||||||
|
|
|
@ -17,4 +17,12 @@ class StatsControllerTest < ActionDispatch::IntegrationTest
|
||||||
as: :turbo_stream
|
as: :turbo_stream
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "should delete stat" do
|
||||||
|
sign_in users(:trevor)
|
||||||
|
assert_difference "Stat.count", -1 do
|
||||||
|
delete stat_url(Stat.first), as: :turbo_stream
|
||||||
|
assert_response :success
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -11,6 +11,8 @@ class CharacterSheetTest < ApplicationSystemTestCase
|
||||||
click_on I18n.t("characters.show.sheet")
|
click_on I18n.t("characters.show.sheet")
|
||||||
assert_text character.name
|
assert_text character.name
|
||||||
|
|
||||||
|
click_on I18n.t("character_sheet_sections.index.edit")
|
||||||
|
|
||||||
click_link(I18n.t("character_sheet_sections.index.add_section"))
|
click_link(I18n.t("character_sheet_sections.index.add_section"))
|
||||||
fill_in attr_name(CharacterSheetSection, :name), with: "Test Section"
|
fill_in attr_name(CharacterSheetSection, :name), with: "Test Section"
|
||||||
click_button(I18n.t("character_sheet_sections.new.create_section"))
|
click_button(I18n.t("character_sheet_sections.new.create_section"))
|
||||||
|
@ -19,5 +21,10 @@ class CharacterSheetTest < ApplicationSystemTestCase
|
||||||
click_link(I18n.t("character_sheet_sections.edit_links.delete_section", name: "Test Section"))
|
click_link(I18n.t("character_sheet_sections.edit_links.delete_section", name: "Test Section"))
|
||||||
accept_confirm
|
accept_confirm
|
||||||
assert_no_text "Test Section"
|
assert_no_text "Test Section"
|
||||||
|
|
||||||
|
first(".add-stat").click
|
||||||
|
fill_in attr_name(Stat, :name), with: "Test Stat"
|
||||||
|
click_button I18n.t("stats.new.create_stat")
|
||||||
|
assert_text "Test Stat"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue