Friday, July 13, 2012

OBIEE & Tooltips

מה זה tooltip? לפי מילון מורפיקס, זה "ממשק גראפי בצורת חלון קטן, המופיע כשעומדים עם עכבר על איזור מסויים במסך, וכולל מידע לגביו". כמו בציור כאן:


ה"לי לי לי" זהו הtooltip.






בעיה קטנה: אין תמיכה מובנית בtooltip בOBIEE.
לעומת זאת ניתן בהחלט לקבל זאת בקצת השקעה. הנושא נדון כבר במספר בלוגים, למשל:

או http://debaatobiee.wordpress.com/tag/obiee-tooltips/.

בואו נבדיל בין שני סוגי tooltip: קבוע ותלוי תוכן.

tooltip קבוע:
עדכון מאוחר: למעשה פתרון מעולה מתואר כאן: http://www.kpipartners.com/blog/bid/83192/OBIEE-Tool-Tips-In-Column-Headers
הרעיון המרכזי להגדיר בכותרת תוכן כמו 
<span title="REMARK TEXT">Header text</span>
ולסמן את זה כמכיל HTML. 
היתרון כאן, ההדפסה יוצאת מושלמת.

אופציות נוספות:

צורה נוחה לעשות tooltip קבוע היא באמצעות Data Format (תבנית נתונים) שנמצא תחת Column Properties (מאפייני עמודה):
בדוגמא שלנו נכתב:
@[html]<div title='"לי לי לי"'>@H</div>
שימו לב שהטקסט מוגדר כCustom Text Format (תבנית טקסט מותאמת אישית).
אתם מוזמנים להחליף את הביטוי החשוב "לי לי לי" בכל דבר אחר.

tooltip קבוע 2:
את אותו הדבר ניתן היה לקבל גם דרך הנוסחה (formula) של העמודה. למשל אם נגוון וניצור tooltip שאומר "לה לה לה" על העמודה "PRODUCTS"."PROD_CATEGORY" יש ליצור את הנוסחה הבאה:
'<div title="לה לה לה ">'||"PRODUCTS"."PROD_CATEGORY"||'</div>'

כמובן שנעדכן בתבנית הנתונים את סוג הטקסט לHTML, אחרת תקבלו את זה:

מה שמעניין באופציה זו, שאת הגדרת בנוסחא אפשר לעשות גם בAdministration. 

שם הנוסחה טיפה שונה כמובן:
'<div title="לה לה לה ">'||"SH"."PRODUCTS"."PROD_CATEGORY"||'</div>' 

איך אני מאלץ את העמודה להיות תמיד בdata format (תבנית נתונים) HTML? אופציה פחות נחמדה זה לעשות את זה בכל פעם ידנית, ויותר נחמדה, זה להגדיר את זה פעם אחת ואז לבחור בColumn Properties (מאפייני עמודה) את האפשרות שבתחתית החלון - Save as Default (שמור כברירת מחדל) עבור אותו השדה.


tooltip דינמי ותלוי תוכן
אם הסתדרתם עם האפציה השניה של tooltip קבוע, היתר כבר פשוט.
נניח שבמקום "לה לה לה" אני רוצה לקחת שעל העמודה "PRODUCTS"."PROD_CATEGORY" יהיה tooltip בו כתוב: This Category ID is, ואחריה קוד הקטגוריה.
הנוסחא שיוצרת את הודעה בלבד , היא:
'This Category ID is '||cast("PRODUCTS"."PROD_CATEGORY_ID" as VARCHAR(30))

אנו צריכים להפעיל cast רק בגלל שProd_category_id הוא מספר.
מה שנכנס לנוסחה בפועל הוא:
'<div title="This Category ID is '||cast("PRODUCTS"."PROD_CATEGORY_ID" as VARCHAR(30))||'">'||"PRODUCTS"."PROD_CATEGORY"||'</div>'
שימו לב לתזוזה של הגרש שלפני This, החוצה, לפני הdiv> וכן ליתר מיקומי הגרשים. אם יש בעיות, זה לרוב בגלל הגרשים. לכן למען הבהירות אחליף את פונקצית הcast ותוכנה בXX. כמו כן אדגיש בצהוב כל גרש בודד '. מתקבל:
'<div title="This Category ID is '||XX||'">'||"PRODUCTS"."PROD_CATEGORY"||'</div>'
זה יוצא כך:
עכשיו תרגישו חופשיים לסבך את זה כרצונכם, למשל tooltip מותנה וכדומה. זכרו שאפשר גם להעביר את כל זה, בצורה שקופה למשתמשים, לAdministration.

דוגמא אחרונה:
case when "PRODUCTS"."PROD_CATEGORY" in ('Photo', 'Hardware') then  '<div title="This Category ID is '||cast("PRODUCTS"."PROD_CATEGORY_ID" as VARCHAR(30))||'">'||"PRODUCTS"."PROD_CATEGORY"||'</div>' else "PRODUCTS"."PROD_CATEGORY" end
הtooltip מופיע רק עבור קטגוריות Photo ו-Hardware.

No comments:

Post a Comment