@atomist/org-visualizer
Version:
Organization Visualizer using Atomist project scanning
36 lines • 1.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const _ = require("lodash");
const React = require("react");
function toListItem(p) {
const linkToIndividualProjectPage = `/project?id=${encodeURI(p.id)}`;
return React.createElement("li", { key: p.url },
p.repo,
":",
" ",
React.createElement("a", { href: p.url }, "Source"),
" ",
React.createElement("a", { href: linkToIndividualProjectPage }, "Insights"));
}
function displayOrgProjects(owner, projects) {
return collapsible(owner, `${owner} (${projects.length} projects)`, React.createElement("ul", null, _.sortBy(projects, p => p.repo.toLowerCase())
.map(toListItem)), projects.length === 1);
}
function ProjectList(props) {
const projectsByOrg = _.groupBy(props.projects, p => p.owner);
return React.createElement("div", null,
React.createElement("h2", null,
"Projects (",
props.projects.length,
")"),
React.createElement("ul", null, Object.entries(projectsByOrg).map(kv => displayOrgProjects(...kv))));
}
exports.ProjectList = ProjectList;
function collapsible(key, title, content, startOpen) {
return React.createElement("div", { className: "wrap-collapsible owner-collapsible" },
React.createElement("input", { id: key, className: "sneaky toggle", type: "checkbox", defaultChecked: startOpen }),
React.createElement("label", { htmlFor: key, className: "lbl-toggle" }, title),
React.createElement("div", { className: "collapsible-content" },
React.createElement("div", { className: "content-inner" }, content)));
}
//# sourceMappingURL=projectList.js.map