diff --git a/src/landroid-card.js b/src/landroid-card.js index 643cf10..cc91eed 100644 --- a/src/landroid-card.js +++ b/src/landroid-card.js @@ -662,145 +662,133 @@ class LandroidCard extends LitElement { return nothing; } - var title = type, - value = '', - value_right = true, - icon = '', - selected = '', - service = '', - attributes = {}; + let title = type; + let value = ''; + let value_right = true; + let icon = ''; + let selected = ''; + let service = ''; + let attributes = {}; + + const attributesEntity = this.getAttributes(this.entity); switch (type) { - case 'blades': - { - const { blades } = this.getAttributes(this.entity); - attributes = blades; - } + case 'blades': { + attributes = attributesEntity.blades; break; + } - case 'delay': - { - service = 'raindelay'; - icon = 'mdi:weather-rainy'; - const { rain_sensor } = this.getAttributes(this.entity); - value = selected = rain_sensor['delay']; - // value = this.formatValue('delay', selected); - for (let i = 0; i < 1440; i += 30) { - attributes[i] = this.formatValue('delay', i); - } + case 'delay': { + service = 'raindelay'; + icon = 'mdi:weather-rainy'; + const { rain_sensor } = attributesEntity; + value = selected = rain_sensor.delay; + for (let i = 0; i < 1440; i += 30) { + attributes[i] = this.formatValue('delay', i); } break; + } - case 'locked': - { - service = 'lock'; - icon = this.getIcon(type); - const { locked } = this.getAttributes(this.entity); - selected = locked; - attributes = { - locked: { - 0: localize('common.turn_off'), - 1: localize('common.turn_on'), - }, - }; - } + case 'locked': { + service = 'lock'; + icon = this.getIcon(type); + const { locked } = attributesEntity; + selected = locked; + attributes = { + locked: { + 0: localize('common.turn_off'), + 1: localize('common.turn_on'), + }, + }; break; + } - case 'party_mode_enabled': - { - service = 'partymode'; - icon = this.getIcon(type); - const { party_mode_enabled } = this.getAttributes(this.entity); - selected = party_mode_enabled; - attributes = { - party_mode_enabled: { - 0: localize('common.turn_off'), - 1: localize('common.turn_on'), - }, - }; - } + case 'party_mode_enabled': { + service = 'partymode'; + icon = this.getIcon(type); + const { party_mode_enabled } = attributesEntity; + selected = party_mode_enabled; + attributes = { + party_mode_enabled: { + 0: localize('common.turn_off'), + 1: localize('common.turn_on'), + }, + }; break; + } - case 'rssi': - { - const { - accessories, - firmware, - mac_address, - model, - online, - rssi, - serial_number, - time_zone, - capabilities, - state_updated_at, - } = this.getAttributes(this.entity); - value = rssi > -101 && rssi < -49 ? (rssi + 100) * 2 : 0; - title = type; - attributes = { - model, - serial_number, - mac_address, - time_zone, - online, - state_updated_at, - accessories: Array.isArray(accessories) - ? Object.assign({}, accessories) - : accessories, - firmware: firmware, - capabilities: Array.isArray(capabilities) - ? Object.assign({}, capabilities) - : capabilities, - }; - // console.log('renderListMenu(rssi)'); - } + case 'rssi': { + const { + accessories, + firmware, + mac_address, + model, + online, + rssi, + serial_number, + time_zone, + capabilities, + state_updated_at, + } = attributesEntity; + value = rssi > -101 && rssi < -49 ? (rssi + 100) * 2 : 0; + title = type; + attributes = { + model, + serial_number, + mac_address, + time_zone, + online, + state_updated_at, + accessories: Array.isArray(accessories) + ? { ...accessories } + : accessories, + firmware, + capabilities: Array.isArray(capabilities) + ? { ...capabilities } + : capabilities, + }; break; + } - case 'stats': - { - title = 'statistics'; - const { blades, statistics } = this.getAttributes(this.entity); - attributes = { blades: {}, statistics: {} }; - attributes.statistics = statistics; - attributes.blades = blades; - } + case 'stats': { + title = 'statistics'; + const { blades, statistics } = attributesEntity; + attributes = { blades: { ...blades }, statistics: { ...statistics } }; break; + } - case 'torque': - { - service = 'torque'; - icon = 'mdi:car-speed-limiter'; - const { torque } = this.getAttributes(this.entity); - selected = torque; - value = torque; - attributes = { torque: {} }; - for (let i = 50; i >= -50; i -= 5) { - attributes.torque[i] = this.formatValue('torque', i); - } + case 'torque': { + service = 'torque'; + icon = 'mdi:car-speed-limiter'; + const { torque } = attributesEntity; + selected = torque; + value = torque; + attributes = { torque: {} }; + for (let i = 50; i >= -50; i -= 5) { + attributes.torque[i] = this.formatValue('torque', i); } break; + } - case 'zone': - { - service = 'setzone'; - const { zone } = this.getAttributes(this.entity); - selected = zone['current']; - attributes = { zone: { 0: '1', 1: '2', 2: '3', 3: '4' } }; - } + case 'zone': { + service = 'setzone'; + const { zone } = attributesEntity; + selected = zone.current; + attributes = { zone: { 0: '1', 1: '2', 2: '3', 3: '4' } }; break; + } case 'battery': - default: - { - ({ - battery_level: value, - battery_icon: icon, - battery: attributes, - } = this.getAttributes(this.entity)); - title = 'battery_level'; - value_right = false; - } + default: { + ({ + battery_level: value, + battery_icon: icon, + battery: attributes, + } = attributesEntity); + title = 'battery_level'; + value_right = false; break; + } } return html` @@ -843,42 +831,43 @@ class LandroidCard extends LitElement { return nothing; } - return html` - ${Object.keys(attributes).map((item, i) => - this.isObject(attributes[item]) - ? this.renderListItem(attributes[item], { - parent: item, - selected: params.selected, - service: params.service, - }) - : html` - ${i === 0 && params.parent - ? html` - - ${localize('attr.' + params.parent)} - - ` - : ``} - this.handleService(e, params.service) - : (e) => e.stopPropagation()} - > - ${isNaN(item) ? localize('attr.' + item) + ': ' : ''} - ${this.formatValue(item, attributes[item])} - - `, - )} - `; - // @click=${params.service?(e) => this.handleZone(e):''} + const listItems = Object.keys(attributes).map((item, i) => { + if (this.isObject(attributes[item])) { + return this.renderListItem(attributes[item], { + parent: item, + selected: params.selected, + service: params.service, + }); + } else { + return html` + ${i === 0 && params.parent + ? html` + + ${localize('attr.' + params.parent)} + + ` + : ``} + this.handleService(e, params.service) + : (e) => e.stopPropagation()} + > + ${isNaN(item) ? localize('attr.' + item) + ': ' : ''} + ${this.formatValue(item, attributes[item])} + + `; + } + }); + + return html`${listItems}`; } /**