UNPKG

@roadiehq/backstage-plugin-jira

Version:
50 lines (47 loc) 1.88 kB
import React from 'react'; import { useEntity, MissingAnnotationEmptyState } from '@backstage/plugin-catalog-react'; import { WarningPanel } from '@backstage/core-components'; import { JiraQueryCard } from '../JiraQueryCard/JiraQueryCard.esm.js'; import { useTemplateParser } from '../../hooks/useTemplateParser.esm.js'; import { DEFAULT_JIRA_QUERY_ANNOTATION, JIRA_COMPONENT_ANNOTATION, JIRA_PROJECT_KEY_ANNOTATION, JIRA_LABEL_ANNOTATION, JIRA_TEAM_ANNOTATION } from '../../constants.esm.js'; import camelCase from 'lodash/camelCase'; const buildTemplateParserEntityContext = (entity) => { const context = {}; [ JIRA_COMPONENT_ANNOTATION, JIRA_PROJECT_KEY_ANNOTATION, JIRA_LABEL_ANNOTATION, JIRA_TEAM_ANNOTATION ].forEach((annotation) => { if (entity.metadata.annotations?.[annotation]) { context[camelCase(annotation.split("/")[1])] = entity.metadata.annotations?.[annotation]; } }); return context; }; const EntityJiraQueryCard = ({ jqlQueryFromAnnotation = DEFAULT_JIRA_QUERY_ANNOTATION, jqlQuery, maxResults, hideOnMissingAnnotation = false, ...tableProps }) => { const { entity } = useEntity(); const templateParser = useTemplateParser(); const jql = entity.metadata.annotations?.[jqlQueryFromAnnotation] ?? jqlQuery; if (jqlQuery === "") { return /* @__PURE__ */ React.createElement(WarningPanel, { message: "jqlQuery prop cannot be empty" }); } else if (!jql) { return hideOnMissingAnnotation ? null : /* @__PURE__ */ React.createElement(MissingAnnotationEmptyState, { annotation: jqlQueryFromAnnotation }); } return /* @__PURE__ */ React.createElement( JiraQueryCard, { jqlQuery: templateParser(jql, buildTemplateParserEntityContext(entity)), ...tableProps, maxResults } ); }; export { EntityJiraQueryCard }; //# sourceMappingURL=EntityJiraQueryCard.esm.js.map