2
1
0

Jira をオンプレ環境(Server/DataCenter)で評価しています。

期限日の日付フィールドを課題作成画面に設定しているのですが

デフォルト値としては固定または現在の日付(課題作成画面を開いた時の当日)しか設定できません。

課題作成画面を開いた時の当日から3日後をデフォルト値として設定したいと考えております。

事後処理で期限日を自動設定するのではなく、課題作成者(問い合わせ者)が作成時にデフォルト値から柔軟に変更できるようにしたいと思っています。

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

    Commentコメントを追加...

    1 回答

    1.  
      3
      2
      1

      フィールドの説明欄に以下を記載することで
      3日後の日付が挿入された状態にすることができるかと思います...

      <script>
      var due = moment().add('days', 3);
      var dateFormat = document.querySelector('[name="ajs-date-dmy"]').getAttribute('content');
      var dateString = due.format(JIRA.translateSimpleDateFormat(dateFormat));
      document.getElementById('duedate').value = dateString;
      </script>
      1. Shuzaburo Doba

        土日を省いて営業日のみに設定するならこのような感じでしょうか...

        <script>
        var dueField = document.getElementById('duedate');
        var due = moment().add('days', 3);
        var dateFormat = document.querySelector('[name="ajs-date-dmy"]').getAttribute('content');
        
        if (due.day() === 6 || due.day() === 0) {
            while (due.day() !== 1){
              due = due.add('days', 1);
            }
        }
        var dateString = due.format(JIRA.translateSimpleDateFormat(dateFormat));
        
        dueField.value = dateString;
        </script>
      2. Kengo Ohsaki

        Shuzaburo Doba-san,

        ありがとうございます。期待通りの動作をしました!

        ScriptRunner for JIRA の Behaviours だと以下のような感じですかね…。

        import java.util.Calendar;
        import com.atlassian.jira.datetime.DateTimeFormatter;
        import com.atlassian.jira.datetime.DateTimeFormatterFactory;
        import com.atlassian.jira.datetime.DateTimeStyle;
        import com.atlassian.jira.component.ComponentAccessor;
        
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        for (int days=3;days > 0;) {
            calendar.add(Calendar.DATE, 1);
           // 土日はスキップ
           if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY || calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {   
               continue;
           } else {
               days--;
           }
        }
        DateTimeFormatter dateTimeFormatter = ComponentAccessor.getComponent(DateTimeFormatterFactory.class).formatter().forLoggedInUser().withStyle(DateTimeStyle.DATE_PICKER);
        getFieldById('duedate').setFormValue(dateTimeFormatter.format(calendar.getTime()));
      Commentコメントを追加...