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"]); (item as HomeAssistantToggleMenuItem).updateToggleState(data[i.toString() + "t"]);
} }
if (item instanceof HomeAssistantNumericMenuItem) { if (item instanceof HomeAssistantNumericMenuItem) {
// (item as HomeAssistantNumericMenuItem).updateNumericState("22");
(item as HomeAssistantNumericMenuItem).updateNumericState(data[i.toString() + "n"].toString()); (item as HomeAssistantNumericMenuItem).updateNumericState(data[i.toString() + "n"].toString());
} }
} }

View File

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

View File

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

View File

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