Skip to content
Snippets Groups Projects
Commit 11db7d01 authored by Callum Inglis's avatar Callum Inglis
Browse files

Brace Yourselves, dotnet upgrade incoming

parent e0cceee4
No related branches found
No related tags found
1 merge request!2Api authentication
@page "/graph"
@using Public_API.Shared.Models
@inject HttpClient http
<h3>Graph</h3>
<!-- TODO : List of sensors here-->
<label for="sensor">Sensor: </label>
@if (sensors == null)
{
<p><em>Loading...</em></p>
}
else
{
<select name="sensor" @onchange="@OnSensorSelectChange">
<option disabled>Select...</option>
@foreach (Sensor s in sensors)
{
<option value="@s.sensorID">@s.friendlyName</option>
}
</select>
}
<!-- TODO : Show data for each sensor here -->
@if (targetSensor != null) {
<h3>Sensor Selected: @targetSensor.friendlyName</h3>
<!-- TODO Graphs here! -->
}
@code {
private Sensor[] sensors;
private Sensor targetSensor;
protected override async Task OnInitializedAsync()
{
sensors = await http.GetFromJsonAsync<Sensor[]>("api/GetSensorList");
}
public async Task OnSensorSelectChange(ChangeEventArgs e)
{
targetSensor = await http.GetFromJsonAsync<Sensor>("api/GetSensorByID/" + e.Value.ToString());
}
}
\ No newline at end of file
......@@ -7,6 +7,9 @@ using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Blazorise;
using Blazorise.Bootstrap;
using Blazorise.Icons.FontAwesome;
namespace Public_API.Client
{
......@@ -15,6 +18,19 @@ namespace Public_API.Client
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.Services
.AddBlazorise(options =>
{
options.ChangeTextOnKeyPress = true;
})
.AddBootstrapProviders()
.AddFontAwesomeIcons();
builder.Services.AddSingleton(new HttpClient
{
BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)
});
builder.RootComponents.Add<App>("app");
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
......
......@@ -12,7 +12,7 @@
<span class="oi oi-home" aria-hidden="true"></span> Home
</NavLink>
</li>
<li class="nav-item px-3">
@* <li class="nav-item px-3">
<NavLink class="nav-link" href="counter">
<span class="oi oi-plus" aria-hidden="true"></span> Counter
</NavLink>
......@@ -21,12 +21,17 @@
<NavLink class="nav-link" href="fetchdata">
<span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data
</NavLink>
</li>
</li>*@
<li class="nav-item px-3">
<NavLink class="nav-link" href="latestdata">
<span class="oi oi-list-rich" aria-hidden="true"></span> Latest Data
</NavLink>
</li>
<li class="nav-item px-3">
<NavLink class="nav-link" href="graph">
<span class="oi oi-list-rich" aria-hidden="true"></span> Graphs
</NavLink>
</li>
</ul>
</div>
......
......@@ -6,4 +6,4 @@
@using Microsoft.AspNetCore.Components.WebAssembly.Http
@using Microsoft.JSInterop
@using Public_API.Client
@using Public_API.Client.Shared
@using Public_API.Client.Shared
\ No newline at end of file
......@@ -6,6 +6,10 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>Public API</title>
<base href="/" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.12.0/css/all.css">
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
<link href="css/app.css" rel="stylesheet" />
</head>
......@@ -13,6 +17,10 @@
<body>
<app>Loading...</app>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.min.js" integrity="sha384-+YQ4JLhjyBLPDQt//I+STsc9iw4uQqACwlvpslubQzn4u2UU2UFM80nGisd026JF" crossorigin="anonymous"></script>
<div id="blazor-error-ui">
An unhandled error has occurred.
<a href="" class="reload">Reload</a>
......
// Form Submit Post AJAX
$(function () {
$('#submit').on('click', function (evt) {
evt.preventDefault();
$.post('', $('form').serialize(), function () {
alert('Posted using jQuery');
});
});
});
\ No newline at end of file
......@@ -17,13 +17,19 @@ namespace Public_API.Server.Controllers
public class APIController : ControllerBase
{
ApiContext db = new ApiContext();
private ApiContext db = new ApiContext();
public Sensor? getSensorByUID(string sensorUID)
{
return db.Sensor.Where(s => s.sensorUID.Equals(sensorUID)).FirstOrDefault();
}
[HttpGet("GetSensorByID/{sensorID}")]
public Sensor? getSensorByID(int sensorID)
{
return db.Sensor.Where(s => s.sensorID.Equals(sensorID)).FirstOrDefault();
}
// TODO Post
// TODO Auth required
// GET api/sensor/logValue/...
......@@ -68,6 +74,24 @@ namespace Public_API.Server.Controllers
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpGet("LatestData")]
public IEnumerable<vw_SensorData> GetLatestSensorData()
{
return db.vw_SensorData.OrderByDescending(d => d.dateTime).Take(100).ToArray();
}
[HttpGet("GetSensorList")]
public IEnumerable<Sensor> GetSensors()
{
return db.Sensor.OrderBy(d => d.friendlyName).ToArray();
}
/* [HttpPost("G")]
public ActionResult onGraphPost(String sensor)
{
//return new RedirectToPageResult("graph", getSensorByID(sensor));
}*/
// DELETE api/<APIController>/5
......
......@@ -9,16 +9,8 @@ using System.Threading.Tasks;
namespace Public_API.Server.Controllers
{
[ApiController]
[Route("[controller]")]
public class FrontendController : Controller
{
private ApiContext db = new ApiContext();
[HttpGet("LatestData")]
public IEnumerable<vw_SensorData> Get()
{
return db.vw_SensorData.OrderByDescending(d => d.dateTime).Take(100).ToArray();
}
}
[ApiController]
public class FrontendController : ControllerBase
{ }
}
......@@ -7,6 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Blazorise.Bootstrap" Version="0.9.5.4" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="3.2.1" />
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="5.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.20" />
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment