5 Mart 2016 Cumartesi

IBM Cognos Report Studio ve JavaScript

1-Cognos Promtları(İstekleri) için JavaScript Kullanımı
   Promtlar(İstekler) üzerinde bazı işlemler yapmak için JavaScript kullanılır. Örneğin
  • Kullanıcıya, prompt sayfasını sunmadan önce promtları düzenleme.
  • Kullanıcı işlemlerini doğrulama
  • Kullanıcı, Finish'e bastıktan sonra prompt süreci
  JavaScript,

  • Prompt sayfasında bir veya birden fazla HTML item'a yazılabilir.
  •  <script> ve </script> tag'ları arasında yazılmalıdır. 
   HTML item,
  • JavaScript'in etkileyeceği prompt'tan hemen sonra yerleştirilmeli. 
  • Buton tanımlamalarını veya diğer html alanlarını da içerebilir.

2-Prompt'lara Erişme

Promtlara erişmek için, öncelikle formun tamamının içerdiği nesnelere erişmek gerekir.
var form = getFormWarpRequest();  
Yukardaki kod güvenli olmadığında Cognos 8.2 de aşağıdaki kod kullanılır
var form = document.forms["formWarpRequest"];

3-Standart Promptlar

  Standart prompt nesnelerine,  formWarpRequest nesnesi kullanılarak  erişilebilir aşağıdaki adlandırma kuralları ile:
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>

Örnek
XYX olarak adlandırılmış listbox prompt'una ulaşmak için aşağıdaki kod kullanılabilir.
<script>
var form = getFormWarpRequest();
var listB  = form._oLstChoicesXYZ;
</script>

4-Diğer Promptlara Erişme

  Diğer tüm prompt nesnelerine erişmek için, prompt nesnesinin etrafında  span adlı  tag'i eklenilir  ve getElementbyId() fonksiyonu  aracılığıya span tag'ine ulaşılabilir. Prompt nesne item'ına  erişmek için ise  getElementsByTagName()  fonksiyonu kullanır.

5-Prompt sayfası görüntülenmeden önce promptları düzenleme

Bir prompt'u düzenlemek için, bir HTML item oluşturulur, ve düzenlemek istediğiniz prompt'a ulaşmak için ise javascript yazılır.

5.1-Bir Multiselect List Box'ında bir item seçme

Örnek
Bir value prompt oluşturulur, "Multi-Select" özelliği evet yapılır, aşağıdaki javascript örneğinde listedeki 3. değer seçimi yapılır
<script>
var form = getFormWarpRequest();
var listB  = form._oLstChoicesXYZ; 
listB.options[2].selected=true;
canSubmitPrompt();
</script>

5.2-Bir text box için değer ayarlama

Örnek
Bir textbox prompt'u oluşturulur ve aşağıdaki kod html item'a yazılır
<script>
var form = getFormWarpRequest();
var textB  = form._textEditBoxXYZ;
textB.value="First value";
canSubmitPrompt();
</script>

5.3-Drop Down List promptunda ilk 2 satırı silme

Örnek
Bir value prompt oluşturulur, "SelectUI" özelliği "DropdownList" yapılır. İlk satır parametre adını içerir, ikinci satır tire(-) içerir ve gerçek veri 3. satırdan sonra başlar. Bazı müşteriler ilk iki satırın silinmesini isterler.
<script>
var form = getFormWarpRequest();
var dropDownL  = form._oLstChoicesXYZ;
dropDownL.remove(1);
dropDownL.remove(0);
dropDownL.removeAttribute("hasLabel"); 
canSubmitPrompt();
</script>

5.4-Finish butonunu aktif hale getirme

Bazı required promptlar içeren bir sayfada, finish butonu sadece tüm required promptlar kullanıcı tarafından seçildiğinde  aktif olur.
canSubmitPrompt();
Yukardaki fonksiyon tüm required promtlar seçildiğinde çağrılır. 
Örnek
Prompt name ABC olan bir text box'ın , başladığında "hello" yazmalı ve  Prompt name DEF olan  bir Listbox'ın  ilk item'ı seçilmiş olmalı finish butonunun aktif olması için
<script>
var form = getFormWarpRequest();
var textB  = form._textEditBoxABC;
textB.value = "Hello";
var listB  = form._oLstChoicesDEF;
listB.options[0].selected=true;
canSubmitPrompt();
</script>

5.4-Kullanıcı Finish Butonuna Bastıktan Sonra Script'i Çalıştırma

<input type="BUTTON" class="clsPromptButton" onClick="fillTextBox()" value="Finish">
<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>

5.4-Date Prompt Aralığı Belirme ve List'te bir alanın seçili olmasının kontrolü



Prompt sayfasında yer alan 2 date promptunda ilkinin yanına oluşturulan  html item'ın içine aşağıdaki script  yazma

<script>
   var fW = (typeof getFormWarpRequest == "function" ? getFormWarpRequest() : document.forms["formWarpRequest"]);
   
   if ( !fW || fW == undefined) { fW = ( formWarpRequest_THIS_ ? formWarpRequest_THIS_ : formWarpRequest_NS_ );}
</script>

 İkinci Date'in  yanına yine yanına oluşturulan  html item'ın içine aşağıdaki scripti yazma

<script>
function getDate(controlObject)
{
  for (field in controlObject) {
                                        if (controlObject[field] != undefined)
                                       {
       if (typeof controlObject[field].sGetFormatValue == 'function') 
       {
                                                        return controlObject[field].sGetFormatValue(); // assumes a content language that returns Month DD, YYYY
                                                 }
                                       }
}
}

function checkDate()
{
   var sMyFromDateControl = 'promptBasZamani'; 
   var sMyToDateControl = 'promptBitZamani';  
   var maximumRange = 30; 
   var errorMessage = "Rapor aralığı 30 günden uzun olamaz";
   var errorMessage1 = "Lütfen sigorta şirketi seçiniz";
   var controlObject;
   var DateControl;
   var p_bas_zamani;
   var p_bit_zamani;
   var customCV;
   var form = getFormWarpRequest();
  var p_sir=form._oLstChoicespromptSirket
   if (fW.elements["cv.id"])
   {
      if (fW.elements["cv.id"].value == "RS")
      {
         customCV = oCVRS;
      }
      else
      {
         customCV = oCV_NS_;
      }
   }
   else
   {
      customCV = oCV;
   }

   for ( var ca_id=0; ca_id<customCV.preProcessControlArray.length; ca_id++)
   {   // loop through control objects

      controlObject = eval(customCV.preProcessControlArray[ca_id]);  // load each object...
      if (controlObject['@name']==sMyFromDateControl)  //...and check if it is the FromDate Control
      {
p_bas_zamani = new Date(getDate(controlObject));
      }
      else if (controlObject['@name']==sMyToDateControl)  //...and check if it is the p_bit_zamani Control
      {
p_bit_zamani = new Date(getDate(controlObject));
      }
   }
         // the difference between the 2 dates are returned in milliseconds
         if ((((p_bit_zamani - p_bas_zamani) / 1000) > (maximumRange * 24 * 60 * 60)))
         {
            alert(errorMessage);
         }
         else
         {
if(p_sir.options.selectedIndex !=-1){
           
            promptButtonFinish();
}
else
{
alert(errorMessage1);
}
         }
}
</script>

Date componentlerin aralığını buton ile kontrol etmek için istenilen bir yere oluşturulan html item'ın içine aşağıdaki script yazılır

<input type="button" style="color:#444499;font:12px;width:100px;font-weight:bold;" class="clsPromptButton"   name="check" value="Tamam" onclick="checkDate()">

5.5-Html ile oluşturulan bir radio buton'un index'inin değiştiğinde birşeyleri tetiklemesi 

Aşağıda html ile bir radio button oluşturulma
<input type="radio" id="1" name="p_detay" value="1" checked  onClick="Showprompt()">s1<br> 
<input type="radio" id="2" name="p_detay" value="2"  checked  onClick="Showprompt()">s2<br>
<input type="radio"  id="3"name="p_detay" value="3"  checked   onClick="Showprompt()">s3<br> 
<input type="radio"  id="4"name="p_detay" value="4" onClick="Hideprompt()">s4<br> 
<input type="radio"  id="5" name="p_detay" value="5"  onClick="Hideprompt()">s5

Oluşturulan radio button'un index'inin değiştiğinde etkileyeceği componenti  aşağıdaki script arasına alma 
<span id="A1">
</span >

Oluşturulan radio Button'un index'inin değiştiğinde aşağıdaki script çalışır.

  <script type="text/javascript">
var FW=(typeof getFormWarpRequest=="function"?getFormWarpRequest():document.forms["formWarpRequest"]);
 var prompt = fW._oLstChoicespromptDetay1;
 var prompt1 = fW._oLstChoicespromptYil1;

if(FW)
{
if(FW._oLstChoicesMyList.Length>=1)
{
FW._oLstChoicesMyList.selectedIndex=0;
}
}
function Showprompt()
{
document.getElementById("A1").style.display='';
//document.getElementById("A1").disabled=false;
var form = getFormWarpRequest();
var radios = document.getElementsByName('p_detay');
for (var i = 0, length = radios.length; i < length; i++) {
    if (radios[i].checked) {
        alert(radios[i].value);
         prompt[i].selected=true;
        break;
    }
}
}
function Hideprompt()
{
document.getElementById("A1").style.display='none';
//document.getElementById("A1").disabled=true;
var radios = document.getElementsByName('p_detay');
for (var i = 0, length = radios.length; i < length; i++) {
    if (radios[i].checked) {
        // do whatever you want with the checked radio
        alert(radios[i].value);
       prompt[i].selected=true;
        break;
    }
}
}
</script>

Şükrü ERGÜNTOP

Author & Editor

Bilecik Şeyh Edebali Üniversitesi Bilgisayar Mühendisi mezunuyum 2015 yılından beri Sigorta Bilgi ve Gözetim Merkezinde İş Zekası alanında çalışmaktayım

0 yorum:

Yorum Gönder