Added javascript code to add a result in the background without refreshing the page

This commit is contained in:
Gregory Ballantine 2024-06-03 13:40:26 -04:00
parent b4bd116367
commit 5919226dec
3 changed files with 38 additions and 14 deletions

View File

@ -1,6 +1,8 @@
$ ->
console.log('ready.')
$('#result-form').on('submit', addResult)
$('#report-benchmarks').on('change', ->
url = '/api/benchmark/' + $('#report-benchmarks').val() + '/tests'
$.get(url, (data) ->
@ -17,3 +19,18 @@ addOption = (test) ->
.attr('value', test.id)
.text(test.title)
)
addResult = (e) ->
e.preventDefault() # prevent browser from traveling to another page
$.post('/result/add', {
redirect: false
result_test: $('#result_test').val()
result_component: $('#result_component').val()
result_benchmark: $('#result_benchmark').val()
result_avg: $('#result_avg').val()
result_min: $('#result_min').val()
result_max: $('#result_max').val()
}, (data) ->
console.log(data)
)

View File

@ -24,14 +24,21 @@ class ResultController extends Controller {
$result->save();
// redirect the user back to the home page
$routeContext = RouteContext::fromRequest($request);
$routeParser = $routeContext->getRouteParser();
return $response
->withHeader('Location', $routeParser->urlFor('test.view', [
'test_id' => $result->test_id
]))
->withStatus(302);
if (!isset($params['redirect']) || $params['redirect'])
// redirect the user back to the home page
$routeContext = RouteContext::fromRequest($request);
$routeParser = $routeContext->getRouteParser();
return $response
->withHeader('Location', $routeParser->urlFor('test.view', [
'test_id' => $result->test_id
]))
->withStatus(302);
} else {
$payload = json_encode('Success!');
$response->getBody()->write($payload);
return $response
->withHeader('Content-Type', 'application/json');
}
}
}

View File

@ -17,7 +17,7 @@
<form id="result-form" class="u-full-width" action="{{ url_for('result.add') }}" method="POST">
<div class="row">
<div class="four columns">
<select class="u-full-width" name="result_benchmark">
<select id="result_benchmark" class="u-full-width" name="result_benchmark">
{% for b in test.benchmarks %}
<option value="{{ b.id }}">{{ b.name }}</option>
{% endfor %}
@ -25,13 +25,13 @@
</div>
<div class="two columns">
<input type="number" step="0.01" name="result_avg" placeholder="0.0">
<input id="result_avg" type="number" step="0.01" name="result_avg" placeholder="0.0">
</div>
<div class="two columns">
<input type="number" step="0.01" name="result_min" placeholder="0.0">
<input id="result_min" type="number" step="0.01" name="result_min" placeholder="0.0">
</div>
<div class="two columns">
<input type="number" step="0.01" name="result_max" placeholder="0.0">
<input id="result_max" type="number" step="0.01" name="result_max" placeholder="0.0">
</div>
<div class="two columns">
@ -39,8 +39,8 @@
</div>
</div>
<input type="hidden" name="result_test" value="{{ test.id }}">
<input type="hidden" name="result_component" value="{{ test.component().id }}">
<input id="result_test" type="hidden" name="result_test" value="{{ test.id }}">
<input id="result_component" type="hidden" name="result_component" value="{{ test.component().id }}">
</form>
</div>
</div>