mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
statistics: add a sort mode for categorical bar charts
This was a user request: Sort bar charts by height of the bars. Obviously, this can only work for categorical charts, not for histograms. The UI is a break from the old concept: the sorting is chosen based on the chart, whereas for the rest of the features, the viable charts are presented based on the binning, etc. I found it confusing to have the possible charts be selected based on sorting. I.e. if a non-bin sort mode is selected, the histogram charts disappear. On the flip side, this would be more consistent. We can change it later. For value-based bar charts, there are three sort modes: by bin, by count (i.e. number of dives in that bar) and by value (i.e. length of the bar). This hopefully satisfies all needs. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
f76752ee03
commit
1e5191e33e
10 changed files with 137 additions and 21 deletions
|
|
@ -36,6 +36,12 @@ enum class ChartSubType {
|
|||
Count
|
||||
};
|
||||
|
||||
enum class ChartSortMode {
|
||||
Bin = 0, // Sort according to the binner (i.e. don't change sorting)
|
||||
Count, // Sort by number of dives in the bin
|
||||
Value // Sort by the displayed value of the bin
|
||||
};
|
||||
|
||||
struct ChartTypeDesc; // Internal implementation detail
|
||||
struct StatsVariable;
|
||||
struct StatsBinner;
|
||||
|
|
@ -84,6 +90,9 @@ public:
|
|||
std::vector<Feature> features;
|
||||
BinnerList binners1;
|
||||
BinnerList binners2;
|
||||
// Currently, only alternative sorting on the first variable.
|
||||
// Sort mode reuses the variable list - not very nice.
|
||||
VariableList sortMode1;
|
||||
// Currently, operations are only supported on the second variable
|
||||
// This reuses the variable list - not very nice.
|
||||
VariableList operations2;
|
||||
|
|
@ -97,6 +106,7 @@ public:
|
|||
void binner1Changed(int id);
|
||||
void binner2Changed(int id);
|
||||
void var2OperationChanged(int id);
|
||||
void sortMode1Changed(int id);
|
||||
void featureChanged(int id, bool state);
|
||||
|
||||
const StatsVariable *var1; // Independent variable
|
||||
|
|
@ -113,6 +123,7 @@ public:
|
|||
const StatsBinner *var1Binner; // nullptr: undefined
|
||||
const StatsBinner *var2Binner; // nullptr: undefined
|
||||
StatsOperation var2Operation;
|
||||
ChartSortMode sortMode1;
|
||||
private:
|
||||
void validate(bool varChanged);
|
||||
int chartFeatures;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue