Search in sources :

Example 1 with WalletTransactionsEntry

use of com.sparrowwallet.sparrow.wallet.WalletTransactionsEntry in project sparrow by sparrowwallet.

the class BalanceChart method update.

public void update(WalletTransactionsEntry walletTransactionsEntry) {
    setVisible(!walletTransactionsEntry.getChildren().isEmpty());
    balanceSeries.getData().clear();
    List<Data<Number, Number>> balanceDataList = getTransactionEntries(walletTransactionsEntry).map(entry -> (TransactionEntry) entry).filter(txEntry -> txEntry.getBlockTransaction().getHeight() > 0).map(txEntry -> new XYChart.Data<>((Number) txEntry.getBlockTransaction().getDate().getTime(), (Number) txEntry.getBalance(), txEntry)).collect(Collectors.toList());
    int size = balanceDataList.size() * 2;
    for (int i = 0; i < size; i += 2) {
        Data<Number, Number> data = balanceDataList.get(i);
        if (i + 1 < balanceDataList.size()) {
            Data<Number, Number> nextData = balanceDataList.get(i + 1);
            Data<Number, Number> interstitialData = new Data<>(nextData.getXValue(), data.getYValue(), null);
            balanceDataList.add(i + 1, interstitialData);
        } else {
            Date now = new Date();
            Data<Number, Number> interstitialData = new Data<>(now.getTime(), data.getYValue(), null);
            balanceDataList.add(interstitialData);
        }
    }
    if (!balanceDataList.isEmpty()) {
        long min = balanceDataList.stream().map(data -> data.getXValue().longValue()).min(Long::compare).get();
        long max = balanceDataList.stream().map(data -> data.getXValue().longValue()).max(Long::compare).get();
        DateAxisFormatter dateAxisFormatter = new DateAxisFormatter(max - min);
        NumberAxis xAxis = (NumberAxis) getXAxis();
        xAxis.setTickLabelFormatter(dateAxisFormatter);
    }
    balanceSeries.getData().addAll(balanceDataList);
    if (selectedEntry != null) {
        select(selectedEntry);
    }
}
Also used : NamedArg(javafx.beans.NamedArg) Wallet(com.sparrowwallet.drongo.wallet.Wallet) TransactionEntry(com.sparrowwallet.sparrow.wallet.TransactionEntry) Date(java.util.Date) Node(javafx.scene.Node) Set(java.util.Set) Config(com.sparrowwallet.sparrow.io.Config) Collectors(java.util.stream.Collectors) Entry(com.sparrowwallet.sparrow.wallet.Entry) ArrayList(java.util.ArrayList) BitcoinUnit(com.sparrowwallet.drongo.BitcoinUnit) List(java.util.List) Lists(com.google.common.collect.Lists) Stream(java.util.stream.Stream) WalletTransactionsEntry(com.sparrowwallet.sparrow.wallet.WalletTransactionsEntry) javafx.scene.chart(javafx.scene.chart) TransactionEntry(com.sparrowwallet.sparrow.wallet.TransactionEntry) Date(java.util.Date)

Example 2 with WalletTransactionsEntry

use of com.sparrowwallet.sparrow.wallet.WalletTransactionsEntry in project sparrow by sparrowwallet.

the class BalanceChart method getTransactionEntries.

private Stream<Entry> getTransactionEntries(WalletTransactionsEntry walletTransactionsEntry) {
    int total = walletTransactionsEntry.getChildren().size();
    if (walletTransactionsEntry.getChildren().size() <= MAX_VALUES) {
        return walletTransactionsEntry.getChildren().stream();
    }
    int bucketSize = total / MAX_VALUES;
    List<List<Entry>> buckets = Lists.partition(walletTransactionsEntry.getChildren(), bucketSize);
    List<Entry> reducedEntries = new ArrayList<>(MAX_VALUES);
    for (List<Entry> bucket : buckets) {
        long max = bucket.stream().mapToLong(entry -> Math.abs(entry.getValue())).max().orElse(0);
        Entry bucketEntry = bucket.stream().filter(entry -> entry.getValue() == max || entry.getValue() == -max).findFirst().orElseThrow();
        reducedEntries.add(bucketEntry);
    }
    return reducedEntries.stream();
}
Also used : TransactionEntry(com.sparrowwallet.sparrow.wallet.TransactionEntry) Entry(com.sparrowwallet.sparrow.wallet.Entry) WalletTransactionsEntry(com.sparrowwallet.sparrow.wallet.WalletTransactionsEntry) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List)

Aggregations

Entry (com.sparrowwallet.sparrow.wallet.Entry)2 TransactionEntry (com.sparrowwallet.sparrow.wallet.TransactionEntry)2 WalletTransactionsEntry (com.sparrowwallet.sparrow.wallet.WalletTransactionsEntry)2 ArrayList (java.util.ArrayList)2 List (java.util.List)2 Lists (com.google.common.collect.Lists)1 BitcoinUnit (com.sparrowwallet.drongo.BitcoinUnit)1 Wallet (com.sparrowwallet.drongo.wallet.Wallet)1 Config (com.sparrowwallet.sparrow.io.Config)1 Date (java.util.Date)1 Set (java.util.Set)1 Collectors (java.util.stream.Collectors)1 Stream (java.util.stream.Stream)1 NamedArg (javafx.beans.NamedArg)1 Node (javafx.scene.Node)1 javafx.scene.chart (javafx.scene.chart)1