Suggest closest contestant name when converting a message to completion
This commit is contained in:
parent
2cadc8eca5
commit
1a8ea0afee
1
Gemfile
1
Gemfile
@ -45,6 +45,7 @@ gem "dartsass-rails"
|
||||
gem "bootstrap", "~> 5.3.3"
|
||||
gem "friendly_id", "~> 5.5.0"
|
||||
gem "csv"
|
||||
gem "damerau-levenshtein"
|
||||
|
||||
group :development, :test do
|
||||
# See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
|
||||
|
@ -104,6 +104,7 @@ GEM
|
||||
connection_pool (2.5.3)
|
||||
crass (1.0.6)
|
||||
csv (3.3.5)
|
||||
damerau-levenshtein (1.3.3)
|
||||
dartsass-rails (0.5.1)
|
||||
railties (>= 6.0.0)
|
||||
sass-embedded (~> 1.63)
|
||||
@ -438,6 +439,7 @@ DEPENDENCIES
|
||||
brakeman
|
||||
capybara
|
||||
csv
|
||||
damerau-levenshtein
|
||||
dartsass-rails
|
||||
debug
|
||||
factory_bot_rails
|
||||
|
@ -74,7 +74,6 @@ class MessagesController < ApplicationController
|
||||
@action_name = t("helpers.buttons.back")
|
||||
@action_path = contest_path(@contest)
|
||||
|
||||
@message = Message.find(params[:message_id])
|
||||
@completion = Completion.new()
|
||||
@completion.display_time_from_start = @message.display_time
|
||||
|
||||
@ -96,7 +95,19 @@ class MessagesController < ApplicationController
|
||||
end
|
||||
|
||||
def set_data
|
||||
@contestants = @contest.contestants.order(:name)
|
||||
@message = Message.find(params[:message_id])
|
||||
@puzzles = @contest.puzzles
|
||||
@contestants = @contest.contestants.order(:name)
|
||||
if @contestants.size > 0
|
||||
@closest_contestant = @contestants.first
|
||||
closest_distance = 10000
|
||||
@contestants.each do |contestant|
|
||||
distance = DamerauLevenshtein.distance(@message.author, contestant.name)
|
||||
if distance < closest_distance
|
||||
closest_distance = distance
|
||||
@closest_contestant = contestant
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -22,6 +22,10 @@
|
||||
.form-floating
|
||||
= form.select :contestant_id, @contestants.map { |contestant| [contestant.form_name, contestant.id] }, {}, class: "form-select"
|
||||
= form.label :contestant_id
|
||||
- if @closest_contestant
|
||||
javascript:
|
||||
el = document.querySelector('select[name="completion[contestant_id]"]');
|
||||
el.value = "#{@closest_contestant.id}"
|
||||
- if @puzzles.size > 1
|
||||
.row.mb-3
|
||||
.col
|
||||
|
Loading…
x
Reference in New Issue
Block a user