Browsing "Older Posts"

Silbentrennung (Hyphenation) in APEX (GER)

Von Tobias Arnhold → 8.20.2010
Viele Entwickler in APEX kennen das Problem professionelle gut strukturierte Reports zu entwickeln, deren Spaltenbreiten nicht über die gewünschten maximalen Breiten hinausragen.
Folgende Bedingungen erschweren die einfache Entwicklung von Reports:
- Bildschirmauflösung ist eingeschränkt (1024x768)
- Zu lange Texte in Reports (Spaltennamen, Spaltenwerte)
- Nutzung verschiedener Browser (Firefox, Internet Explorer 6, 7 und 8,Safari,...)
- Übersetzung in verschiedene Sprachen notwendig
- Nutzung unterschiedlicher Layouts mit verschiedenen CSS Eigenschaften

Vor einer Weile habe ich einen Tipp beschrieben der die Problematik ein wenig verbessern kann: Automatic linebreak if word breaks out of table element

Nun habe ich eine wirklich gut Lösung gefunden die mit ein paar einfachen Anpassungen erstaunliche Wirkungen in ihren APEX Reports hervorrufen kann. Das Zauberwort heißt Silbentrennung (Engl.: Hyphenation). Die Lösung besteht darin den dargestellten Text durch ein Javascript Plugin entsprechend der maximalen Feldbreite zu begrenzen.

Dazu wird nach jeder Aktualisierung eine Funktion gestartet, die die Felder entsprechend anpasst.
Die Anwendung heißt Hyphenator, kann in allen gängigen Sprachen dynamisch verwendet werden, ist ein Javascript Plugin und ist hier zu finden http://code.google.com/p/hyphenator/

Ein weiterer Entwickler hat ein passendes Jquery Plugin geschrieben: http://bitbucket.org/webvariants/jquery-hyphenator/wiki/Home

In dieser Kombination ist die Verwendung in APEX 3.2 oder 4.0 denkbar einfach.

Anleitung:
1. Datei downloaden
Downloaden Sie die aktuell stabile Version von hier http://hyphenator.googlecode.com/files/Hyphenator%202.5.0.zip und hier http://bitbucket.org/webvariants/jquery-hyphenator/get/v1.1.0.zip

2. Kopieren Sie das Jquery Plugin auf ihren Webspace (APEX /i/ Verzeichnis)
  /i/Hyphenator/Hyphenator.js (Umbennen von hyphenator.min.js)
  /i/Hyphenator/jquery.hyphenator.min.js">
3. Kopieren Sie den Ordner patterns aus dem Hyphenator Download in ihr Verz.
  /i/Hyphenator/patterns/de.js

4. Definieren des Plugins in ihrem APEX HTML Header

<!-- START: Hyphenator Plugin -->
<style type="text/css">
.hyph {
/* WIDTH Parameter wird erst ueber Spalte definiert */
display:block;
/* DISPLAY:BLOCK ist immer zwingend erforderlich */
overflow:hidden; float:left;
/* Schneidet alles Sichtbare über der max. Groesse ab, dadurch entstehen keine Fehler beim verkleinern, IE6 Fehlverhalten */
white-space:normal;
/* Darf niemals: white-space:nowrap als Einstellung in einer Tabelle haben */
word-wrap: break-word;z-index:999;
/* Fuer IE6 */
}
</style>
<script type="text/javascript" src="/i/Hyphenator/Hyphenator.js"></script>
<script type="text/javascript" src="/i/Hyphenator/jquery.hyphenator.min.js"></script>
<!-- ENDE: Hyphenator Plugin -->

5. Deaktivieren Sie in ihrem APEX Report Template folgenden CSS Einstellung
  white-space:nowrap mit white-space:normal;

<!-- Column Heading Template -->
<th ... style="white-space:normal;z-index:999;word-wrap: break-word;">#COLUMN_HEADER#</th>

<!-- Column Template 1 -->
<td ... style="white-space:normal;z-index:999;word-wrap: break-word;">#COLUMN_VALUE#</td>

6. Report Spalten Anpassen

<!-- Column Heading: -->
<span class="hyph" style="width:50px;text-decoration: underline;">Anwendungsname</span>

<!-- HTML Expression -->
<span class="hyph" style="width:50px;">#NAME#</span>

Info: Hier definieren Sie die maximale Breite und die Option Hyphenation zu verwenden.

7. APEX Dynamic Action für Report anlegen

After Report Refresh Trigger mit javascript Ausführung: $('.hyph').hyphenate();
Im Idealfall sollte sollte ein ähnlicher Report wie in meiner Beispielanwendung herauskommen:
http://ta-it-consulting.de/hyphenation.html

Info 1: Die LANG Option im HTML Tag definiert die Übersetzungssprache <html lang="de">
Info 2: Das Plugin kann auch in APEX 3.2 verwendet werden, außerdem ist der IE6 ohne Probleme verwendbar.

Das Ergebnis ist eine universelle Lösung die all ihre Reportprobleme lösen könnte.

Der einzige Haken ist eine erhöhte CPU Auslastung auf der Clientebene. Also Vorsicht vor verschwenderischer Übersetzung.

Mal was anderes: Inzwischen ist auch der AAW-DBMON ONLINE: http://ta-it-consulting.de/dbmon.html
APEX-AT-WORK no image

Debugging hint for your APEX pl/sql processes

Von Tobias Arnhold → 8.12.2010
Often I use to much pl/sql code inside my APEX processes. As we all know it is just better using complex code inside packages. In case you got trouble with your APEX code and you can't find a fast way debugging it. Just use some javascript popup boxes:

-- Test Box
htp.prn('<script>alert("TEST");</script>');

-- Box with item values showing an IF validation:
htp.prn('<script>alert("'||:P1_TEST1 || ' = ' || :P1_TEST2 || '");</script>');

Summer is coming to an end and it becomes time to blog some more. Right now I'm developing a new small APEX application which describes a way how you can easily use hyphenation inside your application. In that combination I also found a trick how you can prevent the misbehavior of IE6 with fixed column width inside your Reports.

Tobias
APEX-AT-WORK no image

All about tooltips

Von Tobias Arnhold → 6.09.2010
There a couple of tooltip examples/HowTos for APEX available and it becomes time to get them all together:
Paulo Vale's solution: http://apex.oracle.com/pls/otn/f?p=25110:5
HowTo: http://apex-notes.blogspot.com/2008/01/javascript-tootip-integration.html

Dan McGhan's solution: http://apex.shellprompt.net/pls/apex/f?p=apex_demo:3
HowTo: http://www.danielmcghan.us/2008/06/ajax-item-help.html

Patrick Wolf's solution: http://www.inside-oracle-apex.com/using-tooltips-in-oracle-apex-applications/

Martin Giffy D'Souza solution: http://apex.oracle.com/pls/otn/f?p=20195
HowTo:
http://www.talkapex.com/2009/09/tooltip-help-in-apex-alternative-to.html

eDBA solution: http://application-express-blog.e-dba.com/?p=281

Flavio Casetta's solution: http://apex.oracle.com/pls/otn/f?p=38250:11:0

Carsten Cerni's solution: http://www.cc13.com/wordpress_21/2009/03/12/apex-jquery-und-cluetip/

Hmm I wonder what nice APEX Plug-ins can be build for functionality like that. :D

Post if there are more solutions available.
APEX-AT-WORK no image

Access inner HTML/child elements

Von Tobias Arnhold → 6.02.2010
Sometimes when I worked with Reports and special HTML objects I came across the problem to access different in-line html elements by javascript.

This link provides really useful know how about the access of DOM elements:

http://www.javascriptkit.com/javatutors/dom2.shtml


Some javascript alertbox examples:
alert(document.getElementById(col_rownum).childNodes[1].value);
alert(document.getElementById(col_rownum).firstChild.innerHTML);

If one of you know even better documentation. Just add a comment.
APEX-AT-WORK no image

Button with changing icon

Von Tobias Arnhold → 5.24.2010
A while ago I wrote how to create your own Javascript buttons inside a region:
http://apex-at-work.blogspot.com/2009/05/building-your-own-button-in-apex-region.html

Here the example about how to change the icon "on mouse over" event:
Changing Images on Mouseover Using JavaScript


<img
id="#CURRENT_ITEM_ID#_btn"
src="/i/unpressed-icon.gif"
alt="Search"
onclick="javascript:doSubmit('SEARCH')"
style="cursor: pointer"
title="Search"
onmouseover="document.#CURRENT_ITEM_ID#_btn.src='/i/pressed-icon.gif'"
onmouseout="document.#CURRENT_ITEM_ID#_btn.src='/i/unpressed-icon.gif'"
>

Update 01.06.2010:
In case you want to use it inside your report then use this code snippet:

SELECT...
'<img src="/i/bilder/icon-unpressed.gif"'
|| ' id="btn_ID' || rownum || '" style="cursor: pointer"'
|| ' title="Save changes!" alt="Save changes!"'
|| ' onmouseover="document.btn_ID' || rownum || '.src=''/i/bilder/icon-is-pressed.gif''"'
|| ' onmouseout="document.btn_ID' || rownum || '.src=''/i/bilder/icon-unpressed.gif''" />' as BTN_PRESS
FROM ...
APEX-AT-WORK no image

AAW-DBMON geht in erster Beta Version unter APEX 4 EA3 ONLINE

Von Tobias Arnhold → 5.15.2010
The following post is targeted towards a German audience, thus it is in German:

Wie vor einer ganzen Weile versprochen habe ich es endlich geschafft ein erstes Beta Release der AAW-DBMON Anwendung Online zu bringen! Das Release läuft schon unter APEX 4.0! Also schaut es euch mal an. Es können aus administrativen Gründen keine Daten dynamisch generiert werden. Also gebt GROßE Zeiträume bei den Charts an.
AAW-DBMON - http://tryapexnow.com/apex/f?p=2508:1:
Account:
Admin, Password: admin
Monitoring, Passwort: monitoring

Die Beta-Tester erhalten in den nächsten Tagen das aktuelle Release + Anleitung.

Call Javascript function from APEX report column link

Von Tobias Arnhold → 5.14.2010
I know it is not really new but it is always good to have an example just for the case you don't have all code in your head! :D

Column-Link:
Link Text: <img src="/i/my_icons/small_icon.png" alt="Short preview">
Link Attribute: title="Short preview"
Target: URL
URL: javascript:fnc_preview('111',#ID#);



Tip: GIF's with empty background can be displayed by IE6. PNG files can be displayed by IE6.