Jira Java Script를 이용한 필드 제어

Jira Java Script를 이용한 필드 제어


개요


JsIncluder 플러그인을 사용하여 이슈 페이지 및 대화 상자를 작성, 확인, 편집 및 전환을 JavaScript를 추가하여 할 수 있다.  


설치


  • Plug-in을 설치하려면, Jira 오른쪽 상단에 있는 >앱 관리 메뉴를 클릭한다.

  • 검색 창에 JsIncluder를 입력하고 설치를 클릭

Issue Create, Edit, View, Transition 페이지에 Java Script를 이용하여 화면 제어가 가능하다.

 

스크립트 추가


  • Java Script를 추가 하려면 Add Script 버튼을 클릭

  • Code 필드에 Java Script를 입력

  • Binding을 하기 위해서 Bindings 링크를 클릭 한 후 화면에서 Add Binding 링크를 클릭
  • Java Script를 실행할 Project, Issue Type, 화면들 선택한 후 만들기 버튼을 클릭

  • 아래와 같이 Java Script가 추가 된다.


필드 숨기기


  • IE, 크롬에서 F12를 누르면 Html 내용을 확인할 수 있다. 아래 이미지는 html 내용을 브라우저의 debug 기능을 이용해서 확인한 화면이다.

  • 아래와 같은 스크립트의 내용을 입력하면 필드가 영향도 분석 상세 내용이 사라진다.
내용
(function($) {
    AJS.toInit(function() {
            AJS.$('#customfield_10103').closest('div.field-group').hide();
            console.log('hello');
   		    })
})(AJS.$);


AJAX 처리 및 Issue 접근


  • AJAX를 통해서 외부와 통신하거나 Issue에 접근 또한 가능하다. 아래 내용은 현재 Issue의 상태를 점검하는 예제이다.
내용
(function ($) {
           AJS.toInit(function () {
                      //시스템명 필드 숨김
                      //시스템명 : customfield_10602
                      var currentStatus = getCurrentStatus(); //현재 상태
                      console.log("상태명 : " + currentStatus)
                      /**
                      * 이슈의 현재 상태 반환
                      */
                      function getCurrentStatus() {
                                 console.log("Call GetCurrentStatus");
                                 var curStatus = "";
                                 AJS.$.ajax({
                                             url: contextPath + "/rest/api/2/issue/" + JIRA.Issue.getIssueId() + "?fields=status",
                                             type: 'get',
                                             dataType: 'json',
                                             async: false,
                                             success: function(data) {
                                                        console.log("###["+JSON.stringify(data)+"]###");
                                                        //prjCategory = data;
                                                        curStatus = data.fields.status.name;
                                             }
                                 });
                                 return curStatus;
                      }
           });
})(AJS.$);