【发布时间】:2015-02-16 12:22:21
【问题描述】:
我开发了一些 Javascript 示例,当您将鼠标悬停在问题链接上时,它会创建工单状态、摘要、受让人和 fixVersion 的 JIRA 工具提示(使用 Tipsy AUI 指南 - https://docs.atlassian.com/aui/5.4.0/docs/tooltips.html)。主要用于问题搜索页面,防止连续右键 -> 在新标签中打开 -> 检查... 变得非常繁琐,但也可以用于大多数其他问题链接。
它适用于悬停链接,但并不总是按计划进行。当我第一次将鼠标悬停在任何问题链接上时,它会产生一个工具提示“未定义”。当我第二次将鼠标悬停在任何问题链接上时,它会按预期生成准确的工具提示。将其复制到您的控制台中,我很确定您会看到相同的行为。
我不是 Javascript 专家,所以可能是我不知道的 Javascript 机制,所以如果有人知道为什么会发生这种情况,请告诉我!
我也把它打包成一个JIRA插件,看到同样的结果。
AJS.toInit(function () {
var url,
issue_id,
offset,
x,
y,
jira_data,
html,
fixVersions,
assignee,
domain = document.location;
// build url whatever it might be
url = domain.protocol +'//'+ domain.hostname
if (domain.port !== "") {
url += ':'+domain.port
}
AJS.$(".issue-link, td.issuelinks > a, #ghx-issues-in-epic-table > tbody > tr > td > a").tooltip({
title: function () {
// GETS THE ISSUE ID FROM THE HREF ELEMENT
issue_id = (AJS.$(this).attr("href")).slice((AJS.$(this).attr("href")).lastIndexOf("/"), (AJS.$(this).attr("href")).length);
// QUERIES JIRA API - ALREADY AUTHENTICATED WITH SESSION
jira_data = AJS.$.getJSON(url+'/rest/api/2/issue' + issue_id, function (json) {
})
// AJAX COMPLETE FUNCTION
jira_data.done(function (jira_data) {
// CHECK FOR FixVersoin and Multiple FixVersions
fixVersions = ""
if (jira_data['fields']['fixVersions'] === undefined) {
fixVersions = "None";
} else {
AJS.$.each(jira_data['fields']['fixVersions'], function(index, value) {
fixVersions += value['name'] + " ";
});};
// CHECK FOR UNASSIGNED
if (jira_data['fields']['assignee'] === undefined) {
assignee = "Unassigned";
} else {
assignee = jira_data['fields']['assignee']['displayName'];
};
// BUILD STRING OUTPUT
html = "<span style='text-align:left'>";
html += "<strong>Status: </strong>" + jira_data['fields']['status']['name'] + "</br>"
html +="<strong>Assignee: </strong>" + assignee + "</br>";
html += "<strong>Fix Version: </strong>" +fixVersions+ "</br>";
html += "<strong>Summary: </strong>" + jira_data['fields']['summary'];
html += "</span>"
});
return html;
}, live: true, gravity: AJS.$.fn.tipsy.autoWE, html:true, delayIn: 400, delayOut: 50});
// REMOVE TITLE TAG TO PREVENT OBSTURCTION
AJS.$(".issue-link, td.issuelinks > a, #ghx-issues-in-epic-table > tbody > tr > td > a").removeAttr('title');
AJS.$(".issue-link, td.issuelinks > a, #ghx-issues-in-epic-table > tbody > tr > td > a").parent().removeAttr('title');
});
【问题讨论】:
标签: javascript jquery plugins jira