Skip to main content
Glama

MCP Agent TypeScript Port

by waldzellai
summaryTableLine.js5.25 kB
const React = require('react'); function MetricCells({ metrics }) { const { classForPercent, pct, covered, missed, total } = metrics; return ( <> <td className={'pct ' + classForPercent}>{Math.round(pct)}% </td> <td className={classForPercent}> <div className="bar"> <div className={`bar__data ${classForPercent} ${classForPercent}--dark`} style={{ width: pct + '%' }} ></div> </div> </td> <td className={'abs ' + classForPercent}>{covered}</td> <td className={'abs ' + classForPercent}>{missed}</td> <td className={'abs ' + classForPercent}>{total}</td> </> ); } function FileCell({ file, prefix, expandedLines, setExpandedLines, hasChildren, setFileFilter }) { if (hasChildren) { const expandedIndex = expandedLines.indexOf(prefix + file); const isExpanded = expandedIndex >= 0; const newExpandedLines = isExpanded ? [ ...expandedLines.slice(0, expandedIndex), ...expandedLines.slice(expandedIndex + 1) ] : [...expandedLines, prefix + file]; return ( <> <button type="button" onClick={() => setExpandedLines(newExpandedLines)} className="expandbutton" > {isExpanded ? String.fromCharCode(0x2013) : '+'} </button> <a href="javascript:void(0)" onClick={() => setFileFilter(prefix + file)} > {file} </a> </> ); } else { return <a href={`./${prefix}${file}.html`}>{file}</a>; } } function getWorstMetricClassForPercent(metricsToShow, metrics) { let classForPercent = 'none'; for (const metricToShow in metricsToShow) { if (metricsToShow[metricToShow]) { const metricClassForPercent = metrics[metricToShow].classForPercent; // ignore none metrics so they don't change whats shown if (metricClassForPercent === 'none') { continue; } // if the metric low or lower than whats currently being used, replace it if ( metricClassForPercent == 'low' || (metricClassForPercent === 'medium' && classForPercent !== 'low') || (metricClassForPercent === 'high' && classForPercent !== 'low' && classForPercent !== 'medium') ) { classForPercent = metricClassForPercent; } } } return classForPercent; } module.exports = function SummaryTableLine({ prefix, metrics, file, children, tabSize, metricsToShow, expandedLines, setExpandedLines, fileFilter, setFileFilter }) { tabSize = tabSize || 0; if (children && tabSize > 0) { tabSize--; } prefix = (fileFilter ? fileFilter + '/' : '') + (prefix || ''); return ( <> <tr> <td className={ 'file ' + getWorstMetricClassForPercent(metricsToShow, metrics) } > {/* eslint-disable-line prefer-spread */ Array.apply(null, { length: tabSize }).map((nothing, index) => ( <span className="filetab" key={index} /> ))} <FileCell file={file} prefix={prefix} expandedLines={expandedLines} setExpandedLines={setExpandedLines} hasChildren={Boolean(children)} setFileFilter={setFileFilter} /> </td> {metricsToShow.statements && ( <MetricCells metrics={metrics.statements} /> )} {metricsToShow.branches && ( <MetricCells metrics={metrics.branches} /> )} {metricsToShow.functions && ( <MetricCells metrics={metrics.functions} /> )} {metricsToShow.lines && <MetricCells metrics={metrics.lines} />} </tr> {children && expandedLines.indexOf(prefix + file) >= 0 && children.map(child => ( <SummaryTableLine {...child} tabSize={tabSize + 2} key={child.file} prefix={prefix + file + '/'} metricsToShow={metricsToShow} expandedLines={expandedLines} setExpandedLines={setExpandedLines} setFileFilter={setFileFilter} /> ))} </> ); };

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/waldzellai/mcp-agent-ts'

If you have feedback or need assistance with the MCP directory API, please join our Discord server