Ejemplo n.º 1
0
    public HistoryViewModel(WalletViewModel walletViewModel, IObservable <Unit> updateTrigger)
    {
        _walletViewModel        = walletViewModel;
        _updateTrigger          = updateTrigger;
        _transactionSourceList  = new SourceList <HistoryItemViewModelBase>();
        _transactions           = new ObservableCollectionExtended <HistoryItemViewModelBase>();
        _unfilteredTransactions = new ObservableCollectionExtended <HistoryItemViewModelBase>();

        this.WhenAnyValue(x => x.UnfilteredTransactions.Count)
        .Subscribe(x => IsTransactionHistoryEmpty = x <= 0);

        _transactionSourceList
        .Connect()
        .ObserveOn(RxApp.MainThreadScheduler)
        .Sort(SortExpressionComparer <HistoryItemViewModelBase>
              .Ascending(x => x.IsConfirmed)
              .ThenByDescending(x => x.OrderIndex))
        .Bind(_unfilteredTransactions)
        .Bind(_transactions)
        .Subscribe();

        // [Column]			[View]						[Header]		[Width]		[MinWidth]		[MaxWidth]	[CanUserSort]
        // Indicators		IndicatorsColumnView		-				Auto		80				-			true
        // Date				DateColumnView				Date / Time		Auto		150				-			true
        // Labels			LabelsColumnView			Labels			*			75				-			true
        // Incoming			IncomingColumnView			Incoming (BTC)	Auto		145				210			true
        // Outgoing			OutgoingColumnView			Outgoing (BTC)	Auto		145				210			true
        // Balance			BalanceColumnView			Balance (BTC)	Auto		145				210			true

        // NOTE: When changing column width or min width please also change HistoryPlaceholderPanel column widths.

        Source = new HierarchicalTreeDataGridSource <HistoryItemViewModelBase>(_transactions)
        {
            Columns =
            {
                // Indicators
                new HierarchicalExpanderColumn <HistoryItemViewModelBase>(
                    new TemplateColumn <HistoryItemViewModelBase>(
                        null,
                        new FuncDataTemplate <HistoryItemViewModelBase>((node,ns) => new IndicatorsColumnView(),  true),
                        options: new ColumnOptions <HistoryItemViewModelBase>
                {
                    CanUserResizeColumn = false,
                    CanUserSortColumn   = true,
                    CompareAscending    = HistoryItemViewModelBase.SortAscending(x => x.IsCoinJoin),
                    CompareDescending   = HistoryItemViewModelBase.SortDescending(x => x.IsCoinJoin),
                    MinWidth            = new GridLength(80,                  GridUnitType.Pixel)
                },
                        width: new GridLength(0,                              GridUnitType.Auto)),
                    x => x.Children,
                    x =>
                {
                    if (x is CoinJoinsHistoryItemViewModel coinJoinsHistoryItemViewModel &&
                        coinJoinsHistoryItemViewModel.CoinJoinTransactions.Count > 1)
                    {
                        return(true);
                    }

                    return(false);
                },
 public virtual void Update(HistoryItemViewModelBase item)
 {
     OrderIndex  = item.OrderIndex;
     Date        = item.Date;
     DateString  = item.DateString;
     IsConfirmed = item.IsConfirmed;
 }
    public override void Update(HistoryItemViewModelBase item)
    {
        if (item is not CoinJoinsHistoryItemViewModel coinJoinHistoryItemViewModel)
        {
            throw new InvalidOperationException("Not the same type!");
        }

        CoinJoinTransactions = coinJoinHistoryItemViewModel.CoinJoinTransactions;
        UpdateAmount();

        base.Update(item);

        this.RaisePropertyChanged();
    }
 public bool IsSimilar(HistoryItemViewModelBase item) => Id == item.Id;