mirror of
https://github.com/house-of-abbey/GarminHomeAssistant.git
synced 2025-09-13 04:31:32 +00:00
@@ -38,11 +38,11 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
private var mUpdateTimer as Timer.Timer?;
|
private var mUpdateTimer as Timer.Timer?;
|
||||||
// Array initialised by onReturnFetchMenuConfig()
|
// Array initialised by onReturnFetchMenuConfig()
|
||||||
private var mItemsToUpdate as Lang.Array<HomeAssistantToggleMenuItem or HomeAssistantTapMenuItem or HomeAssistantGroupMenuItem>?;
|
private var mItemsToUpdate as Lang.Array<HomeAssistantToggleMenuItem or HomeAssistantTapMenuItem or HomeAssistantGroupMenuItem>?;
|
||||||
private var mIsApp as Lang.Boolean = false; // Or Widget
|
private var mIsApp as Lang.Boolean = false; // Or Widget
|
||||||
private var mUpdating as Lang.Boolean = false; // Don't start a second chain of updates
|
private var mUpdating as Lang.Boolean = false; // Don't start a second chain of updates
|
||||||
private var mTemplates as Lang.Dictionary = {};
|
private var mTemplates as Lang.Dictionary? = null; // Cache of compiled templates
|
||||||
private var mNotifiedNoBle as Lang.Boolean = false;
|
private var mNotifiedNoBle as Lang.Boolean = false;
|
||||||
private var mIsCacheChecked as Lang.Boolean = false;
|
private var mIsCacheChecked as Lang.Boolean = false;
|
||||||
|
|
||||||
//! Class Constructor
|
//! Class Constructor
|
||||||
//
|
//
|
||||||
@@ -358,12 +358,12 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
//
|
//
|
||||||
function glanceTemplate(menu as Lang.Dictionary) {
|
function glanceTemplate(menu as Lang.Dictionary) {
|
||||||
if (menu != null) {
|
if (menu != null) {
|
||||||
if (menu.get("glance") != null) {
|
if (menu["glance"] != null) {
|
||||||
var glance = menu.get("glance") as Lang.Dictionary;
|
var glance = menu["glance"] as Lang.Dictionary;
|
||||||
if (glance.get("type").equals("info")) {
|
if (glance["type"].equals("info")) {
|
||||||
mGlanceTemplate = glance.get("content") as Lang.String;
|
mGlanceTemplate = glance["content"] as Lang.String;
|
||||||
// System.println("HomeAssistantApp glanceTemplate() " + mGlanceTemplate);
|
// System.println("HomeAssistantApp glanceTemplate() " + mGlanceTemplate);
|
||||||
} else { // if glance.get("type").equals("status")
|
} else { // if glance["type"].equals("status")
|
||||||
mGlanceTemplate = null;
|
mGlanceTemplate = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -391,8 +391,8 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
if (!b.hasKey(key)) {
|
if (!b.hasKey(key)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
var valA = a.get(key);
|
var valA = a[key];
|
||||||
var valB = b.get(key);
|
var valB = b[key];
|
||||||
if (valA == null && valB == null) {
|
if (valA == null && valB == null) {
|
||||||
// both null, consider true
|
// both null, consider true
|
||||||
} else if (valA == null || valB == null) {
|
} else if (valA == null || valB == null) {
|
||||||
@@ -425,25 +425,26 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
if (a.size() != b.size()) {
|
if (a.size() != b.size()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
for (var j = 0; j < a.size(); j++) {
|
for (var i = 0; i < a.size(); i++) {
|
||||||
var itemA = a[j];
|
var itemA = a[i];
|
||||||
var itemB = b[j];
|
var itemB = b[i];
|
||||||
if (itemA == null && itemB == null) {
|
if (itemA == null && itemB == null) {
|
||||||
// both null, consider true
|
// Both null, consider true
|
||||||
} else if (itemA == null || itemB == null) {
|
} else if (itemA == null || itemB == null) {
|
||||||
return false;
|
return false;
|
||||||
} else if (itemA instanceof Lang.Dictionary and itemB instanceof Lang.Dictionary) {
|
} else if (itemA instanceof Lang.Dictionary and itemB instanceof Lang.Dictionary) {
|
||||||
if (!structuralEquals(itemA, itemB)) {
|
if (!structuralEquals(itemA, itemB)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (valA instanceof Lang.Array and valB instanceof Lang.Array) {
|
} else if (itemA instanceof Lang.Array and itemB instanceof Lang.Array) {
|
||||||
if (!arrayEquals(valA, valB)) {
|
if (!arrayEquals(itemA, itemB)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (!itemA.equals(itemB)) {
|
} else if (!itemA.equals(itemB)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Callback function for the menu check GET request.
|
//! Callback function for the menu check GET request.
|
||||||
@@ -601,10 +602,12 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
if (mItemsToUpdate != null) {
|
if (mItemsToUpdate != null) {
|
||||||
for (var i = 0; i < mItemsToUpdate.size(); i++) {
|
for (var i = 0; i < mItemsToUpdate.size(); i++) {
|
||||||
var item = mItemsToUpdate[i];
|
var item = mItemsToUpdate[i];
|
||||||
var state = data.get(i.toString());
|
var state = data[i.toString()];
|
||||||
item.updateState(state);
|
if (item.getTemplate() != null) {
|
||||||
|
item.updateState(state);
|
||||||
|
}
|
||||||
if (item instanceof HomeAssistantToggleMenuItem) {
|
if (item instanceof HomeAssistantToggleMenuItem) {
|
||||||
(item as HomeAssistantToggleMenuItem).updateToggleState(data.get(i.toString() + "t"));
|
(item as HomeAssistantToggleMenuItem).updateToggleState(data[i.toString() + "t"]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Settings.getCacheConfig() && !mIsCacheChecked) {
|
if (Settings.getCacheConfig() && !mIsCacheChecked) {
|
||||||
@@ -681,7 +684,7 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
mItemsToUpdate = mHaMenu.getItemsToUpdate();
|
mItemsToUpdate = mHaMenu.getItemsToUpdate();
|
||||||
mTemplates = {};
|
mTemplates = {};
|
||||||
for (var i = 0; i < mItemsToUpdate.size(); i++) {
|
for (var i = 0; i < mItemsToUpdate.size(); i++) {
|
||||||
var item = mItemsToUpdate[i];
|
var item = mItemsToUpdate[i];
|
||||||
var template = item.getTemplate();
|
var template = item.getTemplate();
|
||||||
if (template != null) {
|
if (template != null) {
|
||||||
mTemplates.put(i.toString(), {
|
mTemplates.put(i.toString(), {
|
||||||
@@ -767,7 +770,7 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 200:
|
case 200:
|
||||||
if ((data != null) && data.get("message").equals("API running.")) {
|
if ((data != null) && (data instanceof Lang.Dictionary) && data["message"].equals("API running.")) {
|
||||||
mApiStatus = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String;
|
mApiStatus = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String;
|
||||||
} else {
|
} else {
|
||||||
if (mIsApp) {
|
if (mIsApp) {
|
||||||
@@ -883,8 +886,8 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 200:
|
case 200:
|
||||||
if (data != null) {
|
if ((data != null) && (data instanceof Lang.Dictionary)) {
|
||||||
mGlanceText = data.get("glanceTemplate");
|
mGlanceText = data["glanceTemplate"];
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@@ -136,6 +136,9 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
|||||||
setUiToggle(data);
|
setUiToggle(data);
|
||||||
if (mTemplate == null and data.equals("unavailable")) {
|
if (mTemplate == null and data.equals("unavailable")) {
|
||||||
setSubLabel($.Rez.Strings.Unavailable);
|
setSubLabel($.Rez.Strings.Unavailable);
|
||||||
|
} else {
|
||||||
|
// Needed to revert the sub-label when the entity becomes available again.
|
||||||
|
setSubLabel(null);
|
||||||
}
|
}
|
||||||
} else if(data instanceof Lang.Dictionary) {
|
} else if(data instanceof Lang.Dictionary) {
|
||||||
// System.println("HomeAssistantToggleMenuItem updateState() data = " + data);
|
// System.println("HomeAssistantToggleMenuItem updateState() data = " + data);
|
||||||
|
Reference in New Issue
Block a user