From 7655b75410e9dcbd65421d57f34878e41db0ca39 Mon Sep 17 00:00:00 2001 From: Gregory Ballantine Date: Wed, 5 Jul 2023 23:39:08 -0400 Subject: [PATCH] Added functionality to add a benchmark result --- db/migrations/0001_add_initial_tables.rb | 1 - src/models/result.rb | 2 +- src/routes/init.rb | 1 + src/routes/result.rb | 36 ++++++++++++++ views/result/add.erb | 60 ++++++++++++++++++++++++ views/result/index.erb | 44 +++++++++++++++++ 6 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 src/routes/result.rb create mode 100644 views/result/add.erb create mode 100644 views/result/index.erb diff --git a/db/migrations/0001_add_initial_tables.rb b/db/migrations/0001_add_initial_tables.rb index d59ad35..dc267f6 100644 --- a/db/migrations/0001_add_initial_tables.rb +++ b/db/migrations/0001_add_initial_tables.rb @@ -20,7 +20,6 @@ Sequel.migration do create_table(:results) do primary_key :id - String :name, null: false String :score, null: false DateTime :created_at, default: Sequel::CURRENT_TIMESTAMP DateTime :updated_at, default: Sequel::CURRENT_TIMESTAMP diff --git a/src/models/result.rb b/src/models/result.rb index ab92683..4acc2f6 100644 --- a/src/models/result.rb +++ b/src/models/result.rb @@ -1,6 +1,6 @@ class Result < Sequel::Model many_to_one :hardware - many_to_one :benchmarks + many_to_one :benchmark end diff --git a/src/routes/init.rb b/src/routes/init.rb index 04b8e8f..f0f96cb 100644 --- a/src/routes/init.rb +++ b/src/routes/init.rb @@ -1,3 +1,4 @@ require_relative 'index' require_relative 'hardware' require_relative 'benchmark' +require_relative 'result' diff --git a/src/routes/result.rb b/src/routes/result.rb new file mode 100644 index 0000000..a9ff1d2 --- /dev/null +++ b/src/routes/result.rb @@ -0,0 +1,36 @@ +class GameData < Sinatra::Base + get '/result' do + results = Result.reverse(:updated_at).limit(10).all() + + erb :'result/index', locals: { + title: 'List of Results', + results: results + } + end + + get '/result/add' do + hardware = Hardware.all() + benchmarks = Benchmark.all() + + erb :'result/add', locals: { + title: 'Add Result', + hardware: hardware, + benchmarks: benchmarks + } + end + post '/result/add' do + benchmark = Benchmark.where(:id => params[:result_benchmark]).first() + formatted_score = params[:result_average] + if benchmark.scoring == 'fps' + formatted_score = params[:result_average] + ':' + params[:result_minimum] + ':' + params[:result_maximum] + end + + result = Result.create( + hardware_id: params[:result_hardware], + benchmark_id: params[:result_benchmark], + score: formatted_score + ) + + redirect "/result" + end +end diff --git a/views/result/add.erb b/views/result/add.erb new file mode 100644 index 0000000..86cba45 --- /dev/null +++ b/views/result/add.erb @@ -0,0 +1,60 @@ +
+
+

Add new result

+
+
+ +
+ +
+
+
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ +
+ +
+ +
+
+ + +
+ +
diff --git a/views/result/index.erb b/views/result/index.erb new file mode 100644 index 0000000..ffc733c --- /dev/null +++ b/views/result/index.erb @@ -0,0 +1,44 @@ +
+
+

List of results

+
+ +
+

+ Add new result +

+
+
+ +
+ <% if results.length > 0 %> +
+ + + + + + + + + + + + <% results.each do |r| %> + + + + + + + + <% end %> + +
HardwareBenchmarkScore (type)Date addedDate modified
<%= r.hardware.name %><%= r.benchmark.name %><%= r.score %> (<%= r.benchmark.scoring %>)<%= date_format(r.created_at) %><%= date_format(r.updated_at) %>
+
+ <% else %> +
+

I'm sorry, there don't appear to be any results added yet. Check again later!

+
+ <% end %> +