Skip to content

Commit 597e4e2

Browse files
committed
upd
1 parent 0e6adb5 commit 597e4e2

File tree

4 files changed

+968
-937
lines changed

4 files changed

+968
-937
lines changed

docs/4.widgets.md

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,10 @@ logger.println(sets::Logger::warn() + "warn text");
8383
logger.println(sets::Logger::error() + "error text");
8484
```
8585

86-
### Таблица
87-
Передаётся в формате CSV текстом или как путь к файлу на флешке. CSV горизонтальный разделитель `;`, вертикальный `\n`. Внутри ячеек использование разделителей не допускается.
86+
### TableCSV
87+
Передаётся в формате CSV строкой или как путь к файлу с расширением `.csv` на флешке. CSV - горизонтальный разделитель `;`, вертикальный `\n`. Внутри ячеек использование разделителей не допускается.
88+
89+
Начиная с версии 1.3.6 умеет отрисовывать бинарные таблицы [Table](https://github.com/GyverLibs/Table) с расширением `.tbl`.
8890

8991
### LinearGauge
9092
Линейная шкала с заполнением, обновляется через апдейт.
@@ -94,6 +96,9 @@ logger.println(sets::Logger::error() + "error text");
9496
- Все могут обновляться в реальном времени
9597
- Названия осей передаются в виде списка с разделителем `;` - `"axis 1;test;test 2"`
9698
- Единицы измерения для графиков-линий опционально добавляются в конце названия оси в квадратных скобках - `"Value;Temp[°C];USD[ $]"`
99+
- Виджеты графиков поддерживают загрузку данных напрямую из файла с таблицей в формате:
100+
- Текстовая CSV таблица (разделитель столбцов `;`, строк - `\n`) с расширением `.csv`
101+
- Бинарная таблица из библиотеки [Table](https://github.com/GyverLibs/Table) с расширением `.tbl`
97102

98103
> [!TIP]
99104
> Если график хранится в файле бинарной таблицы с расширением `.tbl`, то при скачивании его из файлового менеджера он будет конвертирован в читаемый `.csv`
@@ -129,9 +134,7 @@ sett.updater().updatePlot(H(stack), (const float[]){random(100), random(100), ra
129134
```
130135

131136
### Plot
132-
График с линиями. Работает с таблицами в текстовом формате .csv (разделение `;` или `,`), а также с бинарными таблицами [Table](https://github.com/GyverLibs/Table).
133-
134-
Первый столбец таблицы - unix-время, остальные - значения осей:
137+
График с линиями. Первый столбец таблицы - unix-время, остальные - значения осей:
135138

136139
```cpp
137140
время значения...
@@ -150,9 +153,7 @@ b.Plot(H(plot2), "/table.csv");
150153
```
151154

152155
### PlotTimeline
153-
График с состояниями осей вкл/выкл в виде блоков. Работает с таблицами в текстовом формате .csv (разделение `;` или `,`), а также с бинарными таблицами [Table](https://github.com/GyverLibs/Table).
154-
155-
Первый столбец таблицы - unix-время, остальные - значения осей, есть три формата данных:
156+
График с состояниями осей вкл/выкл в виде блоков. Первый столбец таблицы - unix-время, остальные - значения осей. Есть три формата данных:
156157

157158
1. Режим `sets::TMode::All`, **остальные** столбцы - состояния (1 или 0) всех осей по одному в столбце:
158159

@@ -187,19 +188,40 @@ b.PlotTimeline("/tline_mask.csv", sets::TMode::Mask, "1;2;3;4");
187188
b.PlotTimeline("/tline_per.csv", sets::TMode::Single, "1;2;3;4");
188189
```
189190

190-
### Table
191-
Использовать `Table` очень просто:
191+
#### Table
192+
`Table` - класс для удобного создания и редактирования динамических таблиц со столбцами разных типов. Использовать очень просто:
192193

193194
```cpp
194-
// таблица с временем и двумя float столбцами
195+
// таблица с временем и двумя float столбцами (3 столбца, 0 строк)
195196
Table t(0, 3, cell_t::Uint32, cell_t::Float, cell_t::Float);
196197

198+
// прибавить строки
197199
t.append(unix1, random(100), random(100));
198200
t.append(unix2, random(100), random(100));
199201
```
200202
201203
И теперь её можно отправлять.
202204
205+
#### TableFileStatic
206+
Для ведения долгосрочных логов и построения графика гораздо интереснее использовать `TableFileStatic` - эта таблица хранится в файле и не загружается в оперативную память, что позволяет не ограничивать её размер объёмом оперативки и хранить большие объёмы данных (сотни килобайт), а виджет в свою очередь просто скачивает файл. Этот тип таблиц позволяет прибавлять к себе новые строки, сохраняя настроенный лимит на количество строк, например хранить данные о температуре за последние 3 месяца (чтобы файл не увеличивался до бесконечности).
207+
208+
```cpp
209+
void build(sets::Builder& b) {
210+
b.Plot(H(plot1), "/file_plot1.tbl");
211+
}
212+
213+
// условно вызывается каждую минуту
214+
void everyMinute() {
215+
TableFileStatic t(&LittleFS, "/file_plot1.tbl", 100); // макс. 100 строк, будет смещаться при append()
216+
217+
// инициализация, должна быть вызвана хотя бы один раз после непосредственного создания файла
218+
t.init(3, cell_t::Uint32, cell_t::Float, cell_t::Int8);
219+
220+
// добавление в файл
221+
t.append(sett.rtc.getUnix(), (random(100) - 50) / 2.0, random(-100, 100));
222+
}
223+
```
224+
203225
## Активные виджеты
204226
### Input
205227
Ввод текста. Поддерживает регулярные выражения и комментарий при ошибке ввода:

examples/plot_file/plot_file.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ void loop() {
5353
tmr = millis();
5454

5555
// ===== бинарная таблица =====
56-
TableFileStatic t(&LittleFS, "/file_plot1.tbl");
56+
TableFileStatic t(&LittleFS, "/file_plot1.tbl", 100); // макс. 100 строк, будет смещаться при append()
5757

5858
// инициализация, должна быть вызвана хотя бы один раз после непосредственного создания файла
5959
t.init(3, cell_t::Uint32, cell_t::Float, cell_t::Int8);

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=Settings
2-
version=1.3.5
2+
version=1.3.6
33
author=AlexGyver <[email protected]>
44
maintainer=AlexGyver <[email protected]>
55
sentence=Simple UI webface builder for esp8266/esp32

0 commit comments

Comments
 (0)