Cognos Analytics에서 JavaScript를 처리하는 방법

개요



Cognos 10 BI에서 Cognos의 기본 기능을 제외하고 보고서를 구현하려는 경우 HTML 항목에 JavaScript를 포함하여 보고서를 구현했다고 생각합니다.
그렇게 JavaScript로 만든 보고서가 Cognos Analytics로 마이그레이션하는 경우에 어떻게 하면 좋을까라는 내용이 됩니다.

전제



먼저 전제로 알고 싶은 정보로서 Cognos Analytics에서는 다음과 같은 보고서 속성에서 "완전한 양방향성으로 실행"이라는 설정이 있고 보고서를 새로 만든 경우 기본적으로 "예 '입니다.


이 설정이 '예'로 설정되어 있는 경우 다음과 같이 보고서를 실행한 후 필터, 집계, 정렬 변경 및 그래프 형식 변경 등 보고서를 동적으로 변경할 수 있습니다.


그러나 이 설정이 '예'로 설정되어 있으면 HTML 항목에 자바스크립트를 포함하는 이전 자바스크립트를 사용할 수 없습니다.
이 경우 JavaScript 사용법은 나중에 설명하지만 HTML 항목에 JavaScript를 포함하는 이전 방법을 계속하고 싶다면 설정을 '아니요'로 설정하십시오.

'완전한 양방향성으로 실행'이 '예'인 경우 JavaScript 실행



JavaScript는 다음과 같이 외부 .js 파일로 나열하고 Cognos Analytics 아래의 폴더에 배치합니다.
여기서는 C:\Program Files\ibm\cognos\analytics\webcontent\bi\samples\javascript\AlternatingBackground\AlternatingBackground.js 에 배치하고 있지만 나중에 보고서에서 경로를 지정합니다.


보고서의 정의입니다.
목록 아래에 'Custom Control'이라는 객체를 배치하고 'Module path'를 다음과 같이 지정하고 이전 JavaScript 파일을 호출합니다.
상대 패스로 지정하고 있습니다만, \webcontent\bi 가 기점이 되는 것과, .js 라고 하는 확장자의 기재가 없는 것이 포인트입니다.
..\samples\javascript\AlternatingBackground\AlternatingBackground



보고서를 실행한 결과입니다. 빨간색 테두리 목록에서 녹색 행과 회색 행이 순차적으로 배경색이지만 AlternatingBackground.js의 기능을 사용하여 배색한 결과입니다.


그런 다음 왼쪽 목록을 살펴보고 Custom Control 속성에서 Configuration을 확인합니다.
아래와 같이 controlName List1 로 지정되어 있고, 이 Custom Control 에 의해 불려 가는 JavaScript 에 의해 처리되는 대상 오브젝트가 List1 인 것을 알 수 있습니다.
연필 마크를 선택하면 Configuration을 편집할 수 있습니다.


다음과 같이 firstColor의 한 줄을 추가해 보겠습니다.


다음은 보고서 실행 결과입니다.
홀수 행의 배경색이 녹색으로되어 있음을 알 수 있습니다.


이와 같이 Custom Control을 통해 JavaScript 파일을 호출하는 것, Custom Control 자체도 설정치를 가지는 것으로, 유연하고 재사용 가능한 JavaScript 호출의 구현 방법으로 변경되어 있다는 점이 포인트입니다.

이후에 참고 정보와 AlternatingBackground.js의 내용을 첨부하여 기사를 마무리하고 싶습니다.

참고 정보
IBM Cognos Analytics - Custom JavaScript Controls - Alternating Background
htps //w w. 요츠베. 이 m/와 tch? v = ZY에 Tq5V Puc

JavaScript support in Interactive Viewer
htps //w w. 이 bm. 코 m / 안녕하세요 s / 아나 ly 치 cs / 코 g의 s 아나 ly chi cs-b ぉ g / 그럼 sc pt-sup rt-in 에우 r/

AlternatingBackground.js
define(["jquery"], function($) {
"use strict";

/*NOTES:
    Date Last Updated: 1/25/2017
    Author: Jeff Martin
    Usage: Custom control used to alternate the background color of rows on a crosstab or list.  Any totals, headers, or edges are ignored
    Here is a sample config object:
        {
            "isCrosstab":true,
            "controlName":"List1",
            "firstColor":"#BCE0D3",
            "secondColor":"#EAE6E3"
        }

The config should have at least the first two properties.  If firstColor and secondColor are missing defaults will be used.       
*/

function AlternatingBackground()
{
};

AlternatingBackground.prototype.draw = function( oControlHost ) {

//variable to reference the json config
    var conf = oControlHost.configuration;

if(!conf){
        throw new scriptableReportError("AlternatingBackground", "draw method", "Missing configuration.");
    }

//we know there is a config object so we create a sample to test that all the properties are present.
    var sampleConf = {
            "isCrosstab":true,
            "controlName":"List1"
        };

if(!(conf.hasOwnProperty("isCrosstab") && conf.hasOwnProperty("controlName"))){
        throw new scriptableReportError("AlternatingBackground", "draw method",
        "Configuration object needs at least two properties (isCrosstab;controlName)");
    }

//Config is good so we move on.


//the name of the list or crosstab is on the lid attribute so we get the control with a selector
//and then use additional selectors and classes to target the right cells

//check for crosstab or list
    if(conf.isCrosstab) {
        $("[lid='" + conf.controlName + "']").find("tr:odd > td.mv").css("background-color", (!conf.firstColor ? "#EFF0F1" : conf.firstColor));
        $("[lid='" + conf.controlName + "']").find("tr:even > td.mv").css("background-color",(!conf.secondColor ? "#FFF" : conf.secondColor));
    }
    else {
        $("[lid='" + conf.controlName + "']").find("tr:odd > td.lc, tr:odd > td.lm").css("background-color",(!conf.firstColor ? "#EFF0F1" : conf.firstColor));
        $("[lid='" + conf.controlName + "']").find("tr:even > td.lc, tr:even > td.lm").css("background-color",(!conf.secondColor ? "#FFF" : conf.secondColor));
    }

};


return AlternatingBackground;
});

좋은 웹페이지 즐겨찾기