2
1
0

jiraの課題表示画面で、通常日時ピッカーのフィールドは自動で右側の「日付」のところに表示されますが、左側に配置したいです。

何か方法はありますでしょうか。

    Commentコメントを追加...

    1 回答

    1.  
      2
      1
      0

      製品標準ではできませんね…

      技術的には以下のようなスクリプトをお知らせバナーに設定するとか

       

      <script>
      AJS.$(function () {
      	AJS.toInit(function() {
      		switchDateModule();
      	});
      	JIRA.bind(JIRA.Events.ISSUE_REFRESHED, function () {
      		switchDateModule();
      	});
      	function switchDateModule() {
      		// プロジェクトキーが TEST の課題は変更する...
      		if (/^TEST/.test(getIssueKey())) {
      			AJS.$('div#details-module').append(AJS.$('div#viewissuesidebar div#datesmodule').clone(true));
      			AJS.$('div#viewissuesidebar div#datesmodule').css('display', 'none');
      		}
      	}
      	function getIssueKey() {
      	    if (AJS.$('a#key-val').length > 0) {
      		    return AJS.$.trim(AJS.$('a#key-val').attr('data-issue-key'));
      		}
      		return "";
      	}
      });
      </script>

      (情報) お知らせバナーに設定するとシステム全体になるのでプロジェクト単位とかにしたい場合、表示中のプロジェクトや課題キーをgetIssueKeyでチェックして、if 文を追加したほうがいいと思います。


      あとは、ScriptRunner for JIRAを導入しているみたいなので

      ScriptField で Text フィールドを作成して

      以下のような日時のカスタムフィールドから値を取得して、テキストとして表示するようなスクリプトを書くとかですかね…

      import com.atlassian.jira.component.ComponentAccessor;
      import com.atlassian.jira.datetime.DateTimeFormatter;
      import com.atlassian.jira.datetime.DateTimeFormatterFactory;
      import com.atlassian.jira.datetime.DateTimeStyle;
      import com.atlassian.jira.issue.CustomFieldManager;
      import com.atlassian.jira.issue.fields.CustomField;
      
      DateTimeFormatter dateTimeFormatter = ComponentAccessor.getComponent(DateTimeFormatterFactory.class).formatter();
      CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
      
      
      // 作成日の場合
      Date date = new Date(issue.getCreated().getTime());
      
      // 日時カスタムフィールドの値の場合
      CustomField customField = customFieldManager.getCustomFieldObject(<カスタムフィールドID>);
      Timestamp timestamp = (Timestamp)issue.getCustomFieldValue(customField);
      Date date = new Date(timestamp.getTime());
      
      // 表示
      return dateTimeFormatter.forLoggedInUser().withStyle(DateTimeStyle.RELATIVE).format(date);

       

      参考になりましたら、幸いです。

      1. 篠原

        ご回答ありがとうございます。

        JIRA Suite Utilitiesを使用して、表示用カスタムフィールド(テキストフィールド)を作成し左側に配置、トランジション実行時にコピー元フィールドから表示用フィールドへ値をコピーなども考えたのですが、トランジション実行時以外のタイミングで編集されるとコピー元と表示用で矛盾が生じてしまうということに気づき悩んでいました。

        教えていただいたお知らせバナーの方やってみましたが無事に表示できました!
        ただ影響範囲が広そうなのが心配ですね…。
        ScriptRunnerの方は考えたことなかったので参考になりました。
        スクリプトでフィールド作成するんですね。

        既存機能に影響が少なそうなものを試していこうと思います。
        色々と無茶言ってすみません、ありがとうございました。

      2. Kengo Ohsaki

        篠原-san,

        JIRA Suite Utilitiesを使用して、表示用カスタムフィールド(テキストフィールド)を作成し左側に配置、トランジション実行時にコピー元フィールドから表示用フィールドへ値をコピーなども考えたのですが、トランジション実行時以外のタイミングで編集されるとコピー元と表示用で矛盾が生じてしまうということに気づき悩んでいました。

        確かにこの方法もありますね。

        画面設定によってはご認識の通りの矛盾が起きますが、画面スキームで表示画面と編集画面 をわけて、表示用は表示用のカスタムフィールドを配置して、編集用は編集用のカスタムフィールドを配置して、編集できないようにはできるかもしれません。

        教えていただいたお知らせバナーの方やってみましたが無事に表示できました!
        ただ影響範囲が広そうなのが心配ですね…。

        はい…お勧めはしません…

        ScriptRunnerの方は考えたことなかったので参考になりました。
        スクリプトでフィールド作成するんですね。

        はい。こちらも参考までに…

        既存機能に影響が少なそうなものを試していこうと思います。
        色々と無茶言ってすみません、ありがとうございました。

        いえいえ。参考になっていれば幸いでございます。

        また何かあれば、投稿いただければと思います。

      Commentコメントを追加...