1. Cognos 프롬프트에서의 자바스크립트
자바스크립트는 프롬프트에서 다음과 같은 상황에서 사용된다.
1. 프롬프트 페이지를 보여주기 전에 프롬프트를 수정하고 싶을 때
2. 유효성 체크가 필요할 때
3. 사용자가 완료 버튼을 누른 후의 프롬프트 처리가 필요할 때
자바 스크립트는 프롬프트 페이지에 있는 한개 이상의 HTML 항목에
작성해야 한다. HTML 항목은 프롬프트가 위치한 후에 작성되어야 한다. 그리고 자바 스크립트는 <script> 와 </script> 태그 사이에 작성되어야 한다. 또한 HTML 항목에는 버튼이나 다른 HTML 소스의 정의가 포함된다.
프롬프트를 가져오기 위해서는 먼저 전체 폼 객체를 가져와야 한다.
var form = getFormWarpRequest();
표준 프롬프트 객체는 다음의 Naming 규칙을 따르는
formWarpRequest 객체의 속성으로 가져올 수 있다.
Text Edit
Box _textEditBox<prompt name>
List Box _oLstChoices<prompt
name>
Drop Down
List _oLstChoices<prompt name>
Radio
Button Group _oLstChoices<prompt name>
Check Box
Group _oLstChoices<prompt
name>
Date Edit
Box txtDate<prompt name>
ex) ListBox 프롬프트를 가져오기 위한 코드
var
form = getFormWarpRequest();
var listB
= form._oLstChoicesXYZ;
모든 그밖의 프롬프트 객체는 프롬프트에 이름을 지정한 <span> 태그를 감싸고 getElementById() 함수나 getElementsByTagName() 함수를
사용해서 span 태그에 접근함으로써 가져올 수 있다.
프롬프트를 수정하기 위해서 HTML 항목을 만든 후 프롬프트를 가져오고 그 프롬프트의 값을 지정하는
스크립트를 작성한다..
XYZ라는
이름의 프롬프트에 대한 예제이다.
Text Box 프롬프트를 만들고 HTML 항목에 다음과 같은 스크립트를 작성한다.
var
form = getFormWarpRequest();
var textB
= form._textEditBoxXYZ;
textB.value="First value";
canSubmitPrompt();
값 프롬프트를 생성한 후 Multi-Select 속성을 예로 변경한다. 이 예제는 리스트에서 3번째 값을 선택하는 예제이다.
var form =
getFormWarpRequest();
var listB =
form._oLstChoicesXYZ;
listB.options[2].selected=true;
canSubmitPrompt();
값 프롬프트를 생성하면 Select UI 속성이
기본적으로 DropDownList 로 지정된다. 첫번째 행은
파라미터명, 두번째행은 대쉬(-)이고 실질적인 데이터는 세번째
행부터 시작된다. 그래서 어떤 사용자는 위에 두 행을 지우길 원한다.
var form = getFormWarpRequest();
var dropDownL = form._oLstChoicesXYZ;
dropDownL.remove(1);
dropDownL.remove(0);
dropDownL.removeAttribute("hasLabel"); //
Cognos 8.3/8.4 에서만 필요
canSubmitPrompt();
Finish 버튼은 프롬프트가 있는 페이지에서 사용자가 모든 필수 프롬프트의 값을 선택 했을 때만 사용할 수 있다.
여기에는 스크립트로 프롬프트의 초기값이 지정하는 것에 대한 예제이다. 모든 프롬프트 값을 선택하고
난 후 canSubmitPrompt() 함수를 사용해서 Finish 버튼을 누른 기능을 사용할 수 있다.
ex) 2개 프롬프트가 있는 프롬프트 페이지 예제
ABC라는 이름의 Text Box 프롬프트가
"Hello" 라는 문자열로 초기화 되어야 할 때
DEF 라는 이름의 List Box 프롬프트의 첫번째 항목이 선택된 후 Finish 버튼이 선택되어야 할 때
var form = getFormWarpRequest();
var textB = form._textEditBoxABC;
textB.value = "Hello";
var listB = form._oLstChoicesDEF;
listB.options[0].selected=true;
canSubmitPrompt();
* canSubmitPrompt() 가 호출되기 전에 모든 필수 프롬프트가 선택되어야 한다. 그렇지 않으면 에러 메시지가 나온다.
기본적으로 Finish 버튼을 누르면 선택된 프롬프트를 가지고 보고서가 실행된다. 사용자가 Finish 버튼을 눌렀을 때 보고서가 실행되기 전 부가적인
동작을 실행하기 위해서는 다음과 같은 맞춤형 Finish 버튼으로 대체해야 한다.
1. 동작을 수행하기 위한 자바스크립트를 정의한다.
2. 위의 기능을 수행하기 위한 새로운 버튼을 정의한다.
3. 기존의 완료 버튼을 지운다.
예) 프롬프트 페이지에는 Text Box, List 프롬프트가
있다. 완료를 눌렀을 때 Text Box 프롬프트는 List Box 프롬프트에서 선택된 값으로 채운다. 프롬프트 페이지에는 List프롬프트, Text Box 프롬프트, 다음의 코드를 포함하는 HTML 항목이 있어야 한다.
<input
type="BUTTON" class="clsPromptButton"
onClick="fillTextBox()" value="Finish">
HTML 항목에 완료 버튼의 동작을 수행하는 promptButtonFinish() 함수를 다음과
같이 작성한다.
예제)
<script>
function fillTextBox() {
var form = getFormWarpRequest();
var list = form._oLstChoicesABC;
var textBox = form._textEditBoxXYZ;
for (i = 0; i < list.length; i++) {
if (list.options[i].selected) {
textBox.value
= list.options[i].value;
break;
}
}
promptButtonFinish();
}
</script>