esphome-webserver icon indicating copy to clipboard operation
esphome-webserver copied to clipboard

v3 - Sometimes sorting order gets mixed up on page reload

Open stas-sl opened this issue 5 months ago • 11 comments

Occasionally, when the page reloads, the sorting order defined by web_server_sorting_weight gets mixed up. This issue becomes more noticeable with an increasing number of sensors and more frequent updates.

https://github.com/user-attachments/assets/dff1791f-d979-4a6c-b0ca-880cc3af7d1a

esphome:
  name: test
  platformio_options:
    upload_speed: 1500000
    board_build.f_cpu: 240000000

esp32:
  board: esp32dev
  framework:
    type: esp-idf

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  power_save_mode: none
  fast_connect: true

logger:
  level: ERROR

api:
  password: !secret api_password

ota:
  platform: esphome

web_server:
  port: 80
  version: 3

number:
  - platform: template
    name: 1
    id: number1
    optimistic: true
    min_value: 0
    max_value: 100
    step: 1
    web_server_sorting_weight: 1
  - platform: template
    name: 2
    id: number2
    optimistic: true
    min_value: 0
    max_value: 100
    step: 1
    web_server_sorting_weight: 2
  - platform: template
    name: 3
    id: number3
    optimistic: true
    min_value: 0
    max_value: 100
    step: 1
    web_server_sorting_weight: 3
  - platform: template
    name: 4
    id: number4
    optimistic: true
    min_value: 0
    max_value: 100
    step: 1
    web_server_sorting_weight: 4
  - platform: template
    name: 5
    id: number5
    optimistic: true
    min_value: 0
    max_value: 100
    step: 1
    web_server_sorting_weight: 5


interval:
  - interval: 100ms
    then:
      - lambda: |-
          auto call = id(number1)->make_call();
          call.number_increment(true);
          call.perform();
  - interval: 100ms
    then:
      - lambda: |-
          auto call = id(number2)->make_call();
          call.number_increment(true);
          call.perform();
  - interval: 100ms
    then:
      - lambda: |-
          auto call = id(number3)->make_call();
          call.number_increment(true);
          call.perform();
  - interval: 100ms
    then:
      - lambda: |-
          auto call = id(number4)->make_call();
          call.number_increment(true);
          call.perform();
  - interval: 100ms
    then:
      - lambda: |-
          auto call = id(number5)->make_call();
          call.number_increment(true);
          call.perform();

stas-sl avatar Oct 01 '24 14:10 stas-sl