UNPKG

@atomist/sdm-pack-aspect

Version:

an Atomist SDM Extension Pack for visualizing drift across an organization

119 lines 5.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const React = require("react"); const codeMetrics_1 = require("../lib/aspect/common/codeMetrics"); const repoList_1 = require("./repoList"); const utils_1 = require("./utils"); function RepoExplorer(props) { const categoryDescription = props.category === "*" ? undefined : React.createElement("h3", null, "Scoring by category: ", React.createElement("span", { className: "scoreCategoryName" }, props.category)); const insightsImage = React.createElement("img", { src: "/hexagonal-fruit-of-power.png", className: "insightsImage" }); return React.createElement("div", null, React.createElement("h1", null, insightsImage, " ", props.repo.analysis.id.owner, " / ", React.createElement("a", { href: props.repo.analysis.id.url }, props.repo.analysis.id.repo), " /", props.repo.analysis.id.path), React.createElement("p", { className: "analysesProvenanceDetail" }, "Analyzed at: ", props.timestamp.toString()), React.createElement("p", { className: "analysesProvenanceDetail" }, "Analyzed commit: ", props.repo.analysis.id.sha), categoryDescription, displayVirtualProjects(props), displayWeightedScores(props.repo.weightedScore), displayTags(props), displayCodeMetrics(props), displayAspects(props), displayRawFingerprints(props), displayResources(props)); } exports.RepoExplorer = RepoExplorer; function displayRawFingerprints(props) { return utils_1.collapsible("raw-fp", "Raw Fingerprints", React.createElement("pre", null, JSON.stringify(props.repo.analysis.fingerprints, undefined, 2)), false); } function displayResources(props) { return utils_1.collapsible("Resources", "Resources", React.createElement("ul", null, React.createElement("li", null, "Source - ", React.createElement("a", { href: props.repo.analysis.id.url, target: "_blank" }, props.repo.analysis.id.url)), React.createElement("li", null, React.createElement("a", { href: props.repo.analysis.id.url }, "URL"), " - ", props.repo.analysis.id.url)), true); } function displayVirtualProjects(props) { return utils_1.collapsible("virtualProjects", `Virtual projects`, React.createElement("ul", null, props.virtualPaths.map(virtualPath => { return React.createElement("li", null, React.createElement("a", { href: `repository?id=${props.repo.id}&path=${virtualPath}` }, virtualPath)); })), true); } function displayWeightedScores(weightedScore) { return utils_1.collapsible("weightedScores", `Score: ${weightedScore.weightedScore.toFixed(2)} / 5`, React.createElement("ul", null, Object.getOwnPropertyNames(weightedScore.weightedScores).map(name => { const score = weightedScore.weightedScores[name]; try { const parsed = JSON.parse(score.reason); const scores = Object.keys(parsed).filter(k => k !== "anchor").map(k => repoList_1.explainScore(parsed[k])); return React.createElement("ul", null, scores); } catch (err) { return React.createElement("li", null, React.createElement("b", null, score.name), ": ", score.score.toFixed(2), " (x", score.weighting, ") - ", score.reason); } })), true); } function displayAspects(props) { return utils_1.collapsible("aspects", `Aspects (${props.aspects.length})`, React.createElement("ul", null, props.aspects.map(displayAspect)), true); } function displayAspect(feature) { return React.createElement("li", null, utils_1.collapsible("aspects", feature.aspect.displayName, React.createElement("ul", null, feature.fingerprints.map(displayFingerprint)), true)); } function displayTags(props) { return utils_1.collapsible("tags", "Tags", React.createElement("ul", null, props.repo.tags.map(displayTag)), true); } function displayTag(tag) { return React.createElement("li", null, React.createElement("b", null, tag.name), " - ", tag.description); } function displayFingerprint(fingerprint) { return React.createElement("li", { style: fingerprint.style, key: fingerprint.displayName }, React.createElement("i", null, fingerprint.displayName), ": ", beSureThisIsAString(fingerprint.displayValue), " ", " ", fingerprint.idealDisplayString && `(Ideal: ${fingerprint.idealDisplayString})`); } function displayCodeMetrics(props) { const cmf = props.repo.analysis.fingerprints.find(codeMetrics_1.isCodeMetricsFingerprint); if (!cmf) { return React.createElement("div", null); } return utils_1.collapsible("languages", "Languages", React.createElement("ul", null, cmf.data.languages.map(lang => { return React.createElement("li", { key: "lang_" + lang }, React.createElement("b", null, lang.language.name), ": ", lang.total); })), true); } function beSureThisIsAString(probableString) { if (typeof probableString === "string") { return probableString; } return JSON.stringify(probableString); } //# sourceMappingURL=repository.js.map