vitess.io/vitess@v0.16.2/web/vtadmin/src/components/ValidationResults.tsx (about)

     1  import React from 'react';
     2  import { vtctldata } from '../proto/vtadmin';
     3  
     4  interface Props {
     5      resultsByKeyspace?: {
     6          [k: string]: vtctldata.IValidateKeyspaceResponse;
     7      };
     8      resultsByShard?: vtctldata.ValidateShardResponse | vtctldata.ValidateVersionShardResponse;
     9      shard?: string;
    10  }
    11  
    12  const ValidationResults: React.FC<Props> = ({ resultsByKeyspace, resultsByShard, shard }) => {
    13      const hasShardResults = resultsByShard && resultsByShard.results.length > 0;
    14      return (
    15          <div className="text-left w-full">
    16              <table className="border-none bg-gray-100 ">
    17                  <thead>
    18                      <tr className="bg-gray-100">
    19                          {resultsByKeyspace && <th className="text-base text-black bg-gray-100">Keyspace</th>}
    20                          {resultsByKeyspace && <th className="text-base text-black bg-gray-100">Shard</th>}
    21                          <th className="text-base text-black bg-gray-100">Result</th>
    22                      </tr>
    23                  </thead>
    24                  <tbody>
    25                      {resultsByKeyspace &&
    26                          Object.entries(resultsByKeyspace).map(([keyspace, results]) => {
    27                              return (
    28                                  results.results_by_shard &&
    29                                  Object.entries(results.results_by_shard).map(([shard, results]) => (
    30                                      <tr className="p-1" key={`${keyspace}_${shard}_result`}>
    31                                          <td className="py-2">{keyspace}</td>
    32                                          <td className="py-2">{shard}</td>
    33                                          <td className="py-2">{results.results}</td>
    34                                      </tr>
    35                                  ))
    36                              );
    37                          })}
    38                      {hasShardResults && (
    39                          <>
    40                              {resultsByShard.results.map((r, i) => (
    41                                  <tr className="p-1" key={`${i}_result`}>
    42                                      <td className="py-2">{r}</td>
    43                                  </tr>
    44                              ))}
    45                          </>
    46                      )}
    47                      {!hasShardResults && (
    48                          <>
    49                              <tr className="p-1">
    50                                  <td className="py-10 italic text-center">No results</td>
    51                              </tr>
    52                          </>
    53                      )}
    54                  </tbody>
    55              </table>
    56          </div>
    57      );
    58  };
    59  
    60  export default ValidationResults;