Compare commits

..

6 Commits

Author SHA1 Message Date
55e4f397f8 Fixed the test edit view
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2025-07-26 11:37:43 -04:00
49d1276031 Fixed puma config for new Puma versions 2025-07-26 11:32:32 -04:00
bc70fb8dd0 Added config/puma.rb for production deployment
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2025-07-26 11:16:07 -04:00
0231ebad2d Made some more style changes
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2025-07-26 01:08:35 -04:00
541b5236f0 Finished transition to Bootstrap 5
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2025-07-26 00:55:52 -04:00
6215cecb53 Cleaned up app version output
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2025-07-25 17:48:21 -04:00
20 changed files with 221 additions and 105 deletions

View File

@ -24,7 +24,7 @@ fetchTestBenchmarkResults = (testId, benchmarkId) ->
tableRow = $("#results-table tr[data-benchmark-id=#{benchmarkId}]")
tableRow.append('<td>' + benchmarkData.name + '</td>')
tableRow.append('<td><a href="/benchmark/' + benchmarkData.id + '">' + benchmarkData.name + '</a></td>')
tableRow.append('<td>' + benchmarkData.scoring + '</td>')
tableRow.append('<td>' + resultData.length + '</td>')

View File

@ -7,7 +7,11 @@ $primary-color-highlight: color.adjust($primary-color, $lightness: -10%)
body
background: rgb(240, 235, 248)
table
border: 1px solid #666
#wrapper
background: white
padding: 1.5rem 2rem
border: 1px solid #bbb
border-radius: 8px

9
config/puma.rb Normal file
View File

@ -0,0 +1,9 @@
app_dir = File.expand_path("..", __dir__)
directory app_dir
environment 'production'
bind 'tcp://0.0.0.0:9292'
workers 2
threads 1, 5

View File

@ -8,7 +8,7 @@ module Helpers
end
def app_version()
return `git describe --tags`
`git describe --tags`.strip
end
def date_format(date)

View File

@ -3,6 +3,7 @@
# Benchmark - database model for PC benchmarks
class Benchmark < Sequel::Model
many_to_many :tests
one_to_many :results
end

View File

@ -5,6 +5,6 @@ class Test < Sequel::Model
one_to_many :result
many_to_one :hardware
many_to_many :benchmark
many_to_many :benchmarks
end

View File

@ -15,6 +15,7 @@ class GameData < Sinatra::Base
get '/test/add' do
hardware = Hardware.order(:name).all()
benchmarks = Benchmark.order(:name).all()
erb :'test/add', locals: {
title: 'Add Test',
hardware: hardware,
@ -46,23 +47,28 @@ class GameData < Sinatra::Base
}
end
get '/test/:hardware_id/edit' do
hardware = Hardware.where(id: params[:hardware_id]).first()
get '/test/:test_id/edit' do
tst = Test.where(id: params[:test_id]).first()
hardware = Hardware.order(:name).all()
benchmarks = Benchmark.order(:name).all()
erb :'test/edit', locals: {
title: "Editing: #{hardware.name}",
hardware: hardware
title: "Editing: #{tst.name}",
test: tst,
hardware: hardware,
benchmarks: benchmarks
}
end
post '/test/:hardware_id/edit' do
hardware = Hardware.where(id: params[:hardware_id]).first()
post '/test/:test_id/edit' do
tst = Test.where(id: params[:test_id]).first()
hardware.update(
name: params[:hardware_name],
type: params[:hardware_type]
tst.update(
name: params[:test_name],
type: params[:test_type]
)
redirect "/hardware/#{hardware.id}"
redirect "/test/#{tst.id}"
end
end

View File

@ -30,7 +30,11 @@
</div>
</div>
<input class="btn btn-primary" type="submit" value="Create Benchmark">
<div class="row">
<div class="col-12">
<input class="btn btn-primary w-100" type="submit" value="Create Benchmark">
</div>
</div>
</form>
</div>

View File

@ -30,7 +30,11 @@
</div>
</div>
<input class="btn btn-primary" type="submit" value="Submit Changes">
<div class="row">
<div class="col-12">
<input class="btn btn-primary w-100" type="submit" value="Submit Changes">
</div>
</div>
</form>
</div>

View File

@ -16,3 +16,34 @@
<p><%= benchmark.description %></p>
</div>
</div>
<hr>
<div class="row">
<div class="col-12">
<h3 class="mb-3">Tests using this benchmark:</h3>
<% if benchmark.tests.length > 0 %>
<table class="table table-hover table-responsive">
<thead class="table-light">
<tr>
<th>Test title</th>
<th>Benchmarks</th>
<th>Last updated</th>
</tr>
</thead>
<tbody>
<% benchmark.tests.each do |t| %>
<tr>
<td><a href="/test/<%= t.id %>"><%= t.name %></a></td>
<td><%= t.benchmarks.length %></td>
<td><%= t.updated_at %></td>
</tr>
<% end %>
</tbody>
</table>
<% else %>
<p>There are no tests associated with this benchmark.</p>
<% end %>
</div>
</div>

View File

@ -22,7 +22,11 @@
</div>
</div>
<input class="btn btn-primary" type="submit" value="Create Hardware">
<div class="row">
<div class="col-12">
<input class="btn btn-primary w-100" type="submit" value="Create Hardware">
</div>
</div>
</form>
</div>

View File

@ -22,7 +22,11 @@
</div>
</div>
<input class="btn btn-primary" type="submit" value="Create Hardware">
<div class="row">
<div class="col-12">
<input class="btn btn-primary w-100" type="submit" value="Submit Changes">
</div>
</div>
</form>
</div>

View File

@ -11,3 +11,34 @@
Hardware type: <%= hardware.type %>
</div>
</div>
<hr>
<div class="row">
<div class="col-12">
<h3 class="mb-3">Tests using this benchmark:</h3>
<% if hardware.tests.length > 0 %>
<table class="table table-hover table-responsive">
<thead class="table-light">
<tr>
<th>Test title</th>
<th>Benchmarks</th>
<th>Last updated</th>
</tr>
</thead>
<tbody>
<% hardware.tests.each do |t| %>
<tr>
<td><a href="/test/<%= t.id %>"><%= t.name %></a></td>
<td><%= t.benchmarks.length %></td>
<td><%= t.updated_at %></td>
</tr>
<% end %>
</tbody>
</table>
<% else %>
<p>There are no tests associated with this benchmark.</p>
<% end %>
</div>
</div>

View File

@ -1,12 +1,12 @@
<div class="row">
<% if tests.length > 0 %>
<div class="twelve columns">
<div class="12-col mb-3">
<h2>Latest benchmark results:</h2>
</div>
<div class="twelve columns">
<table>
<thead>
<div class="12-col">
<table class="table table-hover table-responsive">
<thead class="table-light">
<tr>
<th>Test name</th>
<th># Benchmarks</th>
@ -17,7 +17,7 @@
<% tests.each do |t| %>
<tr>
<td><a href="/test/<%= t.id %>"><%= t.name %></a></td>
<td><%= t.benchmark.length %></td>
<td><%= t.benchmarks.length %></td>
<td><%= t.updated_at %></td>
</tr>
<% end %>
@ -25,7 +25,7 @@
</table>
</div>
<% else %>
<div class="twelve columns">
<div class="12-col">
<p>I'm sorry, there don't appear to be any benchmark results logged yet. Check again later!</p>
</div>
<% end %>

View File

@ -1,4 +1,4 @@
<div id="main-nav" class="navbar navbar-expand-md bg-body-secondary mb-3">
<div id="main-nav" class="navbar navbar-expand-md bg-dark border-bottom border-body mb-3" data-bs-theme="dark">
<div class="container-fluid">
<a class="navbar-brand mb-0 h1" href="#">Game Data</a>

View File

@ -1,30 +1,36 @@
<div class="row">
<form class="col-12" action="/reports" method="post">
<div class="grid-x grid-margin-x">
<select class="col-12 col-md-6 form-select" id="report_type" name="report_type" disabled>
<div class="row mb-3">
<div class="col-12 col-md-6">
<select id="report_type" class="form-select" name="report_type" disabled>
<option value="benchmark">Benchmark</option>
<option value="test">Test</option>
</select>
</div>
<select class="col-12 col-md-6 form-select" id="report_choice" name="report_choice">
<div class="col-12 col-md-6">
<select id="report_choice" class="form-select" name="report_choice">
<% benchmarks.each do |b| %>
<option value="<%= b.id %>"><%= b.name %></option>
<% end %>
</select>
</div>
</div>
<div class="grid-x grid-margin-x">
<select class="col-12 form-select" id="report_compare" name="report_compare[]" multiple>
<div class="col-12 mb-3">
<select id="report_compare" class="col-12 form-select" name="report_compare[]" multiple>
<% tests.each do |t| %>
<option value="<%= t.id %>"><%= t.name %></option>
<% end %>
</select>
</div>
<div class="col-12 mb-3">
<input type="submit" class="btn btn-primary" id="generate_button" value="Generate">
<a href="#" class="button" id="download_button" disabled>Download</a>
<a href="#" class="btn btn-primary" id="download_button" disabled>Download</a>
</div>
<div class="grid-x grid-margin-x">
<div class="col-12">
<canvas id="chart_canvas" width="100%" height="25"></canvas>
</div>
</form>

View File

@ -7,13 +7,13 @@
<div class="row">
<form class="col-12" action="/test/add" method="post">
<div class="row mb-3">
<div class="col-12 col-md-6 mb-3">
<div class="row mb-0 mb-md-3">
<div class="col-12 col-md-6 mb-3 mb-md-0">
<label for="test_name">Test name</label>
<input id="test_name" class="form-control" type="text" name="test_name" placeholder="My hardware test (01/99)">
</div>
<div class="col-12 col-md-6 mb-3">
<div class="col-12 col-md-6 mb-3 mb-md-0">
<label for="test_hardware">Hardware to test</label>
<select id="test_hardware" class="form-select" name="test_hardware">
<% for h in hardware %>
@ -21,8 +21,10 @@
<% end %>
</select>
</div>
</div>
<div class="col-12 col-md-4 mb-3">
<div class="row mb-0 mb-md-3">
<div class="col-12 col-md-4 mb-3 mb-md-0">
<label for="test_benchmarks">Benchmarks</label>
<select id="test_benchmarks" class="form-select" name="test_benchmarks[]" multiple>
<% for b in benchmarks %>
@ -31,14 +33,15 @@
</select>
</div>
<div class="col-12 col-md-8 mb-3">
<div class="col-12 col-md-8 mb-3 mb-md-0">
<label for="test_description">Test description</label>
<textarea id="test_description" class="form-control" name="test_description" placeholder="This is my test for a hardware..."></textarea>
</div>
</div>
<div class="row">
<div class="col-12">
<input class="btn btn-primary" type="submit" value="Create Test">
<input class="btn btn-primary w-100" type="submit" value="Create Test">
</div>
</div>
</form>

View File

@ -1,32 +1,49 @@
<div class="grid-x grid-margin-x">
<div class="cell small-12">
<h1>Editing: <%= hardware.name %></h1>
<div class="row mb-3">
<div class="col-12">
<h1>Editing: <%= test.name %></h1>
</div>
</div>
<div class="grid-x grid-margin-x">
<div class="row">
<form class="cell small-12" action="/hardware/<%= hardware.id %>/edit" method="post">
<div class="grid-x grid-padding-x">
<div class="cell medium-9">
<label>
Hardware name
<input type="text" name="hardware_name" placeholder="Example hardware" value="<%= hardware.name %>">
</label>
<form class="col-12" action="/test/<%= test.id %>/edit" method="post">
<div class="row mb-0 mb-md-3">
<div class="col-12 col-md-6 mb-3 mb-md-0">
<label for="test_name">Test name</label>
<input id="test_name" class="form-control" type="text" name="test_name" placeholder="My hardware test (01/99)" value="<%= test.name %>">
</div>
<div class="cell medium-3">
<label>
Type
<select name="hardware_type">
<option value="gpu" <% if hardware.type == 'gpu' %>selected<% end %>>Graphics card</option>
<option value="cpu" <% if hardware.type == 'cpu' %>selected<% end %>>Processor</option>
<div class="col-12 col-md-6 mb-3 mb-md-0">
<label for="test_hardware">Hardware to test</label>
<select id="test_hardware" class="form-select" name="test_hardware">
<% for h in hardware %>
<option value="<%= h.id %>" <% if h.id == test.hardware.id %>selected<% end %>><%= h.name %></option>
<% end %>
</select>
</label>
</div>
</div>
<input type="submit" class="button" value="Submit">
<div class="row mb-0 mb-md-3">
<div class="col-12 col-md-4 mb-3 mb-md-0">
<label for="test_benchmarks">Benchmarks</label>
<select id="test_benchmarks" class="form-select" name="test_benchmarks[]" multiple>
<% for b in benchmarks %>
<option value="<%= b.id %>"><%= b.name %></option>
<% end %>
</select>
</div>
<div class="col-12 col-md-8 mb-3 mb-md-0">
<label for="test_description">Test description</label>
<textarea id="test_description" class="form-control" name="test_description" placeholder="This is my test for a hardware..."><%= test.description %></textarea>
</div>
</div>
<div class="row">
<div class="col-12">
<input class="btn btn-primary w-100" type="submit" value="Create Test">
</div>
</div>
</form>
</div>

View File

@ -26,7 +26,7 @@
<% tests.each do |t| %>
<tr>
<td><a href="/test/<%= t.id %>"><%= t.name %></a></td>
<td><%= t.benchmark.length %></td>
<td><%= t.benchmarks.length %></td>
<td><%= date_format(t.created_at) %></td>
<td><%= date_format(t.updated_at) %></td>
</tr>

View File

@ -1,64 +1,56 @@
<div class="grid-x grid-margin-x">
<div class="cell small-12">
<div class="row">
<div class="col-12">
<h1><%= test.name %></h1>
</div>
<div class="cell small-12">
<div class="col-12">
<p><a href="/test/<%= test.id %>/edit">Edit</a></p>
</div>
<div class="cell small-12">
Hardware tested: <%= test.hardware.name %>
<div class="col-12">
<p>Hardware tested: <%= test.hardware.name %></p>
</div>
<div class="cell small-12">
<div class="col-12">
<p><%= test.description %></p>
</div>
</div>
<hr>
<div class="grix-x grix-margin-x">
<div class="cell small-12">
<form class="u-full-width" action="/result/add" method="post">
<div class="row">
<div class="col-12">
<form action="/result/add" method="post">
<input type="hidden" name="result_test" value="<%= test.id %>">
<input type="hidden" name="result_referrer" value="test">
<div class="grid-x grid-margin-x">
<div class="cell medium-5">
<label for="result_benchmark">
Add benchmark result:
<select class="u-full-width" id="result_benchmark" name="result_benchmark">
<% test.benchmark.each do |b| %>
<div class="row">
<div class="col-12 col-md-5 mb-3 mb-md-0">
<label for="result_benchmark">Add benchmark result:</label>
<select class="form-select" id="result_benchmark" name="result_benchmark">
<% test.benchmarks.each do |b| %>
<option value="<%= b.id %>"><%= b.name %></option>
<% end %>
</select>
</label>
</div>
<div class="cell medium-2">
<label for="result_average">
Average score:
<input type="text" id="result_average" name="result_average" value="">
</label>
<div class="col-4 col-md-2">
<label for="result_average">Average score:</label>
<input id="result_average" class="form-control" type="text" name="result_average" value="">
</div>
<div class="cell medium-2">
<label for="result_minimum">
Minimum score:
<input type="text" id="result_minimum" name="result_minimum" value="">
</label>
<div class="col-4 col-md-2">
<label for="result_minimum">Minimum score:</label>
<input id="result_minimum" class="form-control" type="text" name="result_minimum" value="">
</div>
<div class="cell medium-2">
<label for="result_maximum">
Maximum score:
<input type="text" id="result_maximum" name="result_maximum" value="">
</label>
<div class="col-4 col-md-2 mb-3 mb-md-0">
<label for="result_maximum">Maximum score:</label>
<input id="result_maximum" class="form-control" type="text" name="result_maximum" value="">
</div>
<div class="cell medium-1">
<input type="submit" class="u-full-width button" value="Submit">
<div class="col-12 col-md-1 d-flex align-items-stretch mb-3 mb-md-0">
<input class="btn btn-primary w-100" type="submit" value="Submit">
</div>
</div>
</form>
@ -67,8 +59,8 @@
<h4>Benchmark results for this test:</h4>
<table id="results-table" data-test-id="<%= test.id %>">
<thead>
<table id="results-table" class="table table-hover table-responsive" data-test-id="<%= test.id %>">
<thead class="table-light">
<tr>
<th>Benchmark name</th>
<th>Scoring type</th>
@ -79,7 +71,7 @@
</tr>
</thead>
<tbody>
<% test.benchmark.each do |benchmark| %>
<% test.benchmarks.each do |benchmark| %>
<tr data-benchmark-id="<%= benchmark.id %>"></tr>
<% end %>
</tbody>