@roadiehq/backstage-plugin-jira
Version:
50 lines (47 loc) • 1.88 kB
JavaScript
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