check demand and supply for order limit count
This commit is contained in:
@@ -19,7 +19,6 @@ import ru.trader.view.support.Localization;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
@@ -39,7 +38,7 @@ public class OrdersController {
|
||||
private TableColumn<OrderModel, Long> maxCount;
|
||||
|
||||
@FXML
|
||||
private TableColumn<OfferModel, Double> curProfit;
|
||||
private TableColumn<OfferModel, Number> curProfit;
|
||||
|
||||
@FXML
|
||||
private TableColumn<OfferModel, Double> curDistance;
|
||||
@@ -56,7 +55,7 @@ public class OrdersController {
|
||||
tblBuyers.getSelectionModel().selectedItemProperty().addListener((v, o, n) -> setBuyer(n));
|
||||
curProfit.setCellValueFactory(param -> {
|
||||
OfferModel offer = param.getValue();
|
||||
return order !=null ? order.getProfit(offer) : new SimpleDoubleProperty(Double.NaN).asObject();
|
||||
return order !=null ? order.getProfit(offer) : new SimpleDoubleProperty(Double.NaN);
|
||||
});
|
||||
curDistance.setCellValueFactory(param -> {
|
||||
OfferModel offer = param.getValue();
|
||||
|
||||
@@ -3,6 +3,7 @@ package ru.trader.model;
|
||||
import javafx.beans.binding.Bindings;
|
||||
import javafx.beans.property.*;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
import ru.trader.core.Order;
|
||||
import ru.trader.graph.PathRoute;
|
||||
import ru.trader.model.support.ModelBindings;
|
||||
|
||||
@@ -45,7 +46,7 @@ public class OrderModel {
|
||||
|
||||
public OrderModel(OfferModel offer, double balance, long limit) {
|
||||
this(offer);
|
||||
this.max.setValue(Math.min(offer.getCount(), Math.min(limit, (long) Math.floor(balance / offer.getPrice()))));
|
||||
this.max.setValue(Order.getMaxCount(offer.getOffer(), balance, limit));
|
||||
}
|
||||
|
||||
PathRoute getPath() {
|
||||
@@ -131,8 +132,9 @@ public class OrderModel {
|
||||
return profitProperty().get();
|
||||
}
|
||||
|
||||
public ObservableValue<Double> getProfit(OfferModel buyer) {
|
||||
return buyer.priceProperty().subtract(offer.priceProperty()).multiply(Bindings.min(max, buyer.countProperty())).asObject();
|
||||
public ObservableValue<Number> getProfit(OfferModel buyer) {
|
||||
return Bindings.createDoubleBinding(() -> offer.getPrice() * Order.getMaxCount(offer.getOffer(), buyer.getOffer(), max.get()),
|
||||
buyer.priceProperty(), offer.priceProperty(), max, buyer.countProperty());
|
||||
}
|
||||
|
||||
public ReadOnlyDoubleProperty profitProperty() {
|
||||
|
||||
Reference in New Issue
Block a user