tumblr counter
2012
01.09

Most of my projects involve users who are in a hurry. They need information quickly and they don’t want to linger around, drilling down on reports for 30 minutes at a time. They usually have a small window of opportunity to get the information they need and get back to their main tasks. When presented with a typical set of dashboards they have over 10 links, menu items, high level reports to drill down on, chart… information overload.

This blog post will demonstrate how to setup a simple Search Page to guide the users to the relevant dashboard quickly, and to improve the overall user experience.

This example is based on the 10g sample sales repository. (Normally I would recommend a high performing database solution (ETL/Materialised Views, indexed and optimised for the search criteria) but in this case the samplesales data is an XML dataset and good enough for a demo. I will use a clustered UNION statement to show the various search results in one report). We will let the users “Search” through the various dimensional data and return exact or partial matches. The returned result will include a href link so the user can select the search result they wish to inspect, google-ized. On click, they are navigated to the most relevant dashboard for immediate results.

1. Create a “Search” Dashboard Page.
I have already constructed this in the find a prompt post where I setup the search page with a custom search prompt.

2. Setup your banner with home and search icons (optional).
This is a modification of a previous post where I demonstrated how to create a floating toolbar.
By adding a special home icon and a search icon the users won’t get lost in the dashboards. It’s important to create a user experience that is consistent between pages/dashboards, flows and hides the nonsense that typically litters a OBIEE dashboard page.
In this example I’ve added a home icon and a search icon.

<div id="my_banner" style="top:0px; left:0px; position: absolute; z-index=11; visibility=show; right=0px;">
<table cellspacing="0" style="text-align: left; vertical-align: middle; background-color: rgb(24, 24, 24); height: 70px; width:expression((width1 = window.innerWidth?document.body.clientWidth:document.documentElement.clientWidth) + 'px'); padding: 0px; white-space: nowrap;" class="SectionTable"><tr><td> </td></tr></table>
</div>

<div id="my_banner_title"><font color="#FFFFFF"; style="top:20px; position:absolute; font-size:26px; text-align:center; margin-left:auto; margin-right:auto; left:0px; right:0px; width:expression((width1 = window.innerWidth?document.body.clientWidth:document.documentElement.clientWidth) + 'px');">Main Menu</font>
</div>

<div id="my_logo" style="top:1px; left:1px; position: absolute; z-index=14; visibility=show;">
<img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/logo.png" height=68 border=0></div>

<div id="my_toolbar" style="top:20px; right:10px; position: absolute; z-index=14; visibility=show;">
<a href="/analytics/saw.dll?Dashboard&PortalPath=/shared/Sample%20Sales/_portal/00%20Overview&Page=Content%20Index&Action=Navigate">
<img src="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/house-icon.png" border=0></a>
<a href="mailto:noreply@wilson-is.com"><img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/email.png" border=0></a>
<a href="/analytics/saw.dll?Dashboard&PortalPath=/shared/Sample%20Sales/_portal/Search%20Page&Page=Search&Action=Navigate"><img src="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/Search-2-icon.png" border=0 alt="search dashboards"></a>
</div>


3. Construct your “Search Results” report and configure for the search page.
In the sample sales repository we have various dimensional data that the users could potentially search for. I have slapped together a quick example of some search results based on the Customer, Product, Orders, Employee and Market Dimension. On click of a result, the user will be navigated to the appropriate dashboard showing the appropriate result.



Make sure you set the result column to HTML type

The result column is now HTML format (see previous pic)… so we need to piece together a HTML HREF string using the results and the href navigation path. In this example we are going to setup the Customers Details navigation so if a customer record is clicked on, they are navigated over to that customer dashboard. Note: this string is passing the customer name as a parameter to the dashboard…


….


'<a href="/analytics/saw.dll?Dashboard&PortalPath=/shared/Sample%20Sales/_portal/00%20Overview&Page=02%20Customers%20Details&Action=Navigate&col1=%22D1%20Customer%22.%22C1%20%20Cust%20Name%22&val1=%22' || "D1 Customer"."C1 Cust Name" || '%22">' || 'Customer: ' || ucase("D1 Customer"."C1 Cust Name" || ', ' || "D1 Customer"."C2 Cust Status"|| ', ' || "D1 Customer"."C3 Cust Type"|| ', ' || "D1 Customer"."C5 Segment"|| ', ' || "D1 Customer"."C6 Cust Industry"|| ', ' || "D1 Customer"."C7 Credit Rate"|| ', ' || cast("D1 Customer"."C8 First Contact Date" as char)|| ', ' || cast("D1 Customer"."C0 Cust Key" as char) || ', ' || cast("D1 Customer"."C-00 Cust Key (Segmentation)" as char)) || '</a>'


Save your work!! ;-)
..

4. Test your Search Results page.

5. On Click, the browser navigates to the appropriate dashboard displaying the appropriate result
If you look closely, the dashboard is automaticlally filtering for the customer “Andrew Jones”.

I know many OBIEE practitioners will *sigh* at this post but all too often we’re forgetting our target audience. Just a small amount of usability polishing can really improve the user experience, and the overall result of the project.

I hope this helps someone out – My project(s) have benefited from this approach.

My next post will consolidate all of my previous posts into a full package main menu, breadcrumbs etc. It redefines the OBIEE user experience altogether…

L out.
p.s. leave a comment.
p.p.s. please add my blog to your blogroll if you’re an OBIEE blogger, thanks.

2012
01.03

Update

Hi there, it’s been a while since my last post. I’ve been very busy with my recent project and it went live today. I will focus on updating my blog over the following weeks. Any requests/recommendations? email me. L out.

2011
08.17

This blog entry is about finding a prompt on a page and from there you can dynamically manipulate the html object. ie. resizing, style, setting focus (making the cursor default to that prompt) etc. This is a simple piece of DHTML (javascript) and very useful.

1. Setup the Dashboard Page with your prompts
In this example I have a simple dashboard page with one prompt on it. The prompt name is “Search”.

Why do I need to Find a Prompt?
In order to manipulate the prompt you need to find it in the HTML source. Every time the page is requested from the OBIEE presentation server it renders the prompts on the page with unique IDs making it difficult to locate and manipulate prompts. For this reason we need a piece of javascript to iterate through the dashboard page (HTML source) and look for the specific prompt and then return ID value.
You can do this yourself by clicking “View Source” in your browser and then searching for all occurrences of the prompt name, in this case “Search”.


This input box is the target, we want to find it and return the ID.

In this example we’re going to use the “Search” Edit Box prompt as seen in the screenshot above.

There are no easy ways to manipulate the input box prompt via the properties in OBIEE Dashboards. Yes you can manipulate the CSS style but it is limited. You can’t perform the following via style sheets:
1. uppercase/lowercase the input field before submitting to the database;
2. set focus/highlight the text onload;
3. adjust properties of the text field automatically;
4. perform javascript validations before executing database query;
5. add/remove custom events to the input box; etc

This blog post will demonstrate how to “find” the prompt on the page and then open up a world of options to you via javascript. In this example we will perform the following:
1. onload, injection of the “findTextPrompt” function into the HEAD of the document;
2. set the width of the Search Prompt so it looks good and longer than 10 chars;
3. set the colour of the text (why not) ;-)
4. set focus so the user can start typing straight away without having to click inside the text box;
5. on “Enter” the field is submitted to the database;

Step 1. Add the Javascript to your dashboard page
(if you’re not sure how to add Javascript to your page please read my other blog posts ie. Adding a Dynamic Banner).


<script type="text/javascript">

/*
Created By: Leigh Wilson (leigh@wilson-is.com)

http://www.wilson-is.com

DEVELOPER NOTES
______________________________________________________________________
This code is tested on Internet Explorer 6, 7, 7 and 9.

*/

function injectJavascriptIntoHead(scripttext) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.text = scripttext;
document.getElementsByTagName('head')[0].appendChild(script);
return false;
} //injectJavascriptIntoHead

var findinputboxer = '';
findinputboxer += 'function findTextPrompt(fieldname) {\n';
findinputboxer += '// this function will traverse the DOM and return the input element that matches the search field.\n';
findinputboxer += ' var spans = document.getElementsByTagName("span");\n';
findinputboxer += ' for (var i=0;i<spans.length;i++) {\n';
findinputboxer += ' if (spans[i].className == \'GFPCaption\' && spans[i].innerHTML == fieldname) {\n';
findinputboxer += ' //ok, we\'ve found the field but the input box is in the next SPAN so let\'s get the next span\n';
findinputboxer += ' //alert(spans[i+1].innerHTML);\n';
findinputboxer += ' var inputbox = spans[i+1].innerHTML;\n';
findinputboxer += ' var pos = inputbox.indexOf("id=");\n';
findinputboxer += ' var pos2 = inputbox.indexOf(" ", pos+1);\n';
findinputboxer += ' var id = inputbox.substr(pos+3, pos2 - (pos+3));\n';
findinputboxer += ' id = id.replace( new RegExp(\'"\', \'g\'), \'\');\n';
findinputboxer += ' return id;\n';
findinputboxer += ' }\n';
findinputboxer += ' }\n';
findinputboxer += ' return \'\';\n';
findinputboxer += '}\n';

injectJavascriptIntoHead(findinputboxer);

var searchjs = '';
searchjs += 'function listen(evnt, elem, func) {\n';
searchjs += ' if (elem.addEventListener) \/\/ W3C DOM\n';
searchjs += ' elem.addEventListener(evnt,func,false);\n';
searchjs += ' else if (elem.attachEvent) {\n';
searchjs += ' \/\/ IE DOM\n';
searchjs += ' var r = elem.attachEvent("on"+evnt, func);\n';
searchjs += ' return r;\n';
searchjs += ' } else window.alert(\'Error: cant listen on event!!!\');\n';
searchjs += '} \/\/listen\n';
searchjs += '\n';
searchjs += 'function checkIfEnterPressed(e) { \n';
searchjs += ' if (!e) { e = window.event; if (!e) { e = event; } }\n';
searchjs += ' var key = e.keyCode ? e.keyCode : e.charCode\n';
searchjs += ' if (key == 13) { \n';
searchjs += ' global_go();\n';
searchjs += ' return false;\n';
searchjs += ' } \// if\n';
searchjs += '} \//checkIfEnterPressed\n';
searchjs += '\n';
searchjs += '\n';
searchjs += 'function loadSearchPage() {\n';
searchjs += ' NQOnLoadEvent(); \/\/we need to call the default OBIEE onload event first\n';
searchjs += ' var searchfield;\n';
searchjs += ' \n';
searchjs += ' searchfield = document.getElementById(findTextPrompt(\'Search\'));\n';
searchjs += ' searchfield.value = searchfield.value.toUpperCase();\n';
searchjs += ' \n';
searchjs += ' \//Set the search field so that on key press it will clear the hidden prompts of any values.\n';
searchjs += ' \n';
searchjs += ' searchfield.size="70";\n';
searchjs += ' searchfield.style.backgroundColor="black";\n';
searchjs += ' searchfield.style.color="white";\n';
//searchjs += ' listen("keypress", searchfield, checkIfEnterPressed);\n';
searchjs += '\n';
searchjs += ' searchfield.focus(); \//set focus\n';
searchjs += ' searchfield.select(); \//auto select the text\n';
searchjs += '}\n';

injectJavascriptIntoHead(searchjs);

listen("load", window, function() { loadSearchPage(); });
</script>

Step 2. Modify the code accordingly
The only place you need to modify the code is the name of the prompt. In this post the prompt (Label) is “Search” and must be the only prompt on the page with that specific name.

searchjs += ' searchfield = document.getElementById(findTextPrompt(\'Search\'));\n';

Make sure the findTextPrompt function contains the name of the prompt you are searching for.

I customised the prompt using the following piece of code:

searchjs += ' searchfield.size="70";\n';
searchjs += ' searchfield.style.backgroundColor="black";\n';
searchjs += ' searchfield.style.color="white";\n';

Then the last piece of sexy code sets the prompt as the focus and selects the text inside it (if any). In the context of an input box, “Set Focus” is the term used when setting the cursor to default to this field so it’s ready for the user to start typing. They don’t need to click on it or in it to start typing their search results.

searchjs += ' searchfield.focus(); \//set focus\n';
searchjs += ' searchfield.select(); \//auto select the text\n';

The end result is a very cool looking Search Page….
Onload
The user types in “andrew”…

On Enter…the page uppercases the text, submits to the database and the report runs. As the page refreshes the text is “set focus” and the user can continue searching quickly without the need for clicking around. The way it should be!!

Give me a shout if you would like me to demo some other events/customisations. If i have time I will reply with an example post.

L out.

2011
07.29

In this post I will continue on from the Dynamic Banner post and add a floating toolbar to the top right of the page. In this example I’m going to add the Excel icon and a Email icon.

1. Icon Selection


In this example we need an excel icon and an email icon. More importantly, the icons/images need to be royalty free or you will need to purchase the right to use the icons. I find this website to be very useful because most of the images are royalty free, clean and they come in different scaled sizes. In this blog post we’re using 32×32 size which is a nice clickable size for icons. Use the search function to find the icons you would like to use on your site.

2. Download the icons
You will need to download the icons and host them on a productionised webserver. I typically use the OBIEE Production webserver and package up images into a custom WAR file. The important thing to remember is that these images will be requested by the users’ browser each time the page refreshes so to ensure the images are up and working it’s recommend to upload them onto a solid productionised webserver.

3. Adding the toolbar to the banner

<div id="my_banner" style="top:0px; left:0px; position: absolute; z-index=11; visibility=show; right=0px;">
<table cellspacing="0" style="text-align: left; vertical-align: middle; background-color: rgb(24, 24, 24); height: 70px; width:expression((width1 = window.innerWidth?document.body.clientWidth:document.documentElement.clientWidth) + 'px'); padding: 0px; white-space: nowrap;" class="SectionTable"><tr><td>&nbsp;</td></tr></table>
</div>
<div id="my_banner_title"><font color="#FFFFFF"; style="top:20px; position:absolute; font-size:26px; text-align:center; margin-left:auto; margin-right:auto; left:0px; right:0px; width:expression((width1 = window.innerWidth?document.body.clientWidth:document.documentElement.clientWidth) + 'px');">Main Menu</font>
</div>

<div id="my_logo" style="top:1px; left:1px; position: absolute; z-index=14; visibility=show;">
<img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/logo.png" height=68 border=0></div>

<div id="my_toolbar" style="top:20px; right:10px; position: absolute; z-index=14; visibility=show;">
<img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/excel.png" border=0>
<a href="mailto:testme@wilson-is.com"><img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/email.png" border=0></a>
</div>

The Excel icon doesn’t have an event associated to it so it’s just an image at this stage. I will add functionality (onclick) events to it in a later post. I’ve added a simple “mail to” on the email icon.

From an end-user perspective having a handy toolbar on each page gives them comfort and stability. They know that by clicking on the email icon they can send their message to the correct team quickly. In a large scale environment there could be different teams servicing different dashboards so by using this dynamic toolbar you can direct the emails to the correct teams seamlessly. This way the users don’t need to go off digging around to find a contact person/team etc. It’s important to maintain them on the dashboard and retain their attention. We don’t want to lose them in a sea of Intranet pages do we?! ;-)

I will look at adding an “onclick” event to the Excel icon in my next post.

2011
07.29

This post follows on from the Dynamic Banner post.

In this example we’re going to float an image on the top left, absolute position of 1, 1.

Adding the floating image to the banner

<div id="my_banner" style="top:0px; left:0px; position: absolute; z-index=11; visibility=show; right=0px;">
<table cellspacing="0" style="text-align: left; vertical-align: middle; background-color: rgb(24, 24, 24); height: 70px; width:expression((width1 = window.innerWidth?document.body.clientWidth:document.documentElement.clientWidth) + 'px'); padding: 0px; white-space: nowrap;" class="SectionTable"><tr><td>&nbsp;</td></tr></table>
</div>

<div id="my_banner_title"><font color="#FFFFFF"; style="top:20px; position:absolute; font-size:26px; text-align:center; margin-left:auto; margin-right:auto; left:0px; right:0px; width:expression((width1 = window.innerWidth?document.body.clientWidth:document.documentElement.clientWidth) + 'px');">Main Menu</font>
</div>

<div id="my_logo" style="top:1px; left:1px; position: absolute; z-index=14; visibility=show;">
<img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/logo.png" height=68 border=0></div>

Considerations
1. the Image needs to be sitting on a production-ised web server. The logo will be retrieved on page load so if you have 50 concurrent users the webserver hosting the image needs to be up and running, no down time. (I would recommend packaging the image into a WAR file and including it on your OBIEE production web server);
2. Make the image as compact/compressed as possible for performance reasons;

I’ll look at adding a floating toolbar to this dynamic banner in my next post.

2011
07.29

As an OBIEE developer it can be hard to say “no” to the end-users when they ask for something simple. Sometimes they ask for something obvious like “I want a title at the top of the page” or “I don’t want to see all those links and distractions across the banner”. This blog entry will demonstrate how to “cover up” the banner and how to dynamically add a title, logo or a toolbar. This method is very simple and requires some dynamic html to lay a rectangle over the original dashboard banner and then float a title in the center.

Traditional OBIEE 10g Dashboard page

Same Page – With a Custom Banner

Steps to Creating Your Custom Banner
1. Edit the Dashboard and drag a Text object onto the dashboard page. Anywhere is fine.

2. Set the “Contains HTML Markup” and put some dummy HTML in there to test it. ie. “<b>My piece of html</b>”. Press OK and save the dashboard.

3. In some cases you might have an error while saving the dashboard if your user account doesn’t have “HTML Markup” enabled. (See Settings->Administration->Manage Privileges. See Answers Section and ensure you belong to the groups in the “Save Content with HTML Markup” section). This is only required for dashboard developers who need to “save” html. All users will still be able to see the dashboard without problems.

4. As you can see the HTML message will appear somewhere on the page.

5. We’re now going to overwrite that HTML message with some dynamic html. The HTML below uses absolute positioning so even though the HTML will be loaded in the same place on the page as the Html message in step 4, the positioning of the HTML will be moved onload to the top left of the screen.

<div id="my_banner" style="top:0px; left:0px; position: absolute; z-index=11; visibility=show; right=0px;">
<table cellspacing="0" style="text-align: left; vertical-align: middle; background-color: rgb(23, 102, 172); height: 70px; width:expression((width1 = window.innerWidth?document.body.clientWidth:document.documentElement.clientWidth) + 'px'); padding: 0px; white-space: nowrap;" class="SectionTable"><tr><td>&nbsp;</td></tr></table>
</div>

<div id="my_banner_title">
<font color="#FFFFFF"; style="top:5px; position:absolute; font-size:26px; text-align:center; margin-left:auto; margin-right:auto; left:0px; right:0px; width:expression((width1 = window.innerWidth?document.body.clientWidth:document.documentElement.clientWidth) + 'px');"><b>www.wilson-is.com</b><br>Main Menu</font>
</div>

Copy the code from this page. Paste it into Notepad (or equivalent text editor first) then copy/paste from there.

6. For cleanliness, rename the text object to something friendly like “CUSTOM BANNER”. Save the dashboard page.

7. The page should render a nice clean banner (in this case a blue rectangle with a title).

8. The page looks quite nice and clean without all the banner links etc.

Why would I want to do this… I can just use a custom skin, right?
Yes. You can use a skin but there are some problems with this approach.
a) you need control of the production box. In some businesses this is under very tight control and could take weeks/months to make a change and in a lot of cases they will just say “no” outright because it’s a production risk;
b) the skin would require some manipulation of “out of the box” javascript and html… not cool;
c) if you use a skin and then the users ask for a small change this requires a prod change and roll out… which could make the option A & B a big problem.
d) using a skin will require migration considerations when migrating to new versions of OBIEE… something to consider;
e) adding a dynamic banner/title is nearly impossible using a skin – “too hard basket”.

If I use this approach I will need to put that Text Object on each Dashboard page… that could take a while, right?
Yes/No. Yes you will need to add the Text Object to each page but you can drag it from a previously saved Dashboard Page and drop it onto the page you’re updating. So no, it’s not a long arduous task at all. In-fact, I recommend dragging/dropping from a previously saved Text Object to ensure you have one version of the banner used across all Dashboard Pages. Don’t do them by hand on each page or you run the risk of version control issues and headaches. Be smart :-)

Cool things you can add to this Custom Banner approach
1. floating toolbar for help icons, emailing, printing etc.
2. custom logo
I will be adding these two additions to the next blog entry… stay tuned.

2011
05.17

Introduction

Mobile computing is gaining ground rapidly in the Business Intelligence community. As a BI tool mobile devices like the Apple iPad are very appealing to the user community for demonstrating their reports/presentations on the go. The iPad & iPad2 have some hardware and software specifications that can make Oracle Business Intelligence development difficult. Issues like usability, overall look and feel, scrolling, browser rendering and even issues displaying graphs due to no Flash. This post will explain the major pitfalls and how to work around them to deliver the best OBIEE Dashboards possible.

 

This document will include iPad and iPad2 compliancy for OBIEE 10g.

 

The Apple iPad & iPad2 – Know Your Device

For the purposes of this document the specifications will be written for the iPad2 and where a difference is between the iPad and iPad2 it will be explained and resolved.


 

 

iPad/iPad2 Hardware specifications relevant to OBIEE Reporting

  • Wi-Fi (802.11a/b/g/n) and optional 3G module. It’s assumed that the Ipad/Ipad2 being used for demonstration has a basic network latency of at least 50Kbit/sec.
  • Display resolution of 1024×768. (In portrait it’s 768×1024, landscape it’s 1024×768).
  • Processor:
  • IPad1 contains the A4 1Ghz single core processor; 256MB PoP (Package on Package) memory, Graphics Processing Unit built into the chip;
  • IPad2 contains the A5 1Ghz dual core processor; 512MB PoP Memory, GPU built in;

Both are adequate for report rendering.

  • Location Services:
    • The Wi-Fi only model uses an approximation approach to returning the latitude/longitude of the device in use;
    • The Wi-Fi & 3G models use Assisted GPS and 3G for more accurate latitude/longitude results.

This could be useful for gathering stats on user location when running reports but outside the scope of this post.

 

Software Specifications

  • Accessibility Support
    • Support for playback of closed-captioned content;
    • VoiceOver screen reader;
    • Full-screen magnification; and
    • White on Black display
  • Built in support for document types:
    • .jpeg, .tiff, .gif (image types);
    • .doc and .docx (word files);
    • .ppt & .pptx (powerpoint);
    • .htm/html;
    • .key (keynote), .numbers (numbers), .pages (pages), .pdf (Preview and Adobe Acrobat)
    • .txt (text); .rtf (rich text);
    • .vcf (contact card);
    • .xls and .xlsx (excel);
    • Does not support Adobe Flash files/plugin

 

 

 

Safari Browser & why we don’t need a custom application from the App Store

The Apple iPhone/iPad community is used to downloading an application for most things. If someone needs a free game for entertainment they can search for and download a wide variety of choices. These applications are developed “natively” for the iPhone/iPad using Apple’s proprietary programming frameworks and languages (Objective-C for example).

 

It’s a common misconception that we need to download a special Oracle application to show OBIEE dashboards on an iPad. We simply need a web browser and a network connection so the iPad can browse the OBIEE server and open the dashboards much like a normal user does.

 

The iPad/iPad2 has the Safari browser pre-installed as part of the iOS package.

 

For the purposes of this post the iPad OS version we’re using is iOS 4.3.

 

OBIEE demo environment

Windows 7 Professional Virtual Machine, OBIEE 10.1.3.4.1, Sample Sales XML/RPD installed.

Desktop Machine Screenshot


 

iPad Screenshot


 

Aas you can see, the iPad/iPhone devices don’t support Adobe Flash so the default chart rendering option isn’t working.

Chart Solutions

The OBIEE 10g platform provides a java charting tool which renders the charts in Flash (default), SVG, PNG and JPEG formats. The Flash rendering provides for interactivity like drilling down, zooming etc.

 

Apple doesn’t support Adobe Flash on it’s mobile devices – flash will not work. SVG also didn’t appear to be supported by Safari.

 

To work around this you will need to adjust your instanceconfig.xml file to render the charts in an alternative format lke PNG or JPEG.

 

(It should be noted that the Flash chart can handle larger dataset compared to the other formats. OBIEE reports should be written to return the most compact result set possible for quicker client performance).
See inserted XML towards the bottom of the instanceconfig.xml screenshot


After Adjusting Charts to render in PNG format – iPad

Success!!

I will add some more posts on dashboard formatting for “best fit” and other helpful tips for iPad and iPhone.

2011
05.17

Welcome

Hi there – I’m an Australian software developer based in London and have over 5 years experience working on the Siebel Analytics/Oracle Business Intelligence Enterprise Edition platform. As most developers will testify, OBIEE can be a black box sometimes requiring us to pull things out of our hats. We all have tips/tricks that we encounter along the way and quite often forget where we saw them when we really need them.

This blog is a collection of my personal tips/tricks (so i don’t forget them…and also to share with other developers).

Please feel free to contact me directly or make a comment to a posting. If you feel that you have something to add to a particular posting please email me and I will add your tips/tricks to it :-) .

I hope you enjoy,

Leigh.
www.wilson-is.com