From 43fa8efda76599abeabe318cd1609a3faeb99d15 Mon Sep 17 00:00:00 2001 From: DiTus Date: Sat, 21 Mar 2026 23:28:23 +0100 Subject: [PATCH] feat: Implement draggable Trendline Settings Panel with Shift+Click and TF layout fixes --- css/refined.css | 48 ++++++ ignore/line_settings.PNG | Bin 0 -> 15668 bytes ignore/text.PNG | Bin 0 -> 5876 bytes index.html | 152 ++++++++++++++++--- js/ui/chart.js | 5 +- js/ui/drawing-tools.js | 312 ++++++++++++++++++++++++++++++++++++++- 6 files changed, 485 insertions(+), 32 deletions(-) create mode 100644 ignore/line_settings.PNG create mode 100644 ignore/text.PNG diff --git a/css/refined.css b/css/refined.css index 2af2825..c3b5073 100644 --- a/css/refined.css +++ b/css/refined.css @@ -217,3 +217,51 @@ body { } } +/* Trendline Settings Panel */ +#trendlineSettingsPanel input[type=range] { + -webkit-appearance: none; + background: transparent; +} + +#trendlineSettingsPanel input[type=range]::-webkit-slider-thumb { + -webkit-appearance: none; + height: 12px; + width: 12px; + border-radius: 50%; + background: #ffffff; + cursor: pointer; + border: 2px solid #1a2333; + margin-top: -4px; +} + +#trendlineSettingsPanel input[type=range]::-webkit-slider-runnable-track { + width: 100%; + height: 4px; + cursor: pointer; + background: #2d3a4f; + border-radius: 2px; +} + +.color-swatch { + width: 20px; + height: 20px; + border-radius: 3px; + cursor: pointer; + border: 1px solid transparent; + transition: transform 0.1s, border-color 0.1s; +} + +.color-swatch:hover { + transform: scale(1.1); + border-color: #ffffff; +} + +.color-swatch.active { + border-color: #ffffff; + box-shadow: 0 0 0 1px #ffffff; +} + +.tl-thickness-btn[data-active="true"], +.tl-style-btn[data-active="true"] { + background-color: #2d3a4f; +} diff --git a/ignore/line_settings.PNG b/ignore/line_settings.PNG new file mode 100644 index 0000000000000000000000000000000000000000..1f7dabe4fe150f38d3e9e7a53088bc70fb19696d GIT binary patch literal 15668 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 literal 0 HcmV?d00001 diff --git a/ignore/text.PNG b/ignore/text.PNG new file mode 100644 index 0000000000000000000000000000000000000000..887eeb885eee8efc45a8517717da7b42d189ebb9 GIT binary patch literal 5876 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 n!o7VKOUGhQ0YJC1B menu - + - +
search @@ -67,7 +67,7 @@ chevron_right
- + - + - +
Loading analysis data...
@@ -304,7 +408,7 @@ close - +