From b7c20cbf6365abd1ae590a014f85c05714f4b285 Mon Sep 17 00:00:00 2001 From: Bela Schaum Date: Wed, 27 Nov 2024 17:39:29 +0100 Subject: [PATCH 1/9] Fix fake-split --- CHANGELOG.md | 1 + src/chart/options/options.cpp | 6 +++++- test/e2e/tests/fixes.json | 2 +- test/e2e/tests/fixes/143.mjs | 6 ++++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f8061d278..b0d983aa5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Fixed - Fix align on fake-split charts +- Fix fake-split charts intermediate step jump. - Do not interpolate hiding/showing legend - Fix aggregator interface for 'set' channel parameter: - From now not accepted the same dimension on the same channel. diff --git a/src/chart/options/options.cpp b/src/chart/options/options.cpp index 674825d96..d0af932e3 100644 --- a/src/chart/options/options.cpp +++ b/src/chart/options/options.cpp @@ -139,7 +139,8 @@ void Options::intersection(const Options &other) bool Options::looksTheSame(const Options &other) const { if (channels.anyAxisSet() - && channels.at(Gen::ChannelId::label).isEmpty()) { + && channels.at(ChannelId::label).isEmpty() + && isSplit() == other.isSplit()) { auto thisCopy = *this; thisCopy.simplify(); @@ -155,6 +156,7 @@ bool Options::looksTheSame(const Options &other) const void Options::simplify() { // remove all dimensions, only used at the end of stack + auto split = isSplit(); auto &stackChannel = this->stackChannel(); auto dimensions = stackChannel.dimensions(); @@ -168,6 +170,8 @@ void Options::simplify() ++dim) { stackChannel.removeSeries(*dim); } + if (split && !stackChannel.hasDimension()) + stackChannel.addSeries(*dimensions.begin()); } bool Options::operator==(const Options &other) const diff --git a/test/e2e/tests/fixes.json b/test/e2e/tests/fixes.json index 90a3ab56d..976a918af 100644 --- a/test/e2e/tests/fixes.json +++ b/test/e2e/tests/fixes.json @@ -8,7 +8,7 @@ "refs": ["1732a49"] }, "143": { - "refs": ["fb8a740"] + "refs": ["c4c0253"] }, "144": { "refs": ["fde02e4"] diff --git a/test/e2e/tests/fixes/143.mjs b/test/e2e/tests/fixes/143.mjs index db662e8ba..aff6074c4 100644 --- a/test/e2e/tests/fixes/143.mjs +++ b/test/e2e/tests/fixes/143.mjs @@ -36,6 +36,12 @@ const testSteps = [ split: true }, { regroupStrategy: 'drilldown' } + ), + (chart) => + chart.animate( + { + y: ['Colors', 'Val'] + } ) ] From 961cf524c2431f068a6a341b35df611cf29e1578 Mon Sep 17 00:00:00 2001 From: Bela Schaum Date: Wed, 27 Nov 2024 17:47:24 +0100 Subject: [PATCH 2/9] fix src --- test/e2e/tests/fixes/143.mjs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/test/e2e/tests/fixes/143.mjs b/test/e2e/tests/fixes/143.mjs index aff6074c4..1bba8ef7a 100644 --- a/test/e2e/tests/fixes/143.mjs +++ b/test/e2e/tests/fixes/143.mjs @@ -12,6 +12,11 @@ const testSteps = [ type: 'dimension', values: ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'] }, + { + name: 'Letters2', + type: 'dimension', + values: ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b'] + }, { name: 'Val', type: 'measure', @@ -38,11 +43,9 @@ const testSteps = [ { regroupStrategy: 'drilldown' } ), (chart) => - chart.animate( - { - y: ['Colors', 'Val'] - } - ) + chart.animate({ + y: ['Colors', 'Letters2', 'Val'] + }) ] export default testSteps From ed8b43e56dc5176ee9648895def9b925d71c93ac Mon Sep 17 00:00:00 2001 From: Bela Schaum Date: Wed, 27 Nov 2024 18:17:04 +0100 Subject: [PATCH 3/9] Fix testcase hash --- test/e2e/tests/fixes.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/tests/fixes.json b/test/e2e/tests/fixes.json index 976a918af..d163c97b7 100644 --- a/test/e2e/tests/fixes.json +++ b/test/e2e/tests/fixes.json @@ -8,7 +8,7 @@ "refs": ["1732a49"] }, "143": { - "refs": ["c4c0253"] + "refs": ["82f3abf"] }, "144": { "refs": ["fde02e4"] From 84c5e0dd758e25fff8920076da78eca15649ce4f Mon Sep 17 00:00:00 2001 From: David Vegh Date: Thu, 28 Nov 2024 11:25:44 +0100 Subject: [PATCH 4/9] Fixed tutorial align range snippet --- docs/tutorial/align_range/02_b.js | 7 ++++++- docs/tutorial/align_range/03_b.js | 7 +------ test/e2e/tests/docs.json | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/tutorial/align_range/02_b.js b/docs/tutorial/align_range/02_b.js index aec3f6b80..aa3591dfd 100644 --- a/docs/tutorial/align_range/02_b.js +++ b/docs/tutorial/align_range/02_b.js @@ -1,5 +1,10 @@ chart.animate({ config: { - align: 'stretch' + align: 'stretch', + channels: { + y: { + labels: true + } + } } }) diff --git a/docs/tutorial/align_range/03_b.js b/docs/tutorial/align_range/03_b.js index 109368056..6166c47b9 100644 --- a/docs/tutorial/align_range/03_b.js +++ b/docs/tutorial/align_range/03_b.js @@ -1,10 +1,5 @@ chart.animate({ config: { - align: 'none', - channels: { - y: { - labels: true - } - } + align: 'none' } }) diff --git a/test/e2e/tests/docs.json b/test/e2e/tests/docs.json index 33dde8416..981272ea2 100644 --- a/test/e2e/tests/docs.json +++ b/test/e2e/tests/docs.json @@ -5,7 +5,7 @@ "refs": ["83f7b33"] }, "align_range": { - "refs": ["b3188f8"] + "refs": ["c4478ca"] }, "animation_control_keyframes": { "refs": ["ef161c7"] From 3db16a1a754c0d47e8742b61a41be79235305e7e Mon Sep 17 00:00:00 2001 From: Bela Schaum Date: Thu, 28 Nov 2024 11:27:54 +0100 Subject: [PATCH 5/9] Fix split chart intermediate steps --- CHANGELOG.md | 3 ++- src/chart/animator/animation.cpp | 2 +- src/chart/options/options.cpp | 15 ++++++------ test/e2e/test_cases/test_cases.json | 2 +- test/e2e/tests/fixes.json | 2 +- test/e2e/tests/fixes/143.mjs | 38 ++++++++++++++++++++++++----- 6 files changed, 45 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0d983aa5..1160e66de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,8 @@ ### Fixed - Fix align on fake-split charts -- Fix fake-split charts intermediate step jump. +- Drilldown on split chart is fade. +- Fix aggregate on split chart. - Do not interpolate hiding/showing legend - Fix aggregator interface for 'set' channel parameter: - From now not accepted the same dimension on the same channel. diff --git a/src/chart/animator/animation.cpp b/src/chart/animator/animation.cpp index 07f74a357..129dc31a9 100644 --- a/src/chart/animator/animation.cpp +++ b/src/chart/animator/animation.cpp @@ -128,7 +128,7 @@ void Animation::addKeyframe(const Gen::PlotPtr &next, auto begin = std::ref(intermediate0 ? intermediate0 : target); auto &&intermediate1Instant = - intermediate1 && strategy == RegroupStrategy::aggregate + intermediate1 && strategy != RegroupStrategy::fade && begin.get()->getOptions()->looksTheSame( *intermediate1->getOptions()); begin = intermediate1 ? std::ref(intermediate1) : begin; diff --git a/src/chart/options/options.cpp b/src/chart/options/options.cpp index d0af932e3..42a1aae94 100644 --- a/src/chart/options/options.cpp +++ b/src/chart/options/options.cpp @@ -111,7 +111,8 @@ Channels Options::shadowChannels() const &ch2 = shadow.at(ChannelId::noop); auto &&stacker : shadow.getDimensions({data(stackChannels), std::size_t{1} + secondary.has_value()})) { - ch1.removeSeries(stacker); + if (stackChannelType() != subAxisType() || !isSplit()) + ch1.removeSeries(stacker); ch2.removeSeries(stacker); } @@ -122,7 +123,7 @@ void Options::drilldownTo(const Options &other) { auto &stackChannel = this->stackChannel(); - if (this->split && !isSplit()) this->split = {}; + if (!isSplit() || !other.isSplit()) this->split = {}; for (auto &&dim : other.getChannels().getDimensions()) if (!getChannels().isSeriesUsed(dim)) @@ -134,13 +135,14 @@ void Options::intersection(const Options &other) for (auto &&dim : getChannels().getDimensions()) if (!other.getChannels().isSeriesUsed(dim)) getChannels().removeSeries(dim); + + split = {}; } bool Options::looksTheSame(const Options &other) const { if (channels.anyAxisSet() - && channels.at(ChannelId::label).isEmpty() - && isSplit() == other.isSplit()) { + && channels.at(ChannelId::label).isEmpty()) { auto thisCopy = *this; thisCopy.simplify(); @@ -155,8 +157,9 @@ bool Options::looksTheSame(const Options &other) const void Options::simplify() { + if (isSplit()) return; + // remove all dimensions, only used at the end of stack - auto split = isSplit(); auto &stackChannel = this->stackChannel(); auto dimensions = stackChannel.dimensions(); @@ -170,8 +173,6 @@ void Options::simplify() ++dim) { stackChannel.removeSeries(*dim); } - if (split && !stackChannel.hasDimension()) - stackChannel.addSeries(*dimensions.begin()); } bool Options::operator==(const Options &other) const diff --git a/test/e2e/test_cases/test_cases.json b/test/e2e/test_cases/test_cases.json index a0c916db4..1e2490c94 100644 --- a/test/e2e/test_cases/test_cases.json +++ b/test/e2e/test_cases/test_cases.json @@ -2453,7 +2453,7 @@ "refs": ["e5678fa"] }, "ww_noFade/wNoFade_Tests/Marker_transition_problem/area_column_time_sum": { - "refs": ["67ef3d7"] + "refs": ["727c6d5"] }, "ww_noFade/wNoFade_Tests/Marker_transition_problem/area_orientation": { "refs": ["8c0d580"] diff --git a/test/e2e/tests/fixes.json b/test/e2e/tests/fixes.json index d163c97b7..fd616844e 100644 --- a/test/e2e/tests/fixes.json +++ b/test/e2e/tests/fixes.json @@ -8,7 +8,7 @@ "refs": ["1732a49"] }, "143": { - "refs": ["82f3abf"] + "refs": ["95b9c83"] }, "144": { "refs": ["fde02e4"] diff --git a/test/e2e/tests/fixes/143.mjs b/test/e2e/tests/fixes/143.mjs index 1bba8ef7a..118014b97 100644 --- a/test/e2e/tests/fixes/143.mjs +++ b/test/e2e/tests/fixes/143.mjs @@ -29,23 +29,49 @@ const testSteps = [ data, config: { y: 'Colors', - x: 'Val' + x: 'Val', + split: true } }) }, (chart) => chart.animate( { - y: 'Val', - x: 'Letters', - split: true + y: ['Letters2', 'Val'], + x: 'Letters' }, { regroupStrategy: 'drilldown' } ), (chart) => chart.animate({ - y: ['Colors', 'Letters2', 'Val'] - }) + y: ['Letters2', 'Colors', 'Val'] + }, + { regroupStrategy: 'drilldown' } + ), + (chart) => chart.animate({ + config: { + y: 'Colors', + x: 'Val' + } + }), + (chart) => chart.animate({ + config: { + y: ['Letters2', 'Val'], + x: 'Letters', + } + }), + (chart) => chart.animate({ + y: ['Letters2', 'Val'] + }), + (chart) => chart.animate({ + y: ['Letters2', 'Colors', 'Val'] + }), + (chart) => chart.animate({ + config: { + y: ['Letters2', 'Colors'], + x: 'Val' + } + }) ] export default testSteps From 2708c4bd26da8d3a6d7b250ebf54b3ff02d986f1 Mon Sep 17 00:00:00 2001 From: Bela Schaum Date: Thu, 28 Nov 2024 11:43:53 +0100 Subject: [PATCH 6/9] Fix format --- test/e2e/tests/fixes/143.mjs | 60 ++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/test/e2e/tests/fixes/143.mjs b/test/e2e/tests/fixes/143.mjs index 118014b97..c564fb184 100644 --- a/test/e2e/tests/fixes/143.mjs +++ b/test/e2e/tests/fixes/143.mjs @@ -42,36 +42,42 @@ const testSteps = [ }, { regroupStrategy: 'drilldown' } ), + (chart) => + chart.animate( + { + y: ['Letters2', 'Colors', 'Val'] + }, + { regroupStrategy: 'drilldown' } + ), + (chart) => + chart.animate({ + config: { + y: 'Colors', + x: 'Val' + } + }), + (chart) => + chart.animate({ + config: { + y: ['Letters2', 'Val'], + x: 'Letters' + } + }), + (chart) => + chart.animate({ + y: ['Letters2', 'Val'] + }), (chart) => chart.animate({ y: ['Letters2', 'Colors', 'Val'] - }, - { regroupStrategy: 'drilldown' } - ), - (chart) => chart.animate({ - config: { - y: 'Colors', - x: 'Val' - } - }), - (chart) => chart.animate({ - config: { - y: ['Letters2', 'Val'], - x: 'Letters', - } - }), - (chart) => chart.animate({ - y: ['Letters2', 'Val'] - }), - (chart) => chart.animate({ - y: ['Letters2', 'Colors', 'Val'] - }), - (chart) => chart.animate({ - config: { - y: ['Letters2', 'Colors'], - x: 'Val' - } - }) + }), + (chart) => + chart.animate({ + config: { + y: ['Letters2', 'Colors'], + x: 'Val' + } + }) ] export default testSteps From e213742165773d376e934cca3b4e5dfe62b5b6f1 Mon Sep 17 00:00:00 2001 From: David Vegh Date: Thu, 28 Nov 2024 12:03:53 +0100 Subject: [PATCH 7/9] Set version to 0.16.0 --- .../workflows/docker-vizzu-dev-desktop.yml | 2 +- .github/workflows/docker-vizzu-dev-wasm.yml | 2 +- CHANGELOG.md | 2 ++ CONTRIBUTING.md | 4 +-- src/chart/main/version.cpp | 2 +- tools/ci/gcp/cloudbuild/cloudbuild.yaml | 26 +++++++++---------- 6 files changed, 20 insertions(+), 18 deletions(-) diff --git a/.github/workflows/docker-vizzu-dev-desktop.yml b/.github/workflows/docker-vizzu-dev-desktop.yml index 3dce230ce..f1d764790 100644 --- a/.github/workflows/docker-vizzu-dev-desktop.yml +++ b/.github/workflows/docker-vizzu-dev-desktop.yml @@ -24,6 +24,6 @@ jobs: - name: Build and Publish run: | IMAGE="vizzu-dev-desktop" - IMAGE_NAME="vizzu/$IMAGE:0.15" + IMAGE_NAME="vizzu/$IMAGE:0.16" docker build -t $IMAGE_NAME -f tools/ci/docker/$IMAGE . docker push $IMAGE_NAME diff --git a/.github/workflows/docker-vizzu-dev-wasm.yml b/.github/workflows/docker-vizzu-dev-wasm.yml index dfdb03bf5..6ca6b230a 100644 --- a/.github/workflows/docker-vizzu-dev-wasm.yml +++ b/.github/workflows/docker-vizzu-dev-wasm.yml @@ -24,6 +24,6 @@ jobs: - name: Build and Publish run: | IMAGE="vizzu-dev-wasm" - IMAGE_NAME="vizzu/$IMAGE:0.15" + IMAGE_NAME="vizzu/$IMAGE:0.16" docker build -t $IMAGE_NAME -f tools/ci/docker/$IMAGE . docker push $IMAGE_NAME diff --git a/CHANGELOG.md b/CHANGELOG.md index f8061d278..80eddefd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## [Unreleased] +## [0.16.0] - 2024-11-28 + ### Fixed - Fix align on fake-split charts diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3e54b0b7b..0475d862c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -70,7 +70,7 @@ docker run -i -t -v .:/workspace vizzu/vizzu-dev-desktop bash or you can use a specific version of the prebuilt image: ```sh -docker run -i -t -v .:/workspace vizzu/vizzu-dev-desktop:0.15 bash +docker run -i -t -v .:/workspace vizzu/vizzu-dev-desktop:0.16 bash ``` Run the following commands to build and run the `WASM` version's development @@ -84,7 +84,7 @@ docker run -i -t -v .:/workspace vizzu/vizzu-dev-wasm bash or you can use a specific version of the prebuilt image: ```sh -docker run -i -t -v .:/workspace vizzu/vizzu-dev-wasm:0.15 bash +docker run -i -t -v .:/workspace vizzu/vizzu-dev-wasm:0.16 bash ``` ### Building the project diff --git a/src/chart/main/version.cpp b/src/chart/main/version.cpp index 4541e656c..92ff16a63 100644 --- a/src/chart/main/version.cpp +++ b/src/chart/main/version.cpp @@ -2,6 +2,6 @@ #include "base/app/version.h" -const App::Version Vizzu::Main::version(0, 15, 0); +const App::Version Vizzu::Main::version(0, 16, 0); const char *const Vizzu::Main::siteUrl = "https://vizzu.io/"; diff --git a/tools/ci/gcp/cloudbuild/cloudbuild.yaml b/tools/ci/gcp/cloudbuild/cloudbuild.yaml index 9ddb85f09..f3d9ac60d 100644 --- a/tools/ci/gcp/cloudbuild/cloudbuild.yaml +++ b/tools/ci/gcp/cloudbuild/cloudbuild.yaml @@ -3,15 +3,15 @@ steps: id: pull_wasm waitFor: - '-' - args: ['pull', 'vizzu/vizzu-dev-wasm:0.15'] + args: ['pull', 'vizzu/vizzu-dev-wasm:0.16'] - name: 'gcr.io/cloud-builders/docker' id: pull_desktop waitFor: - '-' - args: ['pull', 'vizzu/vizzu-dev-desktop:0.15'] + args: ['pull', 'vizzu/vizzu-dev-desktop:0.16'] - - name: vizzu/vizzu-dev-wasm:0.15 + - name: vizzu/vizzu-dev-wasm:0.16 id: init waitFor: - pull_wasm @@ -24,7 +24,7 @@ steps: ./tools/ci/run/init-py.sh dir: /workspace - - name: vizzu/vizzu-dev-wasm:0.15 + - name: vizzu/vizzu-dev-wasm:0.16 id: check_src waitFor: - init @@ -41,7 +41,7 @@ steps: npm run lint:src fi dir: /workspace - - name: vizzu/vizzu-dev-wasm:0.15 + - name: vizzu/vizzu-dev-wasm:0.16 id: check_docs waitFor: - init @@ -58,7 +58,7 @@ steps: npm run lint:docs fi dir: /workspace - - name: vizzu/vizzu-dev-wasm:0.15 + - name: vizzu/vizzu-dev-wasm:0.16 id: check_tools waitFor: - init @@ -77,7 +77,7 @@ steps: fi dir: /workspace - - name: vizzu/vizzu-dev-desktop:0.15 + - name: vizzu/vizzu-dev-desktop:0.16 id: build_desktop_clangformat waitFor: - pull_desktop @@ -97,7 +97,7 @@ steps: fi dir: /workspace - - name: vizzu/vizzu-dev-desktop:0.15 + - name: vizzu/vizzu-dev-desktop:0.16 id: build_desktop_clangtidy waitFor: - build_desktop_clangformat @@ -113,7 +113,7 @@ steps: ./tools/ci/run/pkg-build-desktop-clangtidy.sh fi dir: /workspace - - name: vizzu/vizzu-dev-wasm:0.15 + - name: vizzu/vizzu-dev-wasm:0.16 id: build_wasm waitFor: - build_desktop_clangformat @@ -134,7 +134,7 @@ steps: ./tools/ci/run/pkg-build-js.sh dir: /workspace - - name: vizzu/vizzu-dev-wasm:0.15 + - name: vizzu/vizzu-dev-wasm:0.16 id: lib_sha waitFor: - build_wasm @@ -157,7 +157,7 @@ steps: fi dir: /workspace - - name: vizzu/vizzu-dev-wasm:0.15 + - name: vizzu/vizzu-dev-wasm:0.16 id: test waitFor: - lib_sha @@ -172,7 +172,7 @@ steps: fi dir: /workspace - - name: vizzu/vizzu-dev-wasm:0.15 + - name: vizzu/vizzu-dev-wasm:0.16 id: docs waitFor: - test @@ -215,7 +215,7 @@ steps: - VIZZUHQ_GITHUB_USER - VIZZUHQ_GITHUB_EMAIL - - name: vizzu/vizzu-dev-wasm:0.15 + - name: vizzu/vizzu-dev-wasm:0.16 id: publish waitFor: - docs From f14abbc311b1fc9853196214a123a55418b41e6a Mon Sep 17 00:00:00 2001 From: Bela Schaum Date: Thu, 28 Nov 2024 12:37:11 +0100 Subject: [PATCH 8/9] rearrange changelog --- CHANGELOG.md | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f2e167c2..517dac372 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,34 +10,37 @@ - Drilldown on split chart is fade. - Fix aggregate on split chart. - Do not interpolate hiding/showing legend -- Fix aggregator interface for 'set' channel parameter: +- Remove rare fantom empty marker space on scrollable legend. +- Same legend with different series are not interpolated. +- Different legend with same series are interpolated. +- Invisible axis labels are not draw. +- Fix chaotic axis labels on sorted chart with multiple dimension. +- Fix dimension axis guides on sorted chart. +- Fix NaN handling on axes and size measures other aggregators than sum. +- Do not draw dimension axis labels when the middle of the text is off the plot. + +### Changed + +- Mekko charts: The main axis handled as dimension. +- Change aggregator interface for 'set' channel parameter: - From now not accepted the same dimension on the same channel. - From now, it is prohibited to set multiple measure on one channel. - From now, it is prohibited to set only aggregator without series name. - Fix series parsing when aggregator comes first. - - Fix disappearing dimension when aggregated dimension was already set. -- Fix legend with multiple dimension duplicated markers: + - Fix disappearing dimension when aggregated dimension was already set. +- Change legend with multiple dimension duplicated markers: - Markers of color are never merged. - Markers of size are always merged. - Markers of lightness are only merged when labelLevel == 0. - When merge happens, the marker shows the middle value of lightness. -- Remove rare fantom empty marker space on scrollable legend. -- Same legend with different series are not interpolated. -- Different legend with same series are interpolated. -- Invisible axis labels are not draw. -- Fix chaotic axis labels on sorted chart with multiple dimension. -- Fix Mekko charts: The main axis handled as dimension. -- LabelLevel can be used to handle measure axis as dimension axis. -- Enable dimension axis ticks and interlacing. -- Enable measure axis guides. -- Fix dimension axis guides on sorted chart. -- Fix NaN handling on axes and size measures other aggregators than sum. -- Add meaning to crossing interlacing. -- Do not draw dimension axis labels when the middle of the text is off the plot. ### Added - Add spacing property for plot axis style structure. +- LabelLevel can be used to handle measure axis as dimension axis. +- Enable dimension axis ticks and interlacing. +- Enable measure axis guides. +- Add meaning to crossing interlacing. ## [0.15.0] - 2024-10-28 From 1a4dd74a31f97869d1d87975e222e9a625ee1c43 Mon Sep 17 00:00:00 2001 From: Bela Schaum Date: Thu, 28 Nov 2024 14:49:41 +0100 Subject: [PATCH 9/9] not serialize aggregator on dimension --- src/dataframe/old/datatable.cpp | 9 +++++++++ src/dataframe/old/types.h | 6 +----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/dataframe/old/datatable.cpp b/src/dataframe/old/datatable.cpp index 33ab6d87e..d3baca7cf 100644 --- a/src/dataframe/old/datatable.cpp +++ b/src/dataframe/old/datatable.cpp @@ -85,6 +85,15 @@ void SeriesIndex::setAggr(const std::string &aggr) aggregator = Refl::get_enum(aggr); } +std::string SeriesIndex::toJSON() const +{ + std::string res; + Conv::JSONObj obj{res}; + obj("name", name); + if (aggregator) obj("aggregator", Conv::toString(*aggregator)); + return res; +} + DataCube::iterator_t DataCube::begin() const { iterator_t res{this, diff --git a/src/dataframe/old/types.h b/src/dataframe/old/types.h index 3625277bb..5684a7c2c 100644 --- a/src/dataframe/old/types.h +++ b/src/dataframe/old/types.h @@ -69,11 +69,7 @@ class SeriesIndex [[nodiscard]] bool isDimension() const { return !aggregator; } - [[nodiscard]] consteval static auto members() - { - return std::tuple{&SeriesIndex::name, - &SeriesIndex::aggregator}; - } + [[nodiscard]] std::string toJSON() const; }; using SeriesList = Type::UniqueList;