parent
556585e848
commit
0cefd047f4
@ -0,0 +1,42 @@ |
||||
"use strict"; |
||||
|
||||
// import CreateElement from 'dom-create-element-query-selector';
|
||||
// We're using the git repo for now until an update is released, and rollup doesn't like that apparently
|
||||
import CreateElement from '../../node_modules/dom-create-element-query-selector/src/index.js'; |
||||
|
||||
import Chart from 'chart.js'; |
||||
|
||||
import GetFromUrl from './Helpers/GetFromUrl.mjs'; |
||||
|
||||
|
||||
class DeviceReadingDisplay { |
||||
get device_id() { return this._device_id; } |
||||
set device_id(value) { |
||||
this._device_id = value; |
||||
this.update_display(); |
||||
} |
||||
|
||||
constructor(in_config, in_device_id) { |
||||
this.setup_display(); |
||||
|
||||
this.config = in_config; |
||||
this._device_id = in_device_id; // We don't want to update until we have everything we need
|
||||
} |
||||
|
||||
setup_display() { |
||||
this.display = CreateElement("div.chart-device-data", |
||||
CreateElement("canvas.canvas-chart"), |
||||
CreateElement("ul.reading-types") |
||||
); |
||||
} |
||||
set_reading_types(new_reading_types, starting_index) { |
||||
this.reading_types = new_reading_types; |
||||
this.selected_reading_type = this.reading_types[starting_index]; |
||||
} |
||||
|
||||
async update_display() { |
||||
let new_data = JSON.parse(await GetFromUrl(`${this.config.api_root}?action=`)) |
||||
} |
||||
} |
||||
|
||||
export default DeviceReadingDisplay; |
@ -0,0 +1,72 @@ |
||||
<?php |
||||
|
||||
namespace AirQuality\Actions; |
||||
|
||||
use \SBRL\TomlConfig; |
||||
use \AirQuality\Repositories\IMeasurementDataRepository; |
||||
use \AirQuality\ApiResponseSender; |
||||
|
||||
use \AirQuality\Validator; |
||||
use \AirQuality\PerfFormatter; |
||||
|
||||
class DeviceDataBounds implements IAction { |
||||
/** @var TomlConfig */ |
||||
private $settings; |
||||
/** @var IMeasurementDataRepository */ |
||||
private $measurement_repo; |
||||
|
||||
/** @var ApiResponseSender */ |
||||
private $sender; |
||||
|
||||
/** @var Validator */ |
||||
private $validator; |
||||
|
||||
public function __construct( |
||||
TomlConfig $in_settings, |
||||
IMeasurementDataRepository $in_measurement_repo, |
||||
ApiResponseSender $in_sender) { |
||||
$this->settings = $in_settings; |
||||
$this->measurement_repo = $in_measurement_repo; |
||||
$this->sender = $in_sender; |
||||
|
||||
$this->validator = new Validator($_GET); |
||||
} |
||||
|
||||
public function handle() : bool { |
||||
global $start_time; |
||||
|
||||
$start_handle = microtime(true); |
||||
|
||||
// 1: Validate params |
||||
$this->validator->is_numberish("device-id"); |
||||
$this->validator->run(); |
||||
|
||||
|
||||
// 2: Pull data from database |
||||
$data = $this->measurement_repo->get_device_reading_bounds( |
||||
intval($_GET["device-id"]) |
||||
); |
||||
|
||||
// 2.5: Validate data from database |
||||
if(empty($data)) { |
||||
http_response_code(404); |
||||
header("content-type: text/plain"); |
||||
header("x-time-taken: " . PerfFormatter::format_perf_data($start_time, $start_handle, null)); |
||||
echo("Error: No data has been recorded from the device id or it doesn't exist."); |
||||
return false; |
||||
} |
||||
|
||||
|
||||
// 3: Serialise data |
||||
$start_encode = microtime(true); |
||||
$response = json_encode($data); |
||||
|
||||
|
||||
// 4: Send response |
||||
header("content-length: " . strlen($response)); |
||||
header("content-type: application/json"); |
||||
header("x-time-taken: " . PerfFormatter::format_perf_data($start_time, $start_handle, $start_encode)); |
||||
echo($response); |
||||
return true; |
||||
} |
||||
} |
Loading…
Reference in new issue