Using a picker object to configure the picker now, deriving display format from steps.

This commit is contained in:
thmichel
2025-10-29 13:54:14 +01:00
parent 2cd171637c
commit 6a0ec34cdb
4 changed files with 18 additions and 20 deletions

View File

@@ -630,7 +630,6 @@ class HomeAssistantApp extends Application.AppBase {
(item as HomeAssistantToggleMenuItem).updateToggleState(data[i.toString() + "t"]);
}
if (item instanceof HomeAssistantNumericMenuItem) {
// (item as HomeAssistantNumericMenuItem).updateNumericState("22");
(item as HomeAssistantNumericMenuItem).updateNumericState(data[i.toString() + "n"].toString());
}
}

View File

@@ -68,15 +68,6 @@ class HomeAssistantNumericMenuItem extends HomeAssistantMenuItem {
mLabel = label;
mHomeAssistantService = haService;
var val = data.get("display_format");
if (val != null) {
mFormatString = val.toString();
}
else {
mFormatString = "%.1f";
}
HomeAssistantMenuItem.initialize(
label,
template,
@@ -170,9 +161,13 @@ class HomeAssistantNumericMenuItem extends HomeAssistantMenuItem {
function getNumericTemplate() as Lang.String? {
var entity_id = mData.get("entity_id");
if (entity_id != null) {
return "{{state_attr('" + entity_id.toString() + "','" + mData.get("attribute").toString() +"')}}";
}
return null;
if (mData.get("attribute")!=null)
{
return "{{state_attr('" + entity_id.toString() + "','" + mData.get("attribute").toString() +"')}}";
}
return "";
}
return "";
}
function updateNumericState(data as Lang.String or Lang.Dictionary or Null) as Void {
@@ -181,7 +176,6 @@ class HomeAssistantNumericMenuItem extends HomeAssistantMenuItem {
return;
} else if(data instanceof Lang.String) {
mValue=data;
} else {
// Catch possible error
mValue="0";

View File

@@ -47,6 +47,7 @@ class HomeAssistantView extends WatchUi.Menu2 {
var content = items[i].get("content") as Lang.String?;
var entity = items[i].get("entity") as Lang.String?;
var tap_action = items[i].get("tap_action") as Lang.Dictionary?;
var picker = items[i].get("picker") as Lang.Dictionary?; // optional for numeric items
var service = items[i].get("service") as Lang.String?; // Deprecated schema
var confirm = false as Lang.Boolean?;
var pin = false as Lang.Boolean?;
@@ -132,7 +133,7 @@ class HomeAssistantView extends WatchUi.Menu2 {
entity,
content,
service,
data,
picker,
{
:exit => exit,
:confirm => confirm,

View File

@@ -44,11 +44,15 @@ class HomeAssistantNumericFactory extends WatchUi.PickerFactory {
if (val != null) {
mStep = val.toString().toFloat();
}
val = data.get("display_format");
if (val != null) {
mFormatString = val.toString();
}
if (mStep < 0.01) {
mFormatString="%.3f";
} else if (mStep < 0.1) {
mFormatString="%2f";
} else if (mStep < 1) {
mFormatString="%.1f";
} else {
mFormatString="%d";
}
}
//! Get the index of a number item