Youen Toupin
3 years ago
3 changed files with 75 additions and 3 deletions
@ -1,7 +1,32 @@
|
||||
import m from 'mithril'; |
||||
import { MonitorApi, Status } from './monitor-api'; |
||||
|
||||
export default class MainPage { |
||||
api = new MonitorApi(false); |
||||
status?: Status; |
||||
autoRefresh = true; |
||||
|
||||
oninit() { |
||||
this.refresh(); |
||||
} |
||||
|
||||
onbeforeremove() { |
||||
this.autoRefresh = false; |
||||
} |
||||
|
||||
async refresh() { |
||||
this.status = await this.api.getStatus(); |
||||
if(this.autoRefresh) |
||||
setTimeout(() => { if(this.autoRefresh) this.refresh(); }, 500); |
||||
} |
||||
|
||||
view() { |
||||
return <p>Hello, world!</p> |
||||
return this.status |
||||
? <div> |
||||
<p>Tension batterie : {this.status.batteryVoltage.toFixed(1)}V</p> |
||||
<p>Courant : {this.status.motorCurrent.toFixed(1)}A</p> |
||||
<p>Puissance : {(this.status.batteryVoltage * this.status.motorCurrent).toFixed(1)}W</p> |
||||
</div> |
||||
: <p>Chargement...</p>; |
||||
} |
||||
} |
@ -0,0 +1,39 @@
|
||||
import m from 'mithril'; |
||||
|
||||
export interface Status { |
||||
batteryVoltage: number; |
||||
motorCurrent: number; |
||||
}; |
||||
|
||||
interface ApiStatus { |
||||
v: number; |
||||
c: number; |
||||
} |
||||
|
||||
export class MonitorApi { |
||||
constructor(private mockServer: boolean) { |
||||
} |
||||
|
||||
async getStatus(): Promise<Status> { |
||||
let apiStatus: ApiStatus; |
||||
|
||||
if(this.mockServer) { |
||||
await new Promise(resolve => setTimeout(resolve, 200)); |
||||
apiStatus = { |
||||
v: Math.random() * 20000 + 20000, |
||||
c: Math.random() * 30000 |
||||
} |
||||
setTimeout(() => m.redraw(), 0); |
||||
} else { |
||||
apiStatus = await m.request({ |
||||
method: "GET", |
||||
url: "/api/status" |
||||
}); |
||||
} |
||||
|
||||
return { |
||||
batteryVoltage: apiStatus.v / 1000, |
||||
motorCurrent: apiStatus.c / 1000 |
||||
}; |
||||
} |
||||
} |
Loading…
Reference in new issue