UNPKG

@backstage-community/plugin-sonarqube

Version:
137 lines (134 loc) 5.2 kB
import { jsx } from 'react/jsx-runtime'; import { EntityPeekAheadPopover, EntityRefLink } from '@backstage/plugin-catalog-react'; import { QualityBadge, NoSonarQubeCard, LastAnalyzedRatingCard, BugReportRatingCard, VulnerabilitiesRatingCard, CodeSmellsRatingCard, HotspotsReviewed, CoverageRatingCard, DuplicationsRatingCard } from '../SonarQubeCard/MetricInsights.esm.js'; function datetimeSort(dataAccessor) { return (data1, data2, _type) => { const a = Date.parse(dataAccessor(data1) || ""); const b = Date.parse(dataAccessor(data2) || ""); if (isNaN(a) && isNaN(b)) { return 0; } else if (isNaN(a)) { return 1; } else if (isNaN(b)) { return -1; } return a - b; }; } function numericSort(dataAccessor) { return (data1, data2, _type) => { const a = Number(dataAccessor(data1)); const b = Number(dataAccessor(data2)); if (isNaN(a) && isNaN(b)) { return 0; } else if (isNaN(a)) { return 1; } else if (isNaN(b)) { return -1; } return a - b; }; } const getColumns = (t) => { return [ { title: t("sonarQubeTable.columnsTitle.name"), field: "resolved.name", type: "string", highlight: true, render: ({ resolved }) => { if (!resolved?.name) { return null; } const entityRef = resolved.entityRef || `component:default/${resolved.name}`; return /* @__PURE__ */ jsx(EntityPeekAheadPopover, { entityRef, children: /* @__PURE__ */ jsx(EntityRefLink, { entityRef }) }); } }, { title: t("sonarQubeTable.columnsTitle.qualityGate"), field: "resolved.findings.metrics.alert_status", type: "string", render: ({ resolved, id }) => { if (resolved?.findings?.metrics) { return /* @__PURE__ */ jsx(QualityBadge, { value: resolved?.findings, compact: true }); } return /* @__PURE__ */ jsx(NoSonarQubeCard, { value: resolved, sonarQubeComponentKey: id }); } }, { title: t("sonarQubeTable.columnsTitle.lastAnalysis"), field: "resolved.findings.lastAnalysis", align: "right", type: "datetime", width: "8%", customSort: datetimeSort((data) => data.resolved.findings?.lastAnalysis), render: ({ resolved }) => resolved?.findings?.metrics && /* @__PURE__ */ jsx(LastAnalyzedRatingCard, { value: resolved?.findings }) }, { title: t("sonarQubeTable.columnsTitle.bugs"), field: "resolved.findings.metrics.bugs", align: "center", type: "numeric", width: "7%", customSort: numericSort((data) => data.resolved.findings?.metrics?.bugs), render: ({ resolved }) => resolved?.findings?.metrics && /* @__PURE__ */ jsx(BugReportRatingCard, { value: resolved?.findings, compact: true }) }, { title: t("sonarQubeTable.columnsTitle.vulnerabilities"), field: "resolved.findings.metrics.vulnerabilities", align: "center", width: "7%", type: "numeric", customSort: numericSort( (data) => data.resolved.findings?.metrics?.vulnerabilities ), render: ({ resolved }) => resolved?.findings?.metrics && /* @__PURE__ */ jsx(VulnerabilitiesRatingCard, { value: resolved?.findings, compact: true }) }, { title: t("sonarQubeTable.columnsTitle.codeSmells"), field: "resolved.findings.metrics.code_smells", align: "center", type: "numeric", width: "7%", customSort: numericSort( (data) => data.resolved.findings?.metrics?.code_smells ), render: ({ resolved }) => resolved?.findings?.metrics && /* @__PURE__ */ jsx(CodeSmellsRatingCard, { value: resolved?.findings, compact: true }) }, { title: t("sonarQubeTable.columnsTitle.hotspotsReviewed"), field: "resolved.findings.metrics.security_hotspots_reviewed", align: "center", type: "numeric", width: "7%", customSort: numericSort( (data) => data.resolved.findings?.metrics?.security_hotspots_reviewed ), render: ({ resolved }) => resolved?.findings?.metrics && /* @__PURE__ */ jsx(HotspotsReviewed, { value: resolved?.findings, compact: true }) }, { title: t("sonarQubeTable.columnsTitle.coverage"), field: "resolved.findings.metrics.coverage", align: "center", type: "numeric", width: "7%", customSort: numericSort( (data) => data.resolved.findings?.metrics?.coverage ), render: ({ resolved }) => resolved?.findings?.metrics && /* @__PURE__ */ jsx(CoverageRatingCard, { value: resolved?.findings, compact: true }) }, { title: t("sonarQubeTable.columnsTitle.duplications"), field: "resolved.findings.metrics.duplicated_lines_density", align: "center", type: "numeric", width: "7%", customSort: numericSort( (data) => data.resolved.findings?.metrics?.duplicated_lines_density ), render: ({ resolved }) => resolved?.findings?.metrics && /* @__PURE__ */ jsx(DuplicationsRatingCard, { value: resolved?.findings, compact: true }) } ]; }; export { datetimeSort, getColumns, numericSort }; //# sourceMappingURL=Columns.esm.js.map