QueryTransactionStatus.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import React, { PureComponent } from 'react';
  2. import { QueryTransaction } from 'app/types/explore';
  3. import ElapsedTime from './ElapsedTime';
  4. function formatLatency(value) {
  5. return `${(value / 1000).toFixed(1)}s`;
  6. }
  7. interface QueryTransactionStatusItemProps {
  8. transaction: QueryTransaction;
  9. }
  10. class QueryTransactionStatusItem extends PureComponent<QueryTransactionStatusItemProps> {
  11. render() {
  12. const { transaction } = this.props;
  13. const className = transaction.done ? 'query-transaction' : 'query-transaction query-transaction--loading';
  14. return (
  15. <div className={className}>
  16. <div className="query-transaction__type">{transaction.resultType}:</div>
  17. <div className="query-transaction__duration">
  18. {transaction.done ? formatLatency(transaction.latency) : <ElapsedTime />}
  19. </div>
  20. </div>
  21. );
  22. }
  23. }
  24. interface QueryTransactionStatusProps {
  25. transactions: QueryTransaction[];
  26. }
  27. export default class QueryTransactionStatus extends PureComponent<QueryTransactionStatusProps> {
  28. render() {
  29. const { transactions } = this.props;
  30. return (
  31. <div className="query-transactions">
  32. {transactions.map((t, i) => (
  33. <QueryTransactionStatusItem key={`${t.rowIndex}:${t.resultType}`} transaction={t} />
  34. ))}
  35. </div>
  36. );
  37. }
  38. }