feat(select): solo --select axis mode, multi-stat, and mixed#173
Merged
Conversation
Phase A of solo --select axis mode: - Add KindStringArray; make --select repeatable via flagbag - Add SelectViews config field and ParseSelectViewFlag (2-3 cols, x/y/z) - Route grouped --select to cfg.Select (merge occurrences); solo to SelectViews - Gate auto-group/auto-detect when HasSelect is set - Add flagbag, select_view_spec, and NoExplicitGrouping tests
Port ResolveAxesTypes, IsMixedMode, MixedAxes and CSV/JSON mixed-mode parsers from feat/mixed-axis-scatter. When IsSelectAxisMode, use SelectViews[0] for axis placement; wire assembleDataset to emit mixed or value axes and auto-enable 3D for numeric xyz. Fix IsExplicitGrouping so empty GroupPattern does not block select axis mode.
Parse each solo --select view from a single csv/json read, assemble one Dataset per view with auto-names and per-view 3D auto-enable, and embed an array in HTML/JSON output when multiple views are present.
Wire __mixed_mode__ through the worker/pipeline for category X + value Y/Z scatter datasets. Add buildMixedModeChart, 2D/3D scatter option builders, settings field filtering, and regenerated embedded UI bundle.
Add design spec superseding mixed-axis --axes approach. Update bar, line, and scatter chart docs with three-role --select structure. Extend grouping guide with solo select axis mode and decision table. Add mode matrix to root command reference. Include region-metrics.csv example for mixed scatter.
- Enable bar/line (2D and 3D) for solo mixed-axis --select views
- Add trailing (Title) syntax for multi-stat chart-tab names; keep {} for axis labels
- Default multi-stat stat names to metric by dim instead of dim & metric
- Merge stats per row when repeatable --select shares the same dimension column
- Propagate dimension {label} to axes[].label in multi-stat datasets
- Document updated --select semantics in root, grouping, and scatter guides
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
…stats Collapse duplicate tabular rows in Go via CollapseDataPointsByKey and set preserveRows only for ungrouped csv/json so grouped bar charts keep one series per x category. UI transform expands collapsed stats[] for overlay scatter and wires stats panel columns through chartSeriesLabels.
Parallel act matrix jobs with --bind shared one data-input.txt and corrupted curl JSON before --json-path could parse it.
This reverts commit e3b4843.
… value boundary DispatchSelectMode propagates AxisType to the parser's local cfg copy, but ParseFunc passes Config by value so the mutation doesn't reach prepareData/assembleDataset. DatasetAxesForSelectView now falls back to inferring mixed-ness from DataPoint XAxis values when AxisType is empty, restoring the pre-refactor behavior. Added end-to-end integration test (ParseCSV → assembleDataset) as regression guard.
Drop accidentally committed .superpowers and docs/superpowers files and extend .gitignore so they stay untracked.
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
The existing superpowers pattern already ignores that folder anywhere in the tree; only .superpowers needs an explicit rule.
fahimfaisaal
marked this pull request as ready for review
June 29, 2026 15:27
Add targeted unit tests for axes inference fallback, tabular parsers, select-view flag edge cases, and CLI pipeline/flagbag branches that Codecov flagged as uncovered on PR #173.
Add follow-up tests for pipeline buildDataset branches, flagbag reset/seed, tabular edge cases, and csv/json kindFn error paths to push patch coverage above the Codecov threshold.
Cover repeatable --select ParseConfig branches, grouped duplicate detection, symbol fatal validation, and group slice soft-rule handling.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds repeatable solo
--selectaxis mode for CSV/JSON: value axes, mixed axes, and multi-stat views in one dataset. Also enables bar/line (2D and 3D) rendering for mixed-axis data.Highlights
--select x,y[,z]without grouping--select dim,metricflags merge into one dataset; chart tabs split bystat.type{}on dimension column →axes[].label(Title)→ chart-tab / stat type namemetric by dim(e.g.latency by region)DataPointperxAxisExample
Produces one point per row with multiple stats:
{ "xAxis": "West", "stats": [ { "type": "Tax by Region", "value": 1926.35 }, { "type": "Amount by Region", "value": 17226.69 } ] }Test plan
go test ./...uivitest (399 tests)