UNPKG

@atomist/org-visualizer

Version:

Organization Visualizer using Atomist project scanning

36 lines 1.71 kB
"use strict"; 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