Fix tx diagram for zero value transactions
This commit is contained in:
		
							parent
							
								
									474b94f9af
								
							
						
					
					
						commit
						b608b66823
					
				@ -87,18 +87,21 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
 | 
			
		||||
        // assume confidential inputs/outputs have the same average value as the known ones
 | 
			
		||||
        const adjustedTotalInput = totalInput + ((totalInput / knownInputCount) * confidentialInputCount);
 | 
			
		||||
        const adjustedTotalOutput = totalOutput + ((totalOutput / knownOutputCount) * confidentialOutputCount);
 | 
			
		||||
        return Math.max(adjustedTotalInput, adjustedTotalOutput) || 1;
 | 
			
		||||
        return Math.max(adjustedTotalInput, adjustedTotalOutput);
 | 
			
		||||
      } else {
 | 
			
		||||
        // otherwise knowing the actual total of one side suffices
 | 
			
		||||
        return Math.max(totalInput, totalOutput) || 1;
 | 
			
		||||
        return Math.max(totalInput, totalOutput);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  initLines(side: 'in' | 'out', xputs: { type: string, value: number | void }[], total: number, maxVisibleStrands: number): SvgLine[] {
 | 
			
		||||
    const lines = [];
 | 
			
		||||
    if (!total) {
 | 
			
		||||
      const weights = xputs.map((put): number => this.combinedWeight / xputs.length);
 | 
			
		||||
      return this.linesFromWeights(side, xputs, weights, maxVisibleStrands);
 | 
			
		||||
    } else {
 | 
			
		||||
      let unknownCount = 0;
 | 
			
		||||
    let unknownTotal = total == null ? this.combinedWeight : total;
 | 
			
		||||
      let unknownTotal = total;
 | 
			
		||||
      xputs.forEach(put => {
 | 
			
		||||
        if (put.value == null) {
 | 
			
		||||
          unknownCount++;
 | 
			
		||||
@ -107,9 +110,14 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
      const unknownShare = unknownTotal / unknownCount;
 | 
			
		||||
 | 
			
		||||
      // conceptual weights
 | 
			
		||||
      const weights = xputs.map((put): number => this.combinedWeight * (put.value == null ? unknownShare : put.value as number) / total);
 | 
			
		||||
      return this.linesFromWeights(side, xputs, weights, maxVisibleStrands);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  linesFromWeights(side: 'in' | 'out', xputs: { type: string, value: number | void }[], weights: number[], maxVisibleStrands: number) {
 | 
			
		||||
    const lines = [];
 | 
			
		||||
    // actual displayed line thicknesses
 | 
			
		||||
    const minWeights = weights.map((w) => Math.max(this.minWeight - 1, w) + 1);
 | 
			
		||||
    const visibleStrands = Math.min(maxVisibleStrands, xputs.length);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user