mirror of
https://github.com/bisq-network/bisq.git
synced 2025-02-24 15:10:44 +01:00
Only calculate data for active series
This commit is contained in:
parent
67d76cda27
commit
320a2f8a1f
3 changed files with 76 additions and 28 deletions
|
@ -93,7 +93,7 @@ public abstract class ChartModel extends ActivatableViewModel {
|
|||
|
||||
protected abstract TemporalAdjuster getTemporalAdjuster();
|
||||
|
||||
Predicate<Long> getPredicate() {
|
||||
public Predicate<Long> getPredicate() {
|
||||
return predicate;
|
||||
}
|
||||
|
||||
|
|
|
@ -85,6 +85,7 @@ public abstract class ChartView<T extends ChartModel> extends ActivatableView<VB
|
|||
private final List<Node> dividerNodes = new ArrayList<>();
|
||||
private final Double[] dividerPositions = new Double[]{0d, 1d};
|
||||
private final ToggleGroup timeUnitToggleGroup = new ToggleGroup();
|
||||
protected final Set<String> activeSeries = new HashSet<>();
|
||||
private boolean pressed;
|
||||
private double x;
|
||||
private ChangeListener<Number> widthListener;
|
||||
|
@ -104,7 +105,8 @@ public abstract class ChartView<T extends ChartModel> extends ActivatableView<VB
|
|||
xAxis = getXAxis();
|
||||
yAxis = getYAxis();
|
||||
chart = getChart();
|
||||
addSeries();
|
||||
initSeries();
|
||||
addActiveSeries();
|
||||
HBox legendBox1 = getLegendBox(getSeriesForLegend1());
|
||||
Collection<XYChart.Series<Number, Number>> seriesForLegend2 = getSeriesForLegend2();
|
||||
HBox legendBox2 = null;
|
||||
|
@ -135,6 +137,8 @@ public abstract class ChartView<T extends ChartModel> extends ActivatableView<VB
|
|||
root.getChildren().addAll(timeIntervalBox, chart, box);
|
||||
}
|
||||
|
||||
protected abstract void addActiveSeries();
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Lifecycle
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -260,7 +264,7 @@ public abstract class ChartView<T extends ChartModel> extends ActivatableView<VB
|
|||
return chart;
|
||||
}
|
||||
|
||||
protected abstract void addSeries();
|
||||
protected abstract void initSeries();
|
||||
|
||||
protected HBox getLegendBox(Collection<XYChart.Series<Number, Number>> data) {
|
||||
HBox hBox = new HBox();
|
||||
|
@ -269,7 +273,7 @@ public abstract class ChartView<T extends ChartModel> extends ActivatableView<VB
|
|||
AutoTooltipSlideToggleButton toggle = new AutoTooltipSlideToggleButton();
|
||||
toggle.setMinWidth(200);
|
||||
toggle.setAlignment(Pos.TOP_LEFT);
|
||||
String seriesName = series.getName();
|
||||
String seriesName = getSeriesId(series);
|
||||
toggleBySeriesName.put(seriesName, toggle);
|
||||
toggle.setText(seriesName);
|
||||
toggle.setId("charts-legend-toggle" + seriesIndexMap.get(seriesName));
|
||||
|
@ -289,16 +293,22 @@ public abstract class ChartView<T extends ChartModel> extends ActivatableView<VB
|
|||
|
||||
private void onSelectLegendToggle(XYChart.Series<Number, Number> series, boolean isSelected) {
|
||||
if (isSelected) {
|
||||
chart.getData().add(series);
|
||||
activateSeries(series);
|
||||
} else {
|
||||
chart.getData().remove(series);
|
||||
activeSeries.remove(getSeriesId(series));
|
||||
}
|
||||
applySeriesStyles();
|
||||
applyTooltip();
|
||||
}
|
||||
|
||||
protected void activateSeries(XYChart.Series<Number, Number> series) {
|
||||
chart.getData().add(series);
|
||||
activeSeries.add(getSeriesId(series));
|
||||
}
|
||||
|
||||
protected void hideSeries(XYChart.Series<Number, Number> series) {
|
||||
toggleBySeriesName.get(series.getName()).setSelected(false);
|
||||
toggleBySeriesName.get(getSeriesId(series)).setSelected(false);
|
||||
onSelectLegendToggle(series, false);
|
||||
}
|
||||
|
||||
|
@ -336,7 +346,7 @@ public abstract class ChartView<T extends ChartModel> extends ActivatableView<VB
|
|||
model.applyTemporalAdjuster(temporalAdjuster);
|
||||
findToggleByTemporalAdjuster(temporalAdjuster)
|
||||
.map(e -> (TemporalAdjusterUtil.Interval) e.getUserData())
|
||||
.ifPresent(interval -> setDateFormatPatters(interval));
|
||||
.ifPresent(this::setDateFormatPatters);
|
||||
|
||||
updateData(model.getPredicate());
|
||||
}
|
||||
|
@ -414,7 +424,7 @@ public abstract class ChartView<T extends ChartModel> extends ActivatableView<VB
|
|||
protected void applySeriesStyles() {
|
||||
for (int index = 0; index < chart.getData().size(); index++) {
|
||||
XYChart.Series<Number, Number> series = chart.getData().get(index);
|
||||
int staticIndex = seriesIndexMap.get(series.getName());
|
||||
int staticIndex = seriesIndexMap.get(getSeriesId(series));
|
||||
Set<Node> lines = getNodesForStyle(series.getNode(), ".default-color%d.chart-series-line");
|
||||
Stream<Node> symbols = series.getData().stream().map(XYChart.Data::getNode)
|
||||
.flatMap(node -> getNodesForStyle(node, ".default-color%d.chart-line-symbol").stream());
|
||||
|
@ -450,6 +460,10 @@ public abstract class ChartView<T extends ChartModel> extends ActivatableView<VB
|
|||
.findAny();
|
||||
}
|
||||
|
||||
// We use the name as id as there is no other suitable data inside series
|
||||
protected String getSeriesId(XYChart.Series<Number, Number> series) {
|
||||
return series.getName();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Timeline navigation
|
||||
|
|
|
@ -175,36 +175,41 @@ public class DaoEconomyChartView extends ChartView<DaoEconomyChartModel> {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void addSeries() {
|
||||
protected void initSeries() {
|
||||
seriesTotalIssued = new XYChart.Series<>();
|
||||
seriesTotalIssued.setName(Res.get("dao.factsAndFigures.supply.totalIssued"));
|
||||
seriesIndexMap.put(seriesTotalIssued.getName(), 0);
|
||||
chart.getData().add(seriesTotalIssued);
|
||||
seriesIndexMap.put(getSeriesId(seriesTotalIssued), 0);
|
||||
|
||||
seriesTotalBurned = new XYChart.Series<>();
|
||||
seriesTotalBurned.setName(Res.get("dao.factsAndFigures.supply.totalBurned"));
|
||||
seriesIndexMap.put(seriesTotalBurned.getName(), 1);
|
||||
chart.getData().add(seriesTotalBurned);
|
||||
seriesIndexMap.put(getSeriesId(seriesTotalBurned), 1);
|
||||
|
||||
seriesCompensation = new XYChart.Series<>();
|
||||
seriesCompensation.setName(Res.get("dao.factsAndFigures.supply.compReq"));
|
||||
seriesIndexMap.put(seriesCompensation.getName(), 2);
|
||||
chart.getData().add(seriesCompensation);
|
||||
seriesIndexMap.put(getSeriesId(seriesCompensation), 2);
|
||||
|
||||
seriesReimbursement = new XYChart.Series<>();
|
||||
seriesReimbursement.setName(Res.get("dao.factsAndFigures.supply.reimbursement"));
|
||||
seriesIndexMap.put(seriesReimbursement.getName(), 3);
|
||||
chart.getData().add(seriesReimbursement);
|
||||
seriesIndexMap.put(getSeriesId(seriesReimbursement), 3);
|
||||
|
||||
seriesBsqTradeFee = new XYChart.Series<>();
|
||||
seriesBsqTradeFee.setName(Res.get("dao.factsAndFigures.supply.bsqTradeFee"));
|
||||
seriesIndexMap.put(seriesBsqTradeFee.getName(), 4);
|
||||
chart.getData().add(seriesBsqTradeFee);
|
||||
seriesIndexMap.put(getSeriesId(seriesBsqTradeFee), 4);
|
||||
|
||||
seriesProofOfBurn = new XYChart.Series<>();
|
||||
seriesProofOfBurn.setName(Res.get("dao.factsAndFigures.supply.proofOfBurn"));
|
||||
seriesIndexMap.put(seriesProofOfBurn.getName(), 5);
|
||||
chart.getData().add(seriesProofOfBurn);
|
||||
seriesIndexMap.put(getSeriesId(seriesProofOfBurn), 5);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addActiveSeries() {
|
||||
addSeries(seriesTotalIssued);
|
||||
addSeries(seriesTotalBurned);
|
||||
}
|
||||
|
||||
private void addSeries(XYChart.Series<Number, Number> series) {
|
||||
activeSeries.add(getSeriesId(series));
|
||||
chart.getData().add(series);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -233,15 +238,18 @@ public class DaoEconomyChartView extends ChartView<DaoEconomyChartModel> {
|
|||
xAxis.setUpperBound(model.getUpperBound().doubleValue());
|
||||
|
||||
updateOtherSeries(predicate);
|
||||
applyTooltip();
|
||||
|
||||
UserThread.execute(this::setTimeLineLabels);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateData(Predicate<Long> predicate) {
|
||||
if (activeSeries.contains(getSeriesId(seriesBsqTradeFee))) {
|
||||
seriesBsqTradeFee.getData().setAll(model.getBsqTradeFeeChartData(predicate));
|
||||
}
|
||||
if (activeSeries.contains(getSeriesId(seriesCompensation))) {
|
||||
seriesCompensation.getData().setAll(model.getCompensationChartData(predicate));
|
||||
}
|
||||
|
||||
updateOtherSeries(predicate);
|
||||
|
||||
|
@ -249,10 +257,36 @@ public class DaoEconomyChartView extends ChartView<DaoEconomyChartModel> {
|
|||
applySeriesStyles();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void activateSeries(XYChart.Series<Number, Number> series) {
|
||||
super.activateSeries(series);
|
||||
if (getSeriesId(series).equals(getSeriesId(seriesBsqTradeFee))) {
|
||||
seriesBsqTradeFee.getData().setAll(model.getBsqTradeFeeChartData(model.getPredicate()));
|
||||
} else if (getSeriesId(series).equals(getSeriesId(seriesCompensation))) {
|
||||
seriesCompensation.getData().setAll(model.getCompensationChartData(model.getPredicate()));
|
||||
} else if (getSeriesId(series).equals(getSeriesId(seriesProofOfBurn))) {
|
||||
seriesProofOfBurn.getData().setAll(model.getProofOfBurnChartData(model.getPredicate()));
|
||||
} else if (getSeriesId(series).equals(getSeriesId(seriesReimbursement))) {
|
||||
seriesReimbursement.getData().setAll(model.getReimbursementChartData(model.getPredicate()));
|
||||
} else if (getSeriesId(series).equals(getSeriesId(seriesTotalIssued))) {
|
||||
seriesTotalIssued.getData().setAll(model.getTotalIssuedChartData(model.getPredicate()));
|
||||
} else if (getSeriesId(series).equals(getSeriesId(seriesTotalBurned))) {
|
||||
seriesTotalBurned.getData().setAll(model.getTotalBurnedChartData(model.getPredicate()));
|
||||
}
|
||||
}
|
||||
|
||||
private void updateOtherSeries(Predicate<Long> predicate) {
|
||||
if (activeSeries.contains(getSeriesId(seriesProofOfBurn))) {
|
||||
seriesProofOfBurn.getData().setAll(model.getProofOfBurnChartData(predicate));
|
||||
}
|
||||
if (activeSeries.contains(getSeriesId(seriesReimbursement))) {
|
||||
seriesReimbursement.getData().setAll(model.getReimbursementChartData(predicate));
|
||||
}
|
||||
if (activeSeries.contains(getSeriesId(seriesTotalIssued))) {
|
||||
seriesTotalIssued.getData().setAll(model.getTotalIssuedChartData(predicate));
|
||||
}
|
||||
if (activeSeries.contains(getSeriesId(seriesTotalBurned))) {
|
||||
seriesTotalBurned.getData().setAll(model.getTotalBurnedChartData(predicate));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue