mirror of
https://github.com/house-of-abbey/GarminHomeAssistant.git
synced 2025-06-17 11:58:30 +00:00
Allow toggles to work if template fails
This commit is contained in:
@ -268,10 +268,18 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
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.buildTemplate();
|
||||||
|
if (template != null) {
|
||||||
mTemplates.put(i.toString(), {
|
mTemplates.put(i.toString(), {
|
||||||
"template" => item.buildTemplate()
|
"template" => template
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
if (item instanceof HomeAssistantToggleMenuItem) {
|
||||||
|
mTemplates.put(i.toString() + "t", {
|
||||||
|
"template" => (item as HomeAssistantToggleMenuItem).buildToggleTemplate()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
updateMenuItems();
|
updateMenuItems();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -328,6 +336,9 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
var item = mItemsToUpdate[i];
|
var item = mItemsToUpdate[i];
|
||||||
var state = data.get(i.toString());
|
var state = data.get(i.toString());
|
||||||
item.updateState(state);
|
item.updateState(state);
|
||||||
|
if (item instanceof HomeAssistantToggleMenuItem) {
|
||||||
|
(item as HomeAssistantToggleMenuItem).updateToggleState(data.get(i.toString() + "t"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
var delay = Settings.getPollDelay();
|
var delay = Settings.getPollDelay();
|
||||||
if (delay > 0) {
|
if (delay > 0) {
|
||||||
|
@ -53,7 +53,7 @@ class HomeAssistantGroupMenuItem extends WatchUi.IconMenuItem {
|
|||||||
|
|
||||||
function updateState(data as Lang.String or Lang.Dictionary or Null) as Void {
|
function updateState(data as Lang.String or Lang.Dictionary or Null) as Void {
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
setSubLabel($.Rez.Strings.Empty);
|
setSubLabel(null);
|
||||||
} else if(data instanceof Lang.String) {
|
} else if(data instanceof Lang.String) {
|
||||||
setSubLabel(data);
|
setSubLabel(data);
|
||||||
} else if(data instanceof Lang.Dictionary) {
|
} else if(data instanceof Lang.Dictionary) {
|
||||||
|
@ -56,23 +56,17 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function buildTemplate() as Lang.String or Null {
|
function buildTemplate() as Lang.String or Null {
|
||||||
if (mTemplate == null) {
|
return mTemplate;
|
||||||
return "{{states('" + mData.get("entity_id") + "')}}";
|
|
||||||
}
|
}
|
||||||
return "{{states('" + mData.get("entity_id") + "')}}," + mTemplate;
|
function buildToggleTemplate() as Lang.String or Null {
|
||||||
|
return "{{states('" + mData.get("entity_id") + "')}}";
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateState(data as Lang.String or Lang.Dictionary or Null) as Void {
|
function updateState(data as Lang.String or Lang.Dictionary or Null) as Void {
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
setSubLabel($.Rez.Strings.Empty);
|
setSubLabel(null);
|
||||||
} else if(data instanceof Lang.String) {
|
} else if(data instanceof Lang.String) {
|
||||||
if (mTemplate == null) {
|
setSubLabel(data);
|
||||||
setUiToggle(data);
|
|
||||||
} else {
|
|
||||||
var split = data.find(",");
|
|
||||||
setSubLabel(data.substring(split + 1, data.length()));
|
|
||||||
setUiToggle(data.substring(0, split));
|
|
||||||
}
|
|
||||||
} else if(data instanceof Lang.Dictionary) {
|
} else if(data instanceof Lang.Dictionary) {
|
||||||
// System.println("HomeAsistantToggleMenuItem updateState() data = " + data);
|
// System.println("HomeAsistantToggleMenuItem updateState() data = " + data);
|
||||||
if (data.get("error") != null) {
|
if (data.get("error") != null) {
|
||||||
@ -86,6 +80,31 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
|||||||
}
|
}
|
||||||
WatchUi.requestUpdate();
|
WatchUi.requestUpdate();
|
||||||
}
|
}
|
||||||
|
function updateToggleState(data as Lang.String or Lang.Dictionary or Null) as Void {
|
||||||
|
if (data == null) {
|
||||||
|
setUiToggle("off");
|
||||||
|
} else if(data instanceof Lang.String) {
|
||||||
|
setUiToggle(data);
|
||||||
|
if (mTemplate == null and data.equals("unavailable")) {
|
||||||
|
setSubLabel($.Rez.Strings.Unavailable);
|
||||||
|
}
|
||||||
|
} else if(data instanceof Lang.Dictionary) {
|
||||||
|
// System.println("HomeAsistantToggleMenuItem updateState() data = " + data);
|
||||||
|
if (mTemplate == null) {
|
||||||
|
if (data.get("error") != null) {
|
||||||
|
setSubLabel($.Rez.Strings.TemplateError);
|
||||||
|
} else {
|
||||||
|
setSubLabel($.Rez.Strings.PotentialError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// The template must return a Lang.String, a number can be either integer or float and hence cannot be formatted locally without error.
|
||||||
|
if (mTemplate == null) {
|
||||||
|
setSubLabel(WatchUi.loadResource($.Rez.Strings.TemplateError) as Lang.String);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
WatchUi.requestUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
// Callback function after completing the POST request to set the status.
|
// Callback function after completing the POST request to set the status.
|
||||||
//
|
//
|
||||||
|
Reference in New Issue
Block a user