
다음은 UserPref 부분이다.
: 말 그대로 User Preferences을 정의하는데 사용된다. 이걸 통해서 gadget을 개인화하고 사용자별로 설정을 조정할 수 있다. userPref를 사용하여 사용자가 Gadget의 동작을 변경할 수 있는 여러 가지 설정을 제공한다. 또한 사용자가 gadget의 설정을 변경하면 변경 사항에 대해서 해당 사용자의 설정 프로필에 저장이 된다. 따라서 사용자가 gadget을 다시 로드하거나 새로고침하더라도 설정이 유지된다는 뜻이다.
위 사진에 있는 코드에서 startDate를 예를 들면 startDate에 변경된 값이 저장되고 그 값을 불러올 수도 있다.
gadget.getPref('startDate')로 말이다.
var gadget = AJS.Gadget({
baseUrl: "__ATLASSIAN_BASE_URL__",
useOauth: "/rest/gadget/1.0/currentUser",
config: {
descriptor: function (args) {
return {
fields: [
{
id: "startDate",
userpref: "startDate",
type: "text",
....
},
AJS.gadget.fields.nowConfigured()
]
}
},
args: []
},
view:{
onResizeAdjustHeight: true,
enableReload: true,
template: function (args) {
},
args: []
}
});
gadget의 기본 구성방식은 이렇게 구성할 수 있다.
config는 해당 가젯을 설치했을 때 처음에 나오는 화면을 구성하는 것이다. 즉 어떤 조건을 넣어서 가젯 화면을 만들고 싶다면 config가 꼭 필요하다.
여기에 필요한 필드들을 만들어 가젯을 구성하는 것이다. 예를 들면 startDate 와 endDate 로 이슈를 가져와 그 기간에 해당하는 이슈들을 불러오려면 config에 startDate 와 endDate 필드가 꼭 필요하다.
https://developer.atlassian.com/server/framework/gadgets/field-definitions/
필드에 해당하는 정의에 대해서 자세하게 나와있는 문서이다.
여기에서 어떤 필드를 구성할지 보고 선택할 수 있다

나는 이렇게 구성하였는데, callback field는 가장 강력하고 유연한 필드를 구성할 수 있어서 선택하였다. div 로 감싸 javascript의 이벤트 핸들러를 쓸 수 있다. (parentDiv) ex> click event handler.
만약 새로 필드를 만들지 않고 현재 나의 jira에 있는 필드를 가져오고 싶다면 ajax option으로 가져올 수도 있다.
: Atlassian Gadgets에서 Ajax Options는 Gadget이 Ajax를 통해 데이터를 동적으로 가져오는 데 사용되는 옵션들을 지정하는데 사용된다.. 이 옵션들은 Gadget이 외부 소스로부터 데이터를 가져오거나 업데이트할 때 사용되며, 비동기적인 데이터 교환을 용이하게 한다.
예를 들면 현재 나의 jira 사이트에서 사용 가능한 필드들을 가져오고 싶다면
args: [
{
key: 'fields',
ajaxOptions: '__ATLASSIAN_BASE_URL__/rest/gadget/1.0/availableColumns',
},
],
로 가져올 수 있다. 주소 창에 현재 나의 주소/rest/gadget/1.0/avilableColumns를 쳐보면 사용 가능한 필드들의 목록을 볼 수가 있다.
view는 가젯의 보여지는 화면을 구성할 수 있다. 또한 config를 통해 가져온 이슈들을 어떻게 보여줄 것인지 생성하는 곳이다.
onResizeAdjustHeight과 enableReload는 각각 가젯의 크기 조절 허용과 새로고침 허용을 한 것이다.
참고:
onResizeAdjustHeight -> https://developer.atlassian.com/server/framework/gadgets/adjusting-the-gadget-height-when-the-window-is-resized/
enableReload->
https://developer.atlassian.com/server/framework/gadgets/adding-a-reload-option-to-your-gadget/
view 에서 가져온 이슈들을 뿌리고 싶다면 Rest API 로 config 필드에 저장되어있던 값으로 이슈들을 먼저 가져와야한다. -> (gadget.getPref(필드값)) 물론 따로 config 필드에 저장되어있는 값이 따로 필요없을 수도 있다.
아무튼 이 또한 ajax option 으로 가져올 수가 있다.
args: [
{
key: 'this_google',
ajaxOptions: function () {
return {
url:'데이터를 가져올 주소',
contentType: "application/json",
};
},
}
]
this_google key 로 이용해 return 값을 view에 뿌릴 수 있다.
그 전에 Rest API 를 사용하려면 또 다시

을 이용해, 이번엔 gadget plugin이 아닌 Rest API plugin을 먼저 설치해야 한다.

여기에서 14번을 선택해 설치하면 된다.
설정한 path로 Rest API 로 해당 프로젝트의 이슈들이나, 다른 정보들을 Atlassian 에서 가져올 수 있다.
Atlassian Rest API 주소는
cloud :
https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/#api-group-issue-search
server : https://docs.atlassian.com/software/jira/docs/api/REST/9.13.0/#api/2/search-search
를 참고하면 된다.
Rest API로 데이터를 가져오려면 클래스를 하나 작성을 해야한다.
참고 : https://developer.atlassian.com/server/fisheye-crucible/rest-service-plugin-module-tutorial-for-fisheye/

클래스의 기본 형식은 대략 이렇게 구성하면 될 것 같다.
해당 jdk 버전과 sdk 버전들로 인해 ResponseEntity나 HttpHeaders 같은 기존에 썼던 spring framework 를 쓸 수 없어 나같은 경우에는 HttpURLConnection 을 써서 API 데이터(즉, 이슈들)을 가져왔다.
HttpURLConnection 글 참고.
그리고 메소드에 작성한 path를 아까 작성했던 args에 url에 넣어주면 데이터를 가져올 수가 있다.
url : '/rest/rest 모듈 설정한 이름/latest (최신버전)/클래스 패스/메소드 패스'
이렇게 말이다.
그래서 view의 해당하는 리턴받은 args 값을 가져와 해당 화면에 뿌릴 수가 있는 것이다.
view: {
onResizeAdjustHeight: true,
enableReload: true,
template: function (args) {
.....
}
여기서 args.key값 으로 데이터를 가져올 수 있다!
플러그인을 다 만들었으면
atlas-mvn package
를 통해 플러그인 패키지를 만들고 target에 설치된 jar 파일을 앱에 설치를 하면 된다!