Youen Toupin
3 years ago
3 changed files with 75 additions and 3 deletions
@ -1,7 +1,32 @@ |
|||||||
import m from 'mithril'; |
import m from 'mithril'; |
||||||
|
import { MonitorApi, Status } from './monitor-api'; |
||||||
|
|
||||||
export default class MainPage { |
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() { |
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