1 回答
- 321
製品標準ではできないですが、技術的な方法としてはいくつか考えられると思います。
例えば以下JavaScriptのような形で JavaScriptで REST APIを呼び出して
カスタムフィールドの値を取得して「担当者」のフィールドを画面に配置し説明欄に追加するなど。
<script> AJS.toInit(function () { function func() { if (AJS.$("form#issue-workflow-transition input[name='id']").size() === 0) { return; } var issueid = AJS.$("form#issue-workflow-transition input[name='id']").val(); if (!issueid) { return; } var url = AJS.contextPath() + "/rest/api/2/issue/" + encodeURIComponent(issueid); AJS.$.ajax({ type : 'GET', dataType : 'json', contentType : 'application/json', url : url, cache : false, success : function(updateData, textStatus, xhr) { if (updateData.fields.customfield_10400.displayName) { if (AJS.$('form#issue-workflow-transition div#custom_assignee_description').size() === 0) { AJS.$("form#issue-workflow-transition select#assignee").after('<div id="custom_assignee_description" class="description">次は' + updateData.fields.customfield_10400.displayName + 'さんに割り当ててください</div>'); } return; } }, error : function(XMLHttpRequest, textStatus, errorThrown) { return; } }); } func(); JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function (e, context, reason) { if (reason === JIRA.CONTENT_ADDED_REASON.dialogReady) { func(); } }); }); </script>
customfield_10400 の部分は取得するカスタムフィールドの番号に読み替えてください。
customfield_10400 は単独ユーザーピッカーフィールド想定です。
ScriptRunner for JIRA をインストールしているなら Behaviours 機能を使って
https://scriptrunner.adaptavist.com/5.2.4/jira/behaviours-overview.html
import com.atlassian.jira.component.ComponentAccessor; import com.atlassian.jira.issue.CustomFieldManager; import com.atlassian.jira.issue.IssueManager; import com.atlassian.jira.issue.fields.CustomField; import com.atlassian.jira.issue.Issue; import com.atlassian.jira.user.ApplicationUser; def field = getFieldById("assignee"); def nextUserName = null; def id = getFieldById("id"); // 課題作成画面では課題作成のため課題IDが決まっていないため null となる。 if (id != null && id.getValue() != null) { com.atlassian.jira.issue.IssueManager issueManager = ComponentAccessor.getIssueManager(); CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager(); Issue issue = issueManager.getIssueObject(Long.parseLong((String)id.getValue())); CustomField customField = customFieldManager.getCustomFieldObject(10400L); ApplicationUser user = (ApplicationUser)issue.getCustomFieldValue(customField); if (user != null) { nextUserName = user.getDisplayName(); } } if (nextUserName != null) { field.setHelpText(String.format("次は%sさんに割り当ててください", nextUserName)); }
的なスクリプトでもできるかと思います。
10400 の部分は取得するカスタムフィールドの番号に読み替えてください。
10400 は単独ユーザーピッカーフィールド想定です。
参考になりましたら幸いです。
- 篠原
ご丁寧なご回答ありがとうございます。
1つ目のJavascriptについてお聞きしたいのですが、「担当者」の説明欄ではなく、カスタムフィールド(1行テキスト)の説明欄に書く場合は、下記「assignee」「#custom_assignee_description'」部分を書き換えればいいのでしょうか。
if (AJS.$('form#issue-workflow-transition div#custom_assignee_description').size() === 0) {
AJS.$("form#issue-workflow-transition select#assignee").after('<div id="custom_assignee_description" class="description">次は' + updateData.fields.customfield_10400.displayName + 'さんに割り当ててください</div>');
}
return; - Kengo Ohsaki
篠原-san,
「担当者」の説明欄ではなく、カスタムフィールド(1行テキスト)の説明欄に書く場合は
AJS.$("form#issue-workflow-transition select#assignee").after が
AJS.$("form#issue-workflow-transition input#customfield_10401").after
に変更ですかね。
あと以下は任意ですが
custom_assignee_description を custom_customfield_10401_description とかに変更したほうがわかりやすいかもしれません。
id=custom_assignee_description については、単純に何度も同じ説明を書きこまないようにするための id ですので任意の名前で大丈夫です。
customfield_10401 の部分は実際に説明欄を記載するカスタムフィールドの番号に読み替えてください。
- 篠原
ありがとうございます!
カスタムフィールドの説明欄にも表示することができました。
select部分も変更しなければならないんですね…フィールド名部分だけ変更していました、勉強になりました。
AJS.$("form#issue-workflow-transition select#assignee").after
AJS.$("form#issue-workflow-transition input#customfield_10401").after
- Kengo Ohsaki
篠原-san,
参考になり良かったです!
select部分も変更しなければならないんですね…
はい、フィールドのタイプによって select や input タグだったりするのでhtmlの要素を確認しながら確認してみてください。
ちなみにJavaScriptの話になりますがHTMLタグを指定せず
以下でも良かったりしますが、タグ指定しているのは一応念のためです...
AJS.$("form#issue-workflow-transition #customfield_10401").
コメントを追加...
ステータス変更時の画面を作成、「担当者」のフィールドを画面に配置し説明欄に「次はXXさんに割り当ててください」(「XX」にcustomfield_xxxに入っているユーザーが入る)みたいな使い方をしたいのですが…
フィールド説明欄にフィールドの値を表示させることは可能でしょうか。