Skip to content

Commit 3438d15

Browse files
authored
Merge pull request #1395 from UI-Lovelace-Minimalist/release
Release
2 parents 72f6f39 + edc05b0 commit 3438d15

34 files changed

+368
-305
lines changed

custom_cards/custom_card_chromecast/custom_card_chromecast.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ card_media_player_chromecast:
99
- "icon_info"
1010
- "blue_not_unavailable"
1111
- "ulm_translation_engine"
12-
label: "[[[ return variables.ulm_translation_state_unit ]]]"
12+
label: "[[[ return variables.ulm_translation_state ]]]"
1313
card_media_player_chromecast_with_controls:
1414
variables:
1515
ulm_card_media_player_with_controls_name: "No name set"

custom_cards/custom_card_haven_washer/custom_card_haven_washer.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,7 @@ custom_card_haven_washer_delayed_text:
712712
show_icon: false
713713
show_label: true
714714
show_name: false
715-
label: "[[[ return variables.ulm_translation_state_unit ]]]"
715+
label: "[[[ return variables.ulm_translation_state ]]]"
716716
styles:
717717
state:
718718
- color: "rgba(var(--color-theme),0.9)"

custom_cards/custom_card_input_datetime/card_input_datetime.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ widget_text:
155155
show_icon: false
156156
show_label: true
157157
show_name: false
158-
label: "[[[ return variables.ulm_translation_state_unit ]]]"
158+
label: "[[[ return variables.ulm_translation_state ]]]"
159159
styles:
160160
grid:
161161
- grid-template-areas: "'l'"

custom_cards/custom_card_input_number/card_input_number.yaml

+15-15
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,13 @@ card_input_number:
4040
tap_action:
4141
action: "call-service"
4242
service: |
43-
[[[
44-
if( entity.entity_id.startsWith("input_number.") )
45-
return "input_number.decrement";
46-
if( entity.entity_id.startsWith("counter.") )
47-
return "counter.decrement";
48-
return "";
49-
]]]
43+
[[[
44+
if( entity.entity_id.startsWith("input_number.") )
45+
return "input_number.decrement";
46+
if( entity.entity_id.startsWith("counter.") )
47+
return "counter.decrement";
48+
return "";
49+
]]]
5050
service_data:
5151
entity_id: "[[[ return entity.entity_id ]]]"
5252
icon: "mdi:arrow-down"
@@ -67,13 +67,13 @@ card_input_number:
6767
tap_action:
6868
action: "call-service"
6969
service: |
70-
[[[
71-
if( entity.entity_id.startsWith("input_number.") )
72-
return "input_number.increment";
73-
if( entity.entity_id.startsWith("counter.") )
74-
return "counter.increment";
75-
return "";
76-
]]]
70+
[[[
71+
if( entity.entity_id.startsWith("input_number.") )
72+
return "input_number.increment";
73+
if( entity.entity_id.startsWith("counter.") )
74+
return "counter.increment";
75+
return "";
76+
]]]
7777
service_data:
7878
entity_id: "[[[ return entity.entity_id ]]]"
7979
icon: "mdi:arrow-up"
@@ -91,7 +91,7 @@ widget_text:
9191
show_icon: false
9292
show_label: true
9393
show_name: false
94-
label: "[[[ return variables.ulm_translation_state_unit ]]]"
94+
label: "[[[ return variables.ulm_translation_state ]]]"
9595
styles:
9696
grid:
9797
- grid-template-areas: "'l'"

custom_cards/custom_card_irmajavi_entities/custom_card_irmajavi_entities.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ custom_card_irmajavi_entities:
107107
custom_widget_irmajavi:
108108
show_label: true
109109
show_icon: false
110-
label: "[[[ return variables.ulm_translation_state_unit ]]]"
110+
label: "[[[ return variables.ulm_translation_state ]]]"
111111
styles:
112112
name:
113113
- justify-self: "center"

custom_components/ui_lovelace_minimalist/cards/button-card/button-card.js

+66-53
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

custom_components/ui_lovelace_minimalist/const.py

+4
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@
2424
"German": "de",
2525
"English (GB)": "en",
2626
"Spanish": "es",
27+
"Català": "ca",
2728
"French": "fr",
2829
"Italian": "it",
2930
"Dutch": "nl",
31+
"Hebrew": "he",
3032
"Norwegian": "no",
3133
"Polish": "pl",
3234
"Portuguese": "pt",
@@ -45,9 +47,11 @@
4547
"German",
4648
"English (GB)",
4749
"Spanish",
50+
"Català",
4851
"French",
4952
"Italian",
5053
"Dutch",
54+
"Hebrew",
5155
"Norwegian",
5256
"Polish",
5357
"Portuguese",

custom_components/ui_lovelace_minimalist/lovelace/translations/default.yaml

+11-121
Original file line numberDiff line numberDiff line change
@@ -22,84 +22,27 @@ ulm_translation_engine:
2222
return (!not_active.includes(entity.state) && !containsNumbers(entity.state))
2323
}
2424
]]]
25-
ulm_translation_hour: >
26-
[[[
27-
var number = hass.resources[hass['language']]["ui.duration.hour"];
28-
var matches = number.match(/[^{\}]+(?=})/g);
29-
var hour = "Hour";
30-
if (matches) {
31-
var hour = matches[1];
32-
}
33-
return(hour);
34-
]]]
35-
ulm_translation_hours: >
36-
[[[
37-
var number = hass.resources[hass['language']]["ui.duration.hour"];
38-
var matches = number.match(/[^{\}]+(?=})/g);
39-
var hour = "Hours";
40-
if (matches) {
41-
var hour = matches[2];
42-
}
43-
return(hour);
44-
]]]
45-
ulm_translation_hvac: >
46-
[[[
47-
if (typeof(entity) !== 'undefined' && entity !== undefined){
48-
let state = entity.state;
49-
let d_class = entity.attributes.device_class;
50-
let def = ["unknown", "unavailable"];
51-
let lang = hass["language"];
52-
let action = entity.attributes.hvac_action;
53-
let domain = entity.entity_id.substr(0, entity.entity_id.indexOf("."));
54-
var mode = hass.resources[lang]["state_attributes." + domain + ".hvac_action." + action];
55-
if (def.includes(state)) {
56-
var mode = hass.resources[lang]["state.default." + state ];
57-
}
58-
var label = hass.resources[lang]["component." + domain + ".state._." + state];
59-
var translation = label ? label : state;
60-
return (entity.attributes.current_temperature ) + '°' + ' • ' + translation + ((entity.state !='off' && mode !== undefined) ? ' (' + mode + ')' : '');
61-
}
62-
]]]
6325
ulm_translation_off: "[[[ return hass.resources[hass['language']]['state.default.off']; ]]]"
6426
ulm_translation_on: "[[[ return hass.resources[hass['language']]['state.default.on']; ]]]"
6527
ulm_translation_state: >
6628
[[[
6729
if (typeof(entity) !== 'undefined' && entity !== undefined){
68-
let state = entity.state;
69-
let d_class = entity.attributes.device_class;
70-
let def = ["unknown", "unavailable"];
30+
let device_class = entity.attributes.device_class;
7131
let lang = hass["language"];
32+
let action = entity.attributes.hvac_action;
7233
let domain = entity.entity_id.substr(0, entity.entity_id.indexOf("."));
73-
var translation = hass.resources[lang]["component." + domain + ".entity_component._.state." + state]
74-
let display_precision = hass.entities[entity.entity_id]?.display_precision
75-
const now = new Date();
76-
const timestamp = (new Date(state)).getTime();
77-
const nowTimeStamp = now.getTime();
78-
const microSecondsDiff = Math.round(timestamp - nowTimeStamp);
79-
const daysDiff = Math.round(microSecondsDiff / (1000 * 60 * 60 * 24));
80-
const hoursDiff = Math.round(microSecondsDiff / (1000 * 60 * 60));
81-
const minutesDiff = Math.round(microSecondsDiff / (1000 * 60));
82-
const secondsDiff = Math.round(microSecondsDiff / (1000));
83-
const formatter = new Intl.RelativeTimeFormat(lang, { numeric: 'auto' });
84-
var scale = 'day'
85-
var diff = daysDiff
86-
if (Math.abs(secondsDiff) < 60){ scale = 'second'; diff = secondsDiff }
87-
else if (Math.abs(minutesDiff) < 60){ scale = 'minute'; diff = minutesDiff }
88-
else if (Math.abs(hoursDiff) < 24){ scale = 'hour'; diff = hoursDiff }
89-
90-
if (def.includes(state)) {
91-
var translation = hass.resources[lang]["state.default." + state ];
92-
}
93-
else if (domain == "binary_sensor" && d_class != ''){
94-
var translation = hass.resources[lang]["component." + domain + ".entity_component." + d_class + ".state." + state]
34+
let mode = hass.resources[lang]["state_attributes." + domain + ".hvac_action." + action];
35+
if(variables.ulm_show_last_changed){
36+
return helpers.relativeTime(entity.last_changed, true)
9537
}
96-
else if (d_class == 'timestamp'){
97-
var translation = formatter.format(diff, scale)
38+
if(device_class == 'timestamp'){
39+
return helpers.relativeTime(entity.state, true)
9840
}
99-
else if (parseFloat(display_precision) >=0){
100-
var translation = parseFloat(entity.state).toFixed(display_precision?.toString())
41+
if(entity.entity_id.startsWith("climate.")){
42+
return helpers.localize(entity, entity.attributes.current_temperature) + ' • ' +
43+
helpers.localize(entity) + ((entity.state !='off' && mode !== undefined) ? ' (' + mode + ')' : '');
10144
}
102-
return translation ? translation.charAt(0).toUpperCase() + translation.slice(1) : state;
45+
return helpers.localize(entity)
10346
}
10447
]]]
10548
ulm_translation_state_reverse: >
@@ -119,59 +62,6 @@ ulm_translation_engine:
11962
return translation ? translation : state;
12063
}
12164
]]]
122-
ulm_translation_state_unit: >
123-
[[[
124-
if (typeof(entity) !== 'undefined' && entity !== undefined){
125-
let state = entity.state;
126-
let d_class = entity.attributes.device_class;
127-
let def = ["unknown", "unavailable"];
128-
let lang = hass["language"];
129-
let domain = entity.entity_id.substr(0, entity.entity_id.indexOf("."));
130-
let unit = entity.attributes.unit_of_measurement != null ? " " + entity.attributes.unit_of_measurement : "";
131-
let display_precision = hass.entities[entity.entity_id]?.display_precision
132-
const now = new Date();
133-
const timestamp = (new Date(state)).getTime();
134-
const nowTimeStamp = now.getTime();
135-
const microSecondsDiff = Math.round(timestamp - nowTimeStamp);
136-
const daysDiff = Math.round(microSecondsDiff / (1000 * 60 * 60 * 24));
137-
const hoursDiff = Math.round(microSecondsDiff / (1000 * 60 * 60));
138-
const minutesDiff = Math.round(microSecondsDiff / (1000 * 60));
139-
const secondsDiff = Math.round(microSecondsDiff / (1000));
140-
const formatter = new Intl.RelativeTimeFormat(lang, { numeric: 'auto' });
141-
142-
var scale = 'day'
143-
var diff = daysDiff
144-
if (Math.abs(secondsDiff) < 60){ scale = 'second'; diff = secondsDiff }
145-
else if (Math.abs(minutesDiff) < 60){ scale = 'minute'; diff = minutesDiff }
146-
else if (Math.abs(hoursDiff) < 24){ scale = 'hour'; diff = hoursDiff }
147-
148-
if(hass.resources[lang]["component." + domain + ".entity_component._.state." + state]){
149-
var translation = hass.resources[lang]["component." + domain + ".entity_component._.state." + state] + unit
150-
} else {
151-
var translation = state + unit;
152-
}
153-
if (def.includes(state)) {
154-
var translation = hass.resources[lang]["state.default." + state ];
155-
}
156-
else if (domain == "binary_sensor" && d_class != ''){
157-
var translation = hass.resources[lang]["component." + domain + ".entity_component." + d_class + ".state." + state]
158-
}
159-
else if (domain == "media_player" && d_class != ''){
160-
if (state == 'idle' || state == 'paused')
161-
var translation = hass.resources[lang]["component." + domain + ".entity_component._.state." + state];
162-
else {
163-
var translation = (entity.attributes.source) + ' • ' + ( Math.round(entity.attributes.volume_level / 0.01)) + '%' ;
164-
}
165-
}
166-
else if (d_class == 'timestamp'){
167-
var translation = formatter.format(diff, scale);
168-
}
169-
else if (parseFloat(display_precision) >=0){
170-
var translation = parseFloat(entity.state).toFixed(display_precision?.toString()) + unit
171-
}
172-
return translation ? translation.charAt(0).toUpperCase() + translation.slice(1) : state;
173-
}
174-
]]]
17565
ulm_translation_statistics: "[[[ return hass.resources[hass['language']]['ui.components.statistic-picker.statistic']; ]]]"
17666
ulm_translation_unavailable: "[[[ return hass.resources[hass['language']]['state.default.unavailable']; ]]]"
17767
ulm_translation_currency: >
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
ulm_language_variables:
3+
variables:
4+
ulm_currency: ""
5+
ulm_updates_available: "יש עדכונים"
6+
ulm_no_updates_available: "אין עדכונים"
7+
ulm_ophaling: "יש איסוף אשפה!"
8+
ulm_geen_ophaling: "אין איסוף אשפה"
9+
ulm_volgende_ophaling: "איסופי אשפה קרובים"
10+
ulm_morning: "בוקר טוב"
11+
ulm_afternoon: "צהריים טובים"
12+
ulm_evening: "ערב טוב"
13+
ulm_hello: "שלום"
14+
ulm_volume: "ווליום"
15+
ulm_popups_color: "צבע"
16+
ulm_radar: "רדאר"
17+
ulm_popup_total: "סך הכל"

custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_name.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ ulm_actions_name:
176176
'entity_id': entity.entity_id
177177
};
178178
}
179-
return variables.ulm_card_name_service_data;
179+
return variables.ulm_name_hold_service_data;
180180
]]]
181181
browser_mod:
182182
service: "browser_mod.popup"

custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/2-line_cards/card_graph.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ card_graph:
1515
ulm_card_graph_group_by: "interval"
1616
ulm_card_graph_line_width: 5
1717
ulm_card_graph_icon_color: ""
18-
triggers_update: "all"
18+
triggers_update:
19+
- "[[[ return variables.ulm_card_graph_entity2 ]]]"
1920
custom_fields:
2021
item1:
2122
card:

custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_battery.yaml

+3-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ card_battery:
1616
ulm_card_battery_color_battery_level_warning: "var(--google-yellow)"
1717
ulm_card_battery_color_battery_level_ok: "var(--google-green)"
1818
ulm_outlet_power_enable_popup: false
19-
triggers_update: "all"
19+
triggers_update:
20+
- "[[[ return variables?.ulm_card_battery_battery_state_entity_id ]]]"
21+
- "[[[ return variables?.ulm_card_battery_charger_type_entity_id ]]]"
2022
custom_fields:
2123
item1:
2224
card:

custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ card_generic:
7171
card:
7272
type: "custom:button-card"
7373
entity: "[[[ return entity.entity_id ]]]"
74-
name: "[[[ return variables.ulm_translation_state_unit ]]]"
74+
name: "[[[ return variables.ulm_translation_state ]]]"
7575
label: "[[[ return variables.ulm_card_generic_name ]]]"
7676
variables: >
7777
[[[

custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic_swap.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ card_generic_swap:
7171
card:
7272
type: "custom:button-card"
7373
entity: "[[[ return entity.entity_id ]]]"
74-
label: "[[[ return variables.ulm_translation_state_unit ]]]"
74+
label: "[[[ return variables.ulm_translation_state ]]]"
7575
name: "[[[ return variables.ulm_card_generic_swap_name ]]]"
7676
variables: >
7777
[[[

custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_media_player.yaml

+5-6
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,14 @@ card_media_player:
1111
ulm_card_media_player_enable_controls: false
1212
ulm_card_media_player_enable_volume_slider: false
1313
ulm_card_media_player_enable_volume_buttons: false
14-
ulm_card_media_player_enable_volume_adjust: false
14+
ulm_card_media_player_enable_volume_adjust: 0
1515
ulm_card_media_player_collapsible: false
1616
ulm_card_media_player_player_controls_entity: "[[[ return entity.entity_id ]]]"
1717
ulm_card_media_player_enable_popup: false
1818
ulm_card_media_player_more_info: false
1919
ulm_card_media_player_power_button: false
2020
ulm_card_media_player_force_background_color: false
2121
ulm_card_media_player_color: "blue"
22-
triggers_update: "all"
2322
show_icon: false
2423
show_name: false
2524
show_label: false
@@ -769,8 +768,8 @@ card_media_player:
769768
volume_level: |
770769
[[[
771770
var volume = states[entity.entity_id].attributes.volume_level;
772-
if (variables.ulm_card_media_player_enable_volume_adjust) {
773-
volume = states[entity.entity_id].attributes.volume_level + ulm_card_media_player_enable_volume_adjust;
771+
if (variables.ulm_card_media_player_enable_volume_adjust != 0) {
772+
volume = states[entity.entity_id].attributes.volume_level - variables.ulm_card_media_player_enable_volume_adjust;
774773
} else {
775774
if (states[entity.entity_id].attributes.device_class === "tv") {
776775
volume = states[entity.entity_id].attributes.volume_level - 0.01;
@@ -849,8 +848,8 @@ card_media_player:
849848
volume_level: |
850849
[[[
851850
var volume = states[entity.entity_id].attributes.volume_level;
852-
if (variables.ulm_card_media_player_enable_volume_adjust) {
853-
volume = states[entity.entity_id].attributes.volume_level + ulm_card_media_player_enable_volume_adjust;
851+
if (variables.ulm_card_media_player_enable_volume_adjust != 0) {
852+
volume = states[entity.entity_id].attributes.volume_level + variables.ulm_card_media_player_enable_volume_adjust;
854853
} else {
855854
if (states[entity.entity_id].attributes.device_class === "tv") {
856855
volume = states[entity.entity_id].attributes.volume_level + 0.01;

0 commit comments

Comments
 (0)