connectiq-ura/connectiq/source/DepartureView.mc
2021-01-19 13:37:02 +01:00

84 lines
2.3 KiB
MonkeyC

using Toybox.WatchUi;
using Toybox.Graphics;
using Toybox.System;
using Toybox.Communications;
using Toybox.Timer;
class DepartureView extends WatchUi.View {
var departures = null;
var tmr;
var app;
function initialize(a) {
WatchUi.View.initialize();
app = a;
updateDepartures();
}
function onLayout(dc) {
}
function onShow() {
tmr = new Timer.Timer();
tmr.start(method(:updateDepartures), 10000, true);
}
function onHide() {
tmr.stop();
}
function onUpdate(dc) {
dc.setColor(Graphics.COLOR_TRANSPARENT, Graphics.COLOR_BLACK);
dc.clear();
dc.setColor(Graphics.COLOR_WHITE, Graphics.COLOR_TRANSPARENT);
var mid = dc.getWidth() / 2;
var top = Graphics.getFontAscent(Graphics.FONT_SMALL);
if (departures != null) {
if (departures.size() > 0) {
for (var i = app.offset; i < departures.size(); i++) {
var dep = departures[i];
dc.drawText(mid, top, Graphics.FONT_SMALL, dep["line"] + " " + dep["dest"], Graphics.TEXT_JUSTIFY_CENTER);
top += Graphics.getFontAscent(Graphics.FONT_TINY);
dc.drawText(mid, top, Graphics.FONT_XTINY, dep["delta_str"], Graphics.TEXT_JUSTIFY_CENTER);
top += Graphics.getFontHeight(Graphics.FONT_SMALL);
}
}
else {
dc.drawText( (dc.getWidth() / 2), (dc.getHeight() / 2), Graphics.FONT_SMALL, "No departures!", Graphics.TEXT_JUSTIFY_CENTER );
}
}
else {
dc.drawText( (dc.getWidth() / 2), (dc.getHeight() / 2), Graphics.FONT_SMALL, "Loading...", Graphics.TEXT_JUSTIFY_CENTER );
}
}
function updateDepartures() {
var parameters = {
"id" => app.stopId,
"limit" => 10
};
var options = {
:method => Communications.HTTP_REQUEST_METHOD_GET,
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
};
Communications.makeWebRequest(app.api_url + "/departures", parameters, options, method(:requestCompleted));
}
function requestCompleted(responseCode, data) {
System.println("Request completed: " + responseCode);
if (responseCode == 200) {
departures = data;
WatchUi.requestUpdate();
}
}
}