File size: 1,651 Bytes
56b6519
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import { t } from 'i18next';
import React from 'react';
import { FaBug } from 'react-icons/fa';

import {
  Tooltip,
  TooltipContent,
  TooltipProvider,
  TooltipTrigger,
} from '../ui/tooltip';

type CWEItem = {
  id: string;
  size: number;
};

type Props = {
  items: CWEItem[];
  mostCommon: string;
};

export const CWECloud: React.FC<Props> = ({ items, mostCommon }) => {
  items = items.filter(item => item.id !== '');
  if (!items.length) {
    return (
      <p className="text-sm text-gray-500">{t('err.noMatchingRecords')}</p>
    );
  }

  return (
    <div className="bg-gray-900 rounded-lg p-4">
      <p className="text-sm text-gray-400 mb-4">
        {t('mostCommon')}: {mostCommon}
      </p>
      <div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-4">
        <TooltipProvider>
          {items.map(item => (
            <Tooltip key={item.id}>
              <TooltipTrigger>
                <div className="bg-gray-800 p-4 rounded-lg shadow-md flex items-center">
                  <FaBug className="text-red-500 mr-3" size={24} />
                  <div>
                    <p className="text-white text-lg font-semibold">
                      {item.id.split(' ')[0].replace(':', '')}
                    </p>
                    <p className="text-gray-400">
                      {t('occurrences')}: {item.size}
                    </p>
                  </div>
                </div>
              </TooltipTrigger>
              <TooltipContent>
                <p>{item.id}</p>
              </TooltipContent>
            </Tooltip>
          ))}
        </TooltipProvider>
      </div>
    </div>
  );
};