source: pages/forge/utils/RenderSpecs.tsx@ 1b5c18b

main
Last change on this file since 1b5c18b was 1b5c18b, checked in by Mihail <mihail2.naumov@…>, 5 months ago

Fixed specs displaying in the forge page and some scaling issues.

  • Property mode set to 100644
File size: 4.9 KB
RevLine 
[1b5c18b]1import {Chip, Typography} from '@mui/material';
[1d8f088]2import React from "react";
3
4export function renderSpecs(c: any, type: string) {
5 if (!c) return null;
6 const data = {...c, ...(c.details || {})};
7 const chipStyle = {height: 24, fontSize: '0.75rem', bgcolor: 'rgba(0,0,0,0.05)'};
8 const specs: string[] = [];
9 const val = (k: string) => data[k] || data[k.toLowerCase()] || data[k.replace('_', '')];
10
11 switch (type) {
[1b5c18b]12
[1d8f088]13 case 'cpu':
[1b5c18b]14 if (val('socket')) specs.push(`Socket: ${val('socket')}`);
[1d8f088]15 if (val('cores')) specs.push(`${val('cores')} Cores / ${val('threads')} Threads`);
16 const base = data.baseclock || data.baseClock || data.base_clock;
17 const boost = data.boostclock || data.boostClock || data.boost_clock;
[1b5c18b]18 if (base) specs.push(`Base Clock Speed: ${base}GHz`);
19 if (boost) specs.push(`Boost Clock Speed: ${boost}GHz`);
[1d8f088]20 break;
21 case 'gpu':
[1b5c18b]22 if (val('vram')) specs.push(`VRAM: ${val('vram')}GB`);
23 if (val('tdp')) specs.push(`Card TDP: ${val('tdp')}W`);
24 if (val('length')) specs.push(`Length: ${val('length')}mm`);
25 if (val('baseClock')) specs.push(`Base Clock Speed: ${val('baseClock')}GHz`);
26 if (val('boostClock')) specs.push(`Boost Clock Speed: ${val('boostClock')}GHz`);
[1d8f088]27 break;
28 case 'motherboard':
[1b5c18b]29 if (val('socket')) specs.push(`Socket: ${val('socket')}`);
30 if (val('formFactor')) specs.push(`Form Factor: ${val('formFactor')}`);
31 if (val('ramType')) specs.push(`RAM Type: ${val('ramType')}`);
32 if (val('numRamSlots')) specs.push(`RAM Slots: ${val('numRamSlots')}`);
33 if (val('maxRamCapacity')) specs.push(`Max Ram Caacity: ${val('maxRamCapacity')}GB`);
[1d8f088]34 break;
35 case 'memory':
[1b5c18b]36 if (val('capacity')) specs.push(`Size Per Stick: ${val('capacity')}GB`);
37 if (val('type')) specs.push(`RAM Type: ${val('type')}`);
38 if (val('speed')) specs.push(`RAM Speed: ${val('speed')} MHz`);
39 if (val('modules')) specs.push(`Modules: ${val('modules')}`);
[1d8f088]40 break;
41 case 'storage':
[1b5c18b]42 if (val('capacity')) specs.push(`Capacity: ${val('capacity')}GB`);
43 if (val('type')) specs.push(`Type: ${val('type')}`);
[1d8f088]44 break;
45 case 'power_supply':
46 if (val('wattage')) specs.push(`Wattage: ${val('wattage')}W`);
[1b5c18b]47 if (val('type')) specs.push(`Type: ${val('type')}`);
48 if (val('formFactor')) specs.push(`Form Factor: ${val('formFactor')}`);
[1d8f088]49 break;
50 case 'case':
51 if (val('gpuMaxLength')) specs.push(`Max GPU Length: ${val('gpuMaxLength')}mm`);
52 if (val('coolerMaxHeight')) specs.push(`Max CPU Cooler Height: ${val('coolerMaxHeight')}mm`);
53 break;
54 case 'cooler':
[1b5c18b]55 if (val('type')) specs.push(`Cooler Type: ${val('type')} Cooler`);
56 if (val('height')) specs.push(`Height: ${val('height')}mm`);
57 if (val('maxTdpSupported')) specs.push(`Max TDP: ${val('maxTdpSupported')}W`);
58 break;
59 case 'network_card':
60 if (val('interface')) specs.push(`Interface: ${val('interface')}`);
61 if (val('numPorts')) specs.push(`Number of Ports: ${val('numPorts')}`);
62 if (val('speed')) specs.push(`Speed: ${val('speed')}Mbps`);
63 break;
64 case 'network_adapter':
65 if (val('interface')) specs.push(`Interface: ${val('interface')}`);
66 if (val('numAntennas')) specs.push(`Number of Antennas: ${val('numAntennas')}`);
67 if (val('wifiVersion')) specs.push(`Wi-Fi Version: ${val('wifiVersion')}`);
68 break;
69 case 'sound_card':
70 if (val('interface')) specs.push(`Interface: ${val('interface')}`);
71 if (val('chipset')) specs.push(`Chipset: ${val('chipset')}`);
72 if (val('channel')) specs.push(`Channels: ${val('channel')}`);
73 break;
74 case 'memory_card':
75 if (val('interface')) specs.push(`Interface: ${val('interface')}`);
76 if (val('numSlots')) specs.push(`Number of Slots: ${val('numSlots')}`);
77 break;
78 case 'optical_drive':
79 if (val('interface')) specs.push(`Interface: ${val('interface')}`);
80 if (val('type')) specs.push(`Type: ${val('type')}`);
81 if (val('formFactor')) specs.push(`Form Factor: ${val('formFactor')}`);
82 break;
83 case 'cables':
84 if (val('type')) specs.push(`Type of Cables: ${val('type')}`);
85 if (val('lengthCm')) specs.push(`Length: ${val('lengthCm')}cm`);
[1d8f088]86 break;
87 default:
88 if (data.brand) specs.push(data.brand);
89 }
90
91 if (specs.length === 0) {
92 if (data.brand) return <Chip label={data.brand} sx={chipStyle}/>;
93 return <Typography variant="caption" color="text.secondary">...</Typography>;
94 }
95
96 return specs.map((label, i) => <Chip key={i} label={label} sx={chipStyle}/>);
97}
Note: See TracBrowser for help on using the repository browser.