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
- Prompt sayfasında bir veya birden fazla HTML item'a yazılabilir.
- <script> ve </script> tag'ları arasında yazılmalıdır.
- 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>
<script>
var form = getFormWarpRequest();
var listB = form._oLstChoicesXYZ;
listB.options[2].selected=true;
canSubmitPrompt();
</script>
</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>
<script>
var form = getFormWarpRequest();
var textB = form._textEditBoxXYZ;
textB.value="First value";
canSubmitPrompt();
</script>
</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>
<script>
var form = getFormWarpRequest();
var dropDownL = form._oLstChoicesXYZ;
dropDownL.remove(1);
dropDownL.remove(0);
dropDownL.removeAttribute("hasLabel");
canSubmitPrompt();
</script>
</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>
<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>
0 yorum:
Yorum Gönder