Search
Search Keyword: Total 5 results found.
Tag: Cognos 10 Ordering
jQuery in Cognos verwenden

Um jQuery in Cognos 8.4 und Cognos 10 verwenden zu können, muss man über die Funktion noConflict eine neue Variable für jQuery zuweisen, da Cognos das standardmäßige $ selbst verwenden. Nach der Zuweisung kann man jQuery ganz normal über die neue Variable verwenden.

{codecitation style="brush: JavaScript;"}

var $x = jQuery.noConflict();

{/codecitation}

Auswahllisten verschönern

Zur schöneren Darstellung von Auslisten im Internet Explorer kann man das jQuery-Plugin 'selectBox' verwenden. Dieses stellt die Auswahllisten in einem modernen Design das, wie auf folgendem Screenshot zu sehen ist. Dazu kann man sich das PlugIn hier  herunterladen.

Um diesen Effekt zu erzielen, muss man die jQuery-Bibliothek im Bericht einbinden.

{codecitation style="brush: JavaScript;"}

<script src="/../jquery-1.5.1.min.js" type="text/javascript"></script> <script src="/../jquery-ui-1.8.14.custom.min.js" type="text/javascript"></script> <script src="/../selectBox/jquery.selectBox.min.js" type="text/javascript"></script>

{/codecitation}

Mit dem folgenden Befehl, den man im Kopf des Berichts einfügt, wird dann jede Auswahlliste, auch Multiselect-Listen, mit einem modernen Design versehen.

{codecitation style="brush: JavaScript;"}

<script>

var $x = jQuery.noConflict(); $x(function() { $x('select').selectBox(); }); </script>

{/codecitation}

Eigenen Datumswähler verwenden

Das Cognos-Kalenderelement ist nicht unbedingt eines der Schönsten. Wenn man es etwas schicker haben möchte, kann man auch hier auf JavaScript-Elemente zugreifen und diese in Cognos einbinden. Ein schöner Datumswähler ist hier zu finden.   Zum Einbinden in Cognos müssen zuerst die Bibliotheken registriert werden. {codecitation style="brush: JavaScript;"}

<link href="/../date-picker-v5/css/datepicker.css" rel="stylesheet" type="text/css" /> <script src="/../date-picker-v5/js/lang/de.js" type="text/javascript"></script> <script src="/../date-picker-v5/js/datepicker.js" type="text/javascript"></script>

{/codecitation}

Dann muss der Datepicker erzeugt werden. In der Dokumentation kann man nachlesen, welche Arten von Pickern es gibt und welche Parameter dafür jeweils zu setzen sind. In diesem Beispiel wird ein Inline-Datepicker erzeugt. Dazu nötig ist ein normales Cognos Parameter-Textfeld (im Beispiel mit dem Namen PARAM_DATUM). Damit das Feld vom Datepicker angesprochen werden kann, muss noch die ID des Eingabefeldes gesetzt werden (P_DATUM). {codecitation style="brush: JavaScript;"}

<div id="datepicker_from"></div> <script> var f = getFormWarpRequest(); f.elements._textEditBoxPARAM_DATUM.id="P_DATUM"; f.elements._textEditBoxPARAM_DATUM.className = f.elements._textEditBoxPARAM_DATUM.className + " dateformat-Y-ds-m-ds-d show-weeks fill-grid display-inline"; var opts = { formElements:{"P_DATUM":"Y-ds-m-ds-d"}, lang:de, showWeeks:true, highlightDays:[0,0,0,0,0,1,1], fillGrid:true, finalOpacity:100, staticPos:true, positioned :"datepicker_from", callbackFunctions:{"dateset":[datepickerSelect]} }; datePickerController.createDatePicker(opts); </script>

{/codecitation}

Normalerweise kümmert sich der Datepicker selbständig um die Befüllung des Eingabefeldes. Da aber in Cognos nach der Änderung eines Eingabefeldes checkData() ausgeführt werden muss, wurde eine CallBack-Funktion angelegt, die den Wert des Parameter-Feldes ändert und mit checkData() validiert. {codecitation style="brush: JavaScript;"}

function datepickerSelect(picker) { var __d = (parseInt(picker.dd)<10)?"0"+picker.dd:picker.dd; var __m = (parseInt(picker.mm)<10)?"0"+picker.mm:picker.mm; f.elements._textEditBoxPARAM_DATUM.value=picker.yyyy+"-"+__m+"-"+__d; checkData(f.elements._textEditBoxP_DATE_FROM1); }

{/codecitation}

Kalenderelement zur Monatsauswahl

Wenn man in einem Bericht nur die Möglichkeit bieten möchte, Monate auszuwählen, kann man dies über die jQuery UI sehr schön gestalten.     Dazu bindet man wie immer die jQuery-Klassen in einem HTML-Element ein. {codecitation style="brush: JavaScript;"}

<script src="/../jquery-1.5.1.min.js" type="text/javascript"></script> <script src="/../jquery-ui-1.8.14.custom.min.js" type="text/javascript"></script>

{/codecitation}

Danach muss man das Kalender-Element mit entsprechenden Parametern erzeugen. In diesem Beispiel gibt es zwei Monatsauswahlfelder (Monat von und Monat bis). Die sind abhängig voneinander, d.h. bei Monat-Bis kann man nur Monate NACH dem Monat-Von auswählen und umgekehrt. Geregelt wird dies über den onChangeMonthYear-Event, der nach der Auswahl eines Monats ausgeführt wird. Darin wird auch die Funktion setDate() ausgeführt, die das Cognos-Steuerelement füllt und mit checkData() validiert. {codecitation style="brush: JavaScript;"}

var $x = jQuery.noConflict(); $x(function() { $x('#startDate').datepicker( { changeMonth: true, changeYear: true, yearRange: '2011', showButtonPanel: true, minDate: new Date(2011,0,1), maxDate: new Date(2011,11,31), dateFormat: 'd. M yy', defaultDate: _dt_from, onChangeMonthYear: function(year, month, inst) { $x('#endDate').datepicker("option","minDate",new Date(year,(month-1),1)); $x('#startDate').datepicker('setDate', new Date(year, (month-1), 1)); var __mon = ''; __mon = (month<10)?'0'+month:month; setFromDate(year+'-'+__mon+'-01'); } }); });

{/codecitation}

Die Ausführen-Schaltfläche im Reportviewer entfernen

Manchmal ist es erwünscht, bei der Anzeige von Berichten keinen Ausführen-Knopf in der Cognos-Toolbar angezeigt zu bekommen, da der Bericht z.B. nur über Drill-Through oder Berichtsansichten gestartet werden soll.

Den Ausführen-Knopf kann man auf folgende Arten entfernen:

Cognos 8.2

Es reicht, ein HTML-Element mit folgendem Inhalt zu erstellen:

{codecitation style="brush:css;"}<style> #tbbutton5 {   display:none } </style>{/codecitation}

Cognos 8.4

In Cognos 8.4 ist es schon etwas komplizierter. Es reicht nicht, einen einfachen CSS-Style anzulegen. Obwohl der Button auch hier eine ID hat, die man für einen Style verwenden könnte, wird dieser nicht angewendet. Der Style sähe so aus:

{codecitation style="brush:css;"}

<style> table#RSrunReport {   display:none; } #_NS_runReport {   display:none; } td#CVToolbar_NS {   display:none; } </style>

{/codecitation}

Jedoch muss man zu JavaScript greifen und in einem HTML-Element folgenden Inhalt einfügen:

{codecitation}

<script>

function myLoad() { document.getElementById("_NS_runReport").style.display="none";}document.body.attachEvent('onload',myLoad);window.onload = function(){ try{ document.getElementById("_NS_runReport").style.display = "none"; document.getElementById("_NS_runReport").parentNode.parentNode.nextSibling.style.display = "none"; } catch(e){} }</script>{/codecitation}

Danach sind die Schaltfläche und der Trennstrich verschwunden, wenn man den Bericht aus dem ReportStudio oder aus Cognos Connection heraus startet.

 

JavaScript-Bibliothek zur Unterscheidung der Cognos-Versionen

Wenn man Berichte in Cognos 8.2 entwickelt und später auf Cognos 8.4 oder Cognos 10 umsteigen möchte, ist eine Migration der Bericht unerlässlich. Vor allem, wenn in den Berichten JavaScript verwendet wird, um diese z.B. interaktiv zu machen oder bestimmte Parameter-Werte zu setzen.

Um die Berichte unter allen drei Versionen lauffähig zu bekommen, kann man sich mit einer JavaScript-Bibliothek behelfen, die selbständig die für die Version gültigen Funktionen aufruft.

So wurde z.B. die Methode .checkData() für einzelne Steuerelemente ab Version 8.4 durch die Methode canSubmitPrompt() ersetzt. Jedoch prüft diese Methode direkt alle Prompt-Werte und damit entfällt die Möglichkeit, einzelne Steuerelemente zu prüfen und gültig zu machen.

Mit den entsprechenden Aufrufen für die einzelnen Steuerelement ist es jedoch auch in Cognos 8.4 und 10 weiterhin möglich, einzelne Steuerelemente zu prüfen.

{codecitation style="brush: JavaScript;"}

var f = (typeof getFormWarpRequest == "function" ? getFormWarpRequest() : document.forms.formWarpRequest); var version = (typeof getFormWarpRequest == "function" ? '8.4' : '8.2' ); function checkData(elem) {   if ( version=='8.2' ) {     if (elem.tagName == "SELECT") {        if (elem.multiple) {           try {             eval("multipleText" + elem.name.replace(/_oLstChoices/,"") + ".checkData();");           } catch(e) {}           try {             eval("listBox" + elem.name.replace(/_oLstChoices/,"") + ".checkData();");           } catch(e) {}         } else {           eval("listBox" + elem.name.replace(/_oLstChoices/,"") + ".checkData();");         }     } else if (elem.tagName == "INPUT" && elem.type == "text") {       eval("textBox" + elem.name.replace(/_textEditBox/,"") + ".checkData();");     }   } else {     if(typeof elem._ep=="object") elem._ep.checkData();     if(typeof elem._ft=="object") elem._ft.checkData();   } }

{/codecitation}

Zur Verwendung dieser Funktion wird innerhalb des Berichts nicht mehr formWarpRequest.<Element Name>.checkData() aufgerufen, sondern stattdessen checkData(<Element>).

Lesen Sie hier, in welchen Projekten zu welchen Themen ich bereits tätig war. Die Auflistung beinhaltet alle Projekte seit meiner Tätigkeit als EDV-Berater.

Lernen Sie mehr über die Dienstleistungen kennen, die ich Ihnen oder Ihrem Unternehmen bieten kann. Mein Unterstützung erstreckt sich von kleinen Projekten oder EDV-Problemen bei Mittelständlern bis hin zu langfristiger Projektarbeit im DataWarehouse-Umfeld bei Grossunternehmen.

Login-Footer

Copyright © 2017 OCToConsult - Oliver C. Tank. Alle Rechte vorbehalten.
Joomla! ist freie, unter der GNU/GPL-Lizenz veröffentlichte Software.