@atomist/sdm-pack-aspect
Version:
an Atomist SDM Extension Pack for visualizing drift across an organization
119 lines • 5.46 kB
JavaScript
;
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