chart-fx
chart-fx copied to clipboard
ParameterMeasurement: Reuse Indicators for charts with multiple axes/renderers
If axes have multiple axes the DataSet measurements have to determine, which one belongs to the selected DataSet and generate the corresponding indicators. Until recently only the first global axes where used so it was impossible to have indicators/measurements for multiple renderers/axes. For now this is mitigated by disabling the re-use of indicators by default when more than 2 axes are present:
This intermediate solution has some limitations and drawbacks:
- ~There is no indication of which axis a marker belongs to~
- It is impossible to reuse existing markers on different DataSets for the same position.
~The proposed change is be to return the values for all axes of the same orientation as the indicator.~
- currently the data value is stored in the indicator
- should we store a value for each matching axis?
- what happens if the range of a single axis changes / new axes get added?
- irrelevant because of the next point
- acutally the ValueIndicator knows its axis, it is passed to it in the constructor and exposed via getAxis()
- we can filter axes to find the axis relevant for the dataSet
- this fact should be represented in the UI, e.g. by moving the indicator triangle into the corresponding axis?
New Problem: how to map DataSets to axes? A ChartMeasurement knows its DataSet(s), but not the axis which is used to render it.
- Iterate over all Renderers that contain the DataSet and get the axis for the required dimension, then filter Indicators for this axis.
- DataSets can be added to more than one Renderer, possibly with different axes
- rare case, just take the first matching axis? OTOH DataSetMeasurements always create a new axis (could probably be changed)
- What happens for Measurements with multiple DataSets?
- it should probably be enforced that they are using the same axis, at least for the one relevant to the indicators
filter for DataSet selector: disable all datasets whose renderer has the wrong axis in the dimension needend by the measurements filter for Indicator selector: disable all indicators which are not using the axis used by the dataset's renderer(s) validation method in Measurement::handle: check if there is only one axis for all renderers containing the dataset(s) and all indicators. If this is not the case, disable the measurement until it is reconfigured correctly.