From 556e72311f51d9dfa9ea5118f4c713c14517cf28 Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Thu, 12 Feb 2026 10:31:46 +0100 Subject: [PATCH] Fixes --- .../ChartWidget.cpp.344F8561CCF752B4.idx | Bin 7644 -> 7808 bytes .../clangd/index/Eth.cpp.9E0D1973A86A173A.idx | Bin 6254 -> 8542 bytes .../clangd/index/Eth.hpp.08D328E5C3BAEBCA.idx | Bin 1166 -> 1786 bytes .../HistoryStore.cpp.957860D36959A6A5.idx | Bin 19088 -> 19176 bytes .../index/KnxWorker.cpp.DE6DF2C0B88ED24E.idx | Bin 12446 -> 12892 bytes .../LabelWidget.cpp.86E5A1BF3C34B7BC.idx | Bin 11674 -> 11830 bytes .../NetworkConfig.cpp.28689B151DE5324A.idx | Bin 0 -> 7476 bytes .../NetworkConfig.hpp.3283725D56F161D1.idx | Bin 0 -> 364 bytes .../PowerLinkWidget.cpp.481D6AFA808A3AE1.idx | Bin 9130 -> 9286 bytes .../PowerNodeWidget.cpp.D068C7972720D9A3.idx | Bin 15096 -> 15184 bytes .../WidgetConfig.hpp.CAEFE2EEEB2A6996.idx | Bin 22286 -> 22718 bytes .../index/Wifi.cpp.C29FF4A35AE66387.idx | Bin 12880 -> 15184 bytes .../index/Wifi.hpp.162A78F89BACD645.idx | Bin 2876 -> 3104 bytes .../index/main.cpp.7C677863E2582AB3.idx | Bin 8640 -> 8738 bytes main/WidgetConfig.cpp | 42 ++++++ main/WidgetConfig.hpp | 12 +- main/WidgetManager.cpp | 44 ++++++ main/widgets/ChartWidget.cpp | 85 ++++++++---- main/widgets/ChartWidget.hpp | 1 + .../widgets/elements/ChartElement.vue | 128 ++++++++++++++++-- .../widgets/settings/ChartSettings.vue | 10 ++ web-interface/src/constants.js | 10 ++ web-interface/src/utils.js | 10 ++ 23 files changed, 304 insertions(+), 38 deletions(-) create mode 100644 .cache/clangd/index/NetworkConfig.cpp.28689B151DE5324A.idx create mode 100644 .cache/clangd/index/NetworkConfig.hpp.3283725D56F161D1.idx diff --git a/.cache/clangd/index/ChartWidget.cpp.344F8561CCF752B4.idx b/.cache/clangd/index/ChartWidget.cpp.344F8561CCF752B4.idx index 2cf07f510ce3c421b630680062a6184298f66af9..8b9561afaa1b76f1a17a846d1c111c85ec28ad49 100644 GIT binary patch literal 7808 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 Rk_69!%b)?A1E2*E{trsyAF}`e literal 6254 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 diff --git a/.cache/clangd/index/Eth.hpp.08D328E5C3BAEBCA.idx b/.cache/clangd/index/Eth.hpp.08D328E5C3BAEBCA.idx index 5c6c14ae8b697a753241c09fc92ae7c06e2fa362..768d8123c48ddb820c19237beb538a4adf0d6e7f 100644 GIT binary patch literal 1786 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 TYY2p=!CjmOcLw0h9p3){Sw_+j literal 19088 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 delta 6004 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 CKdHR{ diff --git a/.cache/clangd/index/LabelWidget.cpp.86E5A1BF3C34B7BC.idx b/.cache/clangd/index/LabelWidget.cpp.86E5A1BF3C34B7BC.idx index 9261bf63bde6648c4ff78d87053520a0d52c089a..1f0568e0be690a18e2bdb7f4fd9294c8807fce46 100644 GIT binary patch delta 3443 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 YIBSrY2cfFMFI{5JmDsalbXP+E1IxhX7ytkO delta 3289 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 diff --git a/.cache/clangd/index/NetworkConfig.cpp.28689B151DE5324A.idx b/.cache/clangd/index/NetworkConfig.cpp.28689B151DE5324A.idx new file mode 100644 index 0000000000000000000000000000000000000000..e360a0454028a16e9c4373167c150c3b82420612 GIT binary patch literal 7476 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 YQzRtimM#+|iCqHsKohtOKr6uh2h%hGlK=n! literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/NetworkConfig.hpp.3283725D56F161D1.idx b/.cache/clangd/index/NetworkConfig.hpp.3283725D56F161D1.idx new file mode 100644 index 0000000000000000000000000000000000000000..7c4e4ebe24781ebf21f30ff86a2ca3587135a08f GIT binary patch literal 364 zcmWIYbaP8#WMFVk@vO*AElFfyU|eke8EFH!bJNx3{h~p|-s8XV{G&^*o*Vsl?;ruGJBN*ExNkOi%WED3YEy z_c$NJF%f}NGn&#SoR~84W~7E@W!sw@HfF2bmPzexE#DTsGNm}M_tw_j&HrE4Z0ni_)`Hu2N6|{2`t9I$|k@j z!@vRI6s4vW>j9ZCa~QcG`XRCmFx`xtU|ld(MX5Q7AQi<$$;ILz2J2Sap9f_-J>M|0 JFn|IS3IGhJckKWG literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/PowerLinkWidget.cpp.481D6AFA808A3AE1.idx b/.cache/clangd/index/PowerLinkWidget.cpp.481D6AFA808A3AE1.idx index a2db5f9e9de4e7d06534483ad82cd2b7adc16274..4f8cbbc9e091926a73f638a5b69c48cdd49ee23d 100644 GIT binary patch delta 2320 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 diff --git a/.cache/clangd/index/WidgetConfig.hpp.CAEFE2EEEB2A6996.idx b/.cache/clangd/index/WidgetConfig.hpp.CAEFE2EEEB2A6996.idx index 7522493f2367914f0b6ea4c47c01785d2c619031..f0b4664df3658723cfaa2a4723f8f646aa465486 100644 GIT binary patch literal 22718 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�G#Jp&0K&d3&l&43RWGa6ySmjNF!Wz-MCl);4C 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 literal 12880 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 UuOJvI%_@X4REsGB6t5Eh2hk+1=>Px# diff --git a/.cache/clangd/index/Wifi.hpp.162A78F89BACD645.idx b/.cache/clangd/index/Wifi.hpp.162A78F89BACD645.idx index b7814ed55b81e611704847a21dcbb83e3c4e62c3..3e7adff3fc57776d526f28e88064261e2a3499a3 100644 GIT binary patch literal 3104 zcmYk84OA0X7RM)#5Hd+fCLfazAt4eFFcOl;SNISXiGa))r6{MO{>sMMY|nx+tKv(1mgoR%$sEIm(`Tr2A&{LUT?oZ|?uz`{v#E z-j6JaTd+VaB8d5`;|kW<^Hy;Qf{^2HZk{7^l0y&&oe83#tTm~BLywty8r60Eo4u~_ zF+KD7t4bPqA0}Q5X+IP2Q+ihWysM4PTODfs()g~V%=a&}zdvu=gmIo@#g@V21vOQd zjxOCZKBzU^bh;m(v!XsWap{Bl@;jHxLgJI_j`>w|*BSziKL@BvK8HBl{zXjt%M_&>3)b&SvEcR+_7FW61kIWgp|IVEy!|(N_oKnlLJ(E^A zm6c|VhouT@0yb8Zet)ZhqpvKvElv3ynLli}Qr>(cf3NW49|K!>u$ z1chd~;KPAGw49W?68skrJA3mh_cc%O#Av1qL5EAjRjdJdLEftIm*!A91AeBk8JSn{KabP9PxwvjY?fE>5MsmfiFjBxa1DIcfLwp_jm$Tr-^rqoFBI34`WYZ^IU%^! z$s2LVkPc*tRH6a7tIhL9n)9L$D5M5iO{v{M_BiXcb@6D=VKEZoxdW&Gch-R1k#WYW z!%%sKLK?`{2sJX0pJvssDe@CFQOFBqH_}Z3vYg;ZSN89}P9X!x?xedC)*iHdXg+*QUP4A83TI96B@9#2S!& z?>2AUbR)W#LhevpN=m2h$?hc2jNszKKZ%hK&bEYFVp#*(Rg3h3*s;O;6!L&1VbxTvx+U=mg-FO&kO~T9+7#GgiSBtyAw9^m$=NeOcG%y}O~(HzfD;^iJux5P zW+x@cd>)oYI6H}G`7HSyh!W9SQY(QAD55Ry7EfqVe{*)um8uXPM?{Bn!zDl%_{$Nn zgn6g5epz+qNjbvv`pYAy=d~Ctb73Y3c6o`N7f2&Sv_vS8z$Fr~HxEKZ z?0Njdlf+97hgL*;bG`Y{ZTvLDTL(`7GTa^pU{D}#ZQJ?$kCyu3wJMSoYhWvYYj{x% z)F2vohTROz!0lwbb)vZB%Me_|%rz?^>fn>|ngh!_A`nRnU4-<@#o^V-v@#5eFRtK;meIjt~uC#8c`q5W!uN_eth(`EMI= z5g%WlP*@IZF^*>V2+{np!ITTHug&M;vm=+gO`jdTUhfMt;4@2Fq;Qf%w3W0<;hF+q zaa{(iQ1=ZowrQQ6`ovj8t4Ngunkk~yq*?+w_-4>rH`o>tt+VJt09+zEfDDiTpUb}J zIwZV#@Uc;GYq?7a%eMtCkEHx23%t|gK2OBrm>sBGq~ZTe!&g+#nB9V!425OZiczw2HfHz3}(R%`+=hw#)7-G?7t&1 z+gb*2s{&1dR%jJa7Z+h@3(>HRxCnzx=} ahqCD*-ECW+_Mm;oCccCcE2T2Ig7`nDN`FKE literal 2876 zcmYk64OA4@6~|{DyTI&>yR*A*KUrXxMZT8Zz!v$i^3fO&gG$msRE$BuRcWCb;50-j zD)BTGiNp|(=C~S#7#b7^AQ+;kXb?$CuzEret0^i}j#9*=aMGHzZ^m5cp0oG7`QQJ& z^X7g0e!Vm$C5ok}#p{=r7P?AuBosxd$-lUyD1V%$sC+3!mAZQ}`u7e;@Y7#D+^4@* z`+RErE`E5^89L|G%|oNZ>PL5m_Vw=SNY9SLFON4ge12@(`%`5{va2^jnOkz8P!!QZ!GQ}T>a`h^+l^6mt|%qpR;SrUj5y`Rj2Lz+0^iXuyd<2dkojw z|JhfN@?o2H{ij=Aa9^pLS?7^ATA@BZRf~Lw9<5&Gx=@qlbMVFIXPRi^bdxewePPg} zwkdzhSLS~iT{8|}y2Bc=;O(-<2}^4t(|gBDoQCbC$G@vT*%-A%nsNL1cV|jg3{0O& z$TFO2yLk4EF#Xw%GcoCP9)`aq`dnXLlmG7YYwZmmmn?q}KD0x5=MQ_D>88}y^S25o z=&~)T2mIExt!?>hd?`C-9NmBMzqakK5g&oAN5F^xsjF-JW>w998^AVea=H6t!V8#Sd+fQ#=avqSU!;t^z9<#XQQJ zoC@+wDOrM&v^Txw$mB)gP$pC(21uXGT$tIk;tY*NYi%kNC%U{JT^gkiKAxO&ymj{ThN`H9g%Utm~Z69ZJA3w9oCD7rDkBO|Fkf!Gts z2OAmV?CNDN`Khz@@XaAPVn}@$6Q&je)bmYOu5Z2l*$oXsBpqdma)<%aA%o}3w|&V)v z7}f0BO|Ix)IP+uTm>dO@dPj&OMhsA&zq79<{?8XCcw{DNi_D@D1Ee*Ms7sMa!_z$S zhn)*zf-I0Oa&0K?BIt*^Pc!13hs&I?LKS>}-y*38hZRAJaBy+hz!(&8<2Y9mUvWM+zW96RO7@EW3 zl5j1!U|~pa0YJ0vqHVv7yEK+a+<~S*E1YTI5^)PO0yofzyi!0B$Uq_D7U%=AYx%Fb zcD8(!OL}W08X4SIfD&mU5DDA>BO(hV0vRAgdJE_Qc~8mS{P83I-b{L1L#(kdZ`cpw z7Dxnc@2Sz%oiA*9T|zcmt?-%KXp`9#0&gHkhOsMQ+d1rD97;InfHKloKp6A|gb`T) z7sxL$$z6pmey^0nYDTSq#pEz1CmC9i^QtlUz_xJM7-@_FC~(-u*c8A&_p$4T*#7QA zkb1JH;p&E1y#Z#Vw*WD4Q$?9!aym6r$0FiC~Dr^P%}4F%nem@Lw;_ErJruF94t9f;U!nh)9^|a^*_S) BL!STu diff --git a/.cache/clangd/index/main.cpp.7C677863E2582AB3.idx b/.cache/clangd/index/main.cpp.7C677863E2582AB3.idx index 749f9b7118472c0a9ee9f36d14ae3799e2c06959..8375adcdcf58dbb185e43f343be5fea97a4b2445 100644 GIT binary patch literal 8738 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 dEMaBmAaimp;};NQ! CHART_MAX_SERIES) seriesCount = CHART_MAX_SERIES; @@ -1861,6 +1871,16 @@ bool WidgetManager::updateConfigFromJson(const char* json) { w.isContainer = false; w.chartPeriod = static_cast(ChartPeriod::HOUR_1); w.chartSeriesCount = 1; + w.chartShowXLine = true; + w.chartShowYLine = true; + w.chartShowXLabels = true; + w.chartShowYLabels = true; + w.chartShowBg = true; + w.chartShowGrid = true; + w.chartLineWidth = 2; + w.chartPointCount = 120; + w.chartShowPoints = false; + w.chartPointSize = 4; for (size_t i = 0; i < CHART_MAX_SERIES; ++i) { w.chartKnxAddress[i] = 0; w.chartTextSource[i] = TextSource::KNX_DPT_TEMP; @@ -2151,6 +2171,30 @@ bool WidgetManager::updateConfigFromJson(const char* json) { w.chartPeriod = static_cast(periodVal); } + cJSON* showXLine = cJSON_GetObjectItem(chart, "showXLine"); + w.chartShowXLine = cJSON_IsBool(showXLine) ? cJSON_IsTrue(showXLine) : true; + cJSON* showYLine = cJSON_GetObjectItem(chart, "showYLine"); + w.chartShowYLine = cJSON_IsBool(showYLine) ? cJSON_IsTrue(showYLine) : true; + cJSON* showXLabels = cJSON_GetObjectItem(chart, "showXLabels"); + w.chartShowXLabels = cJSON_IsBool(showXLabels) ? cJSON_IsTrue(showXLabels) : true; + cJSON* showYLabels = cJSON_GetObjectItem(chart, "showYLabels"); + w.chartShowYLabels = cJSON_IsBool(showYLabels) ? cJSON_IsTrue(showYLabels) : true; + cJSON* showBg = cJSON_GetObjectItem(chart, "showBg"); + w.chartShowBg = cJSON_IsBool(showBg) ? cJSON_IsTrue(showBg) : true; + cJSON* showGrid = cJSON_GetObjectItem(chart, "showGrid"); + w.chartShowGrid = cJSON_IsBool(showGrid) ? cJSON_IsTrue(showGrid) : true; + cJSON* lineWidth = cJSON_GetObjectItem(chart, "lineWidth"); + w.chartLineWidth = cJSON_IsNumber(lineWidth) ? lineWidth->valueint : 2; + if (w.chartLineWidth == 0) w.chartLineWidth = 2; + cJSON* pointCount = cJSON_GetObjectItem(chart, "pointCount"); + w.chartPointCount = cJSON_IsNumber(pointCount) ? pointCount->valueint : 120; + if (w.chartPointCount < 10) w.chartPointCount = 10; + if (w.chartPointCount > 120) w.chartPointCount = 120; + cJSON* showPoints = cJSON_GetObjectItem(chart, "showPoints"); + w.chartShowPoints = cJSON_IsBool(showPoints) ? cJSON_IsTrue(showPoints) : false; + cJSON* pointSize = cJSON_GetObjectItem(chart, "pointSize"); + w.chartPointSize = cJSON_IsNumber(pointSize) ? pointSize->valueint : 4; + cJSON* series = cJSON_GetObjectItem(chart, "series"); if (cJSON_IsArray(series)) { uint8_t idx = 0; diff --git a/main/widgets/ChartWidget.cpp b/main/widgets/ChartWidget.cpp index 14daabf..b639a75 100644 --- a/main/widgets/ChartWidget.cpp +++ b/main/widgets/ChartWidget.cpp @@ -18,43 +18,55 @@ lv_obj_t* ChartWidget::create(lv_obj_t* parent) { lv_obj_set_size(obj_, width, height); lv_obj_clear_flag(obj_, LV_OBJ_FLAG_SCROLLABLE); - const int32_t yAxisWidth = 48; - const int32_t xAxisHeight = 26; + const bool hasYAxis = config_.chartShowYLine || config_.chartShowYLabels; + const bool hasXAxis = config_.chartShowXLine || config_.chartShowXLabels; + const int32_t yAxisWidth = hasYAxis ? 36 : 0; + const int32_t xAxisHeight = hasXAxis ? 24 : 0; + const int32_t topPad = 8; int32_t chartWidth = width - yAxisWidth; - int32_t chartHeight = height - xAxisHeight; + int32_t chartHeight = height - xAxisHeight - topPad; if (chartWidth < 20) chartWidth = 20; if (chartHeight < 20) chartHeight = 20; - yScale_ = lv_scale_create(obj_); - if (yScale_) { - lv_scale_set_mode(yScale_, LV_SCALE_MODE_VERTICAL_LEFT); - lv_scale_set_total_tick_count(yScale_, 5); - lv_scale_set_major_tick_every(yScale_, 1); - lv_scale_set_label_show(yScale_, true); - lv_scale_set_range(yScale_, 0, 100); - lv_obj_set_pos(yScale_, 0, 0); - lv_obj_set_size(yScale_, yAxisWidth, chartHeight); + if (hasYAxis) { + yScale_ = lv_scale_create(obj_); + if (yScale_) { + lv_scale_set_mode(yScale_, LV_SCALE_MODE_VERTICAL_LEFT); + lv_scale_set_total_tick_count(yScale_, 5); + lv_scale_set_major_tick_every(yScale_, 1); + lv_scale_set_label_show(yScale_, config_.chartShowYLabels); + lv_scale_set_range(yScale_, 0, 100); + lv_obj_set_pos(yScale_, 0, topPad); + lv_obj_set_size(yScale_, yAxisWidth, chartHeight); + } } - xScale_ = lv_scale_create(obj_); - if (xScale_) { - lv_scale_set_mode(xScale_, LV_SCALE_MODE_HORIZONTAL_BOTTOM); - lv_scale_set_label_show(xScale_, true); - lv_obj_set_pos(xScale_, yAxisWidth, chartHeight); - lv_obj_set_size(xScale_, chartWidth, xAxisHeight); + if (hasXAxis) { + xScale_ = lv_scale_create(obj_); + if (xScale_) { + lv_scale_set_mode(xScale_, LV_SCALE_MODE_HORIZONTAL_BOTTOM); + lv_scale_set_label_show(xScale_, config_.chartShowXLabels); + lv_obj_set_pos(xScale_, yAxisWidth, topPad + chartHeight); + lv_obj_set_size(xScale_, chartWidth, xAxisHeight); + } } chart_ = lv_chart_create(obj_); if (!chart_) { return obj_; } - lv_obj_set_pos(chart_, yAxisWidth, 0); + lv_obj_set_pos(chart_, yAxisWidth, topPad); lv_obj_set_size(chart_, chartWidth, chartHeight); lv_obj_clear_flag(chart_, LV_OBJ_FLAG_SCROLLABLE); lv_chart_set_type(chart_, LV_CHART_TYPE_LINE); - lv_chart_set_point_count(chart_, HistoryStore::CHART_POINT_COUNT); - lv_chart_set_div_line_count(chart_, 4, 6); + uint8_t pointCount = config_.chartPointCount; + if (pointCount < 10) pointCount = 10; + if (pointCount > HistoryStore::CHART_POINT_COUNT) pointCount = HistoryStore::CHART_POINT_COUNT; + pointCount_ = pointCount; + lv_chart_set_point_count(chart_, pointCount); + lv_chart_set_div_line_count(chart_, config_.chartShowGrid ? 4 : 0, + config_.chartShowGrid ? 6 : 0); uint8_t count = config_.chartSeriesCount; if (count > CHART_MAX_SERIES) count = CHART_MAX_SERIES; @@ -84,8 +96,23 @@ void ChartWidget::applyStyle() { if (chart_) { lv_obj_set_style_border_width(chart_, 0, 0); - lv_obj_set_style_pad_all(chart_, 6, 0); - lv_obj_set_style_line_width(chart_, 2, LV_PART_ITEMS); + lv_obj_set_style_pad_left(chart_, 2, 0); + lv_obj_set_style_pad_right(chart_, 4, 0); + lv_obj_set_style_pad_top(chart_, 4, 0); + lv_obj_set_style_pad_bottom(chart_, 4, 0); + uint8_t lw = config_.chartLineWidth; + if (lw == 0) lw = 2; + lv_obj_set_style_line_width(chart_, lw, LV_PART_ITEMS); + if (config_.chartShowPoints) { + uint8_t ps = config_.chartPointSize; + if (ps == 0) ps = 4; + lv_obj_set_style_size(chart_, ps, ps, LV_PART_INDICATOR); + } else { + lv_obj_set_style_size(chart_, 0, 0, LV_PART_INDICATOR); + } + if (!config_.chartShowBg) { + lv_obj_set_style_bg_opa(chart_, LV_OPA_TRANSP, 0); + } } const lv_color_t textColor = lv_color_make( @@ -96,12 +123,20 @@ void ChartWidget::applyStyle() { lv_obj_set_style_text_font(yScale_, axisFont, LV_PART_INDICATOR); lv_obj_set_style_bg_opa(yScale_, LV_OPA_TRANSP, 0); lv_obj_set_style_border_width(yScale_, 0, 0); + if (!config_.chartShowYLine) { + lv_obj_set_style_line_opa(yScale_, LV_OPA_TRANSP, LV_PART_MAIN); + lv_obj_set_style_line_opa(yScale_, LV_OPA_TRANSP, LV_PART_INDICATOR); + } } if (xScale_) { lv_obj_set_style_text_color(xScale_, textColor, LV_PART_INDICATOR); lv_obj_set_style_text_font(xScale_, axisFont, LV_PART_INDICATOR); lv_obj_set_style_bg_opa(xScale_, LV_OPA_TRANSP, 0); lv_obj_set_style_border_width(xScale_, 0, 0); + if (!config_.chartShowXLine) { + lv_obj_set_style_line_opa(xScale_, LV_OPA_TRANSP, LV_PART_MAIN); + lv_obj_set_style_line_opa(xScale_, LV_OPA_TRANSP, LV_PART_INDICATOR); + } } } @@ -127,9 +162,9 @@ void ChartWidget::refreshData() { config_.chartTextSource[i], static_cast(config_.chartPeriod), seriesData_[i].data(), - seriesData_[i].size()); + pointCount_); - for (size_t j = 0; j < seriesData_[i].size(); ++j) { + for (size_t j = 0; j < pointCount_; ++j) { int32_t value = seriesData_[i][j]; if (value == HistoryStore::NO_POINT) continue; if (!hasAny) { diff --git a/main/widgets/ChartWidget.hpp b/main/widgets/ChartWidget.hpp index 072f2bb..89bf17a 100644 --- a/main/widgets/ChartWidget.hpp +++ b/main/widgets/ChartWidget.hpp @@ -22,4 +22,5 @@ private: lv_obj_t* xScale_ = nullptr; lv_chart_series_t* series_[CHART_MAX_SERIES] = {}; std::array, CHART_MAX_SERIES> seriesData_ = {}; + uint8_t pointCount_ = HistoryStore::CHART_POINT_COUNT; }; diff --git a/web-interface/src/components/widgets/elements/ChartElement.vue b/web-interface/src/components/widgets/elements/ChartElement.vue index 369b427..38b0e3d 100644 --- a/web-interface/src/components/widgets/elements/ChartElement.vue +++ b/web-interface/src/components/widgets/elements/ChartElement.vue @@ -7,16 +7,42 @@ @touchstart.stop="$emit('drag-start', { id: widget.id, event: $event })" @click.stop="$emit('select')" > -
-
- {{ widget.text || 'Chart' }} +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + +
+
+
+
-
-
- - - - + +
+
+ {{ label }} +
@@ -45,10 +71,89 @@ const props = defineProps({ defineEmits(['select', 'drag-start', 'resize-start']); +const showXLine = computed(() => props.widget?.chart?.showXLine !== false); +const showYLine = computed(() => props.widget?.chart?.showYLine !== false); +const showXLabels = computed(() => props.widget?.chart?.showXLabels !== false); +const showYLabels = computed(() => props.widget?.chart?.showYLabels !== false); +const showBg = computed(() => props.widget?.chart?.showBg !== false); +const showGrid = computed(() => props.widget?.chart?.showGrid !== false); + +const showPoints = computed(() => props.widget?.chart?.showPoints === true); +const hasYAxis = computed(() => showYLine.value || showYLabels.value); +const hasXAxis = computed(() => showXLine.value || showXLabels.value); +const yAxisWidth = computed(() => hasYAxis.value ? Math.round(36 * props.scale) : 0); +const xAxisHeight = computed(() => hasXAxis.value ? Math.round(24 * props.scale) : 0); +const topPad = computed(() => Math.round(8 * props.scale)); +const axisFontSize = computed(() => Math.round(9 * props.scale)); +const lineWidth = computed(() => Math.max(1, props.widget?.chart?.lineWidth ?? 2)); +const pointDiameter = computed(() => Math.max(2, (props.widget?.chart?.pointSize ?? 4) * props.scale)); +const numPoints = computed(() => { + const pc = props.widget?.chart?.pointCount ?? 120; + // Scale down for preview (don't render 120 dots) + return Math.max(5, Math.min(pc, 20)); +}); + +const periodXLabels = { + 0: ['-60m', '-45m', '-30m', '-15m', '0'], + 1: ['-3h', '-2h', '-1h', '-30m', '0'], + 2: ['-5h', '-4h', '-3h', '-2h', '-1h', '0'], + 3: ['-12h', '-9h', '-6h', '-3h', '0'], + 4: ['-24h', '-18h', '-12h', '-6h', '0'], + 5: ['-30d', '-21d', '-14d', '-7d', '0'] +}; + +const xLabels = computed(() => { + const period = props.widget?.chart?.period ?? 0; + return periodXLabels[period] || periodXLabels[0]; +}); + +const yLabels = computed(() => ['100', '75', '50', '25', '0']); + +const defaultColors = ['#EF6351', '#7DD3B0', '#5EA2EF']; + +const seriesColors = computed(() => { + const series = props.widget?.chart?.series ?? []; + return series.map((s, i) => s.color || defaultColors[i] || defaultColors[0]); +}); + +// Generate demo wave data per series +const seriesPaths = computed(() => { + const series = props.widget?.chart?.series ?? []; + const count = Math.max(1, Math.min(series.length, 3)); + const steps = numPoints.value; + const result = []; + for (let s = 0; s < count; s++) { + const linePoints = []; + const dots = []; + const phase = s * 2.2; + const amp = 12 + s * 4; + for (let i = 0; i <= steps; i++) { + const x = (i / steps) * 100; + const y = 25 + amp * Math.sin((i / steps) * Math.PI * 2.5 + phase) * 0.4; + const cx = clamp(x, 0, 100); + const cy = clamp(y, 2, 48); + linePoints.push(`${cx.toFixed(1)},${cy.toFixed(1)}`); + dots.push({ x: cx, y: (cy / 50) * 100 }); // map 0-50 viewBox to 0-100% + } + result.push({ line: linePoints.join(' '), dots }); + } + return result; +}); + +const allPoints = computed(() => { + const colors = seriesColors.value; + const pts = []; + seriesPaths.value.forEach((sp, si) => { + sp.dots.forEach(d => { + pts.push({ x: d.x, y: d.y, color: colors[si] || '#EF6351' }); + }); + }); + return pts; +}); + const computedStyle = computed(() => { const w = props.widget; const s = props.scale; - const style = getBaseStyle(w, s); if (w.bgOpacity > 0) { @@ -61,8 +166,7 @@ const computedStyle = computed(() => { } Object.assign(style, getBorderStyle(w, s)); - - style.padding = `${12 * s}px`; + style.padding = `${4 * s}px`; return style; }); diff --git a/web-interface/src/components/widgets/settings/ChartSettings.vue b/web-interface/src/components/widgets/settings/ChartSettings.vue index 6ddeb04..a59c223 100644 --- a/web-interface/src/components/widgets/settings/ChartSettings.vue +++ b/web-interface/src/components/widgets/settings/ChartSettings.vue @@ -15,6 +15,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/web-interface/src/constants.js b/web-interface/src/constants.js index 19f986e..41b18c5 100644 --- a/web-interface/src/constants.js +++ b/web-interface/src/constants.js @@ -434,6 +434,16 @@ export const WIDGET_DEFAULTS = { themeFixed: false, chart: { period: 0, + showXLine: true, + showYLine: true, + showXLabels: true, + showYLabels: true, + showBg: true, + showGrid: true, + lineWidth: 2, + pointCount: 120, + showPoints: false, + pointSize: 4, series: [ { knxAddr: 0, textSrc: 1, color: '#EF6351' } ] diff --git a/web-interface/src/utils.js b/web-interface/src/utils.js index 13669b0..28303a3 100644 --- a/web-interface/src/utils.js +++ b/web-interface/src/utils.js @@ -157,6 +157,16 @@ export function normalizeWidget(w, nextWidgetIdRef) { if (w.chart.period === undefined || w.chart.period === null) { w.chart.period = defaults.chart.period ?? 0; } + if (w.chart.showXLine === undefined) w.chart.showXLine = true; + if (w.chart.showYLine === undefined) w.chart.showYLine = true; + if (w.chart.showXLabels === undefined) w.chart.showXLabels = true; + if (w.chart.showYLabels === undefined) w.chart.showYLabels = true; + if (w.chart.showBg === undefined) w.chart.showBg = true; + if (w.chart.showGrid === undefined) w.chart.showGrid = true; + if (w.chart.lineWidth === undefined) w.chart.lineWidth = 2; + if (w.chart.pointCount === undefined) w.chart.pointCount = 120; + if (w.chart.showPoints === undefined) w.chart.showPoints = false; + if (w.chart.pointSize === undefined) w.chart.pointSize = 4; if (!Array.isArray(w.chart.series)) { w.chart.series = []; }