<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Oracle Business Intelligence Developer Blog</title>
	<atom:link href="http://www.wilson-is.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.wilson-is.com/blog</link>
	<description>Oracle Business Intelligence Blog - OBIEE</description>
	<lastBuildDate>Sat, 21 Apr 2012 10:14:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Rittmanmead 11g Bootcamp course</title>
		<link>http://www.wilson-is.com/blog/2012/04/rittmanmead-11g-bootcamp-course/</link>
		<comments>http://www.wilson-is.com/blog/2012/04/rittmanmead-11g-bootcamp-course/#comments</comments>
		<pubDate>Sat, 21 Apr 2012 09:10:49 +0000</pubDate>
		<dc:creator>Leigh Wilson</dc:creator>
				<category><![CDATA[Advanced Dashboarding]]></category>

		<guid isPermaLink="false">http://www.wilson-is.com/blog/?p=515</guid>
		<description><![CDATA[Approximately six years ago I entered the OBI world by attending a Siebel Analytics developer &#038; admin course in Perth, Australia. Since that time I have been focused 100% on OBI development and covered the full product stack. Recently though my skill set has been very business facing and as a result my RPD and [...]]]></description>
			<content:encoded><![CDATA[<p>Approximately six years ago I entered the OBI world by attending a Siebel Analytics developer &#038; admin course in Perth, Australia. Since that time I have been focused 100% on OBI development and covered the full product stack. Recently though my skill set has been very business facing and as a result my RPD and Physical database side was becoming rusty. Coupled with the new 11g product suite I decided I needed a solid revision across the 11g OBI platform &#8211; the <a href="http://www.rittmanmead.com/training/trn202-oracle-bi-ee-11g-bootcamp/">Rittmanmead 11g Bootcamp course</a> was the natural choice.</p>
<p>Located at the Rittmanmead HQ in Brighton, the office/training room was brand new! Each attendee was using a new 15&#8243; mac book pro (remote desktop to a dedicated obi 11g instance). Based near the sea, it was a refreshing feeling being out of the hustle and bustle of inner London. The instructor was <a href="http://www.linkedin.com/pub/adam-seed/18/506/124">Adam Seed</a> a Rittmanmead OBI consultant. He was excellent, best instructor I&#8217;ve come across by a long shot. He worked his way through the very detailed and thorough 11g notes and explained his own methods, bugs/issues in past versions and he delivered the course very well. 12 attendees of varying IT backgrounds, we all walked away with a solid OBI 11g understanding and ready to solve problems.</p>
<p>I have an 11g migration to get stuck into when I get back to the office on Monday <img src='http://www.wilson-is.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> &#8230; wish me luck!</p>
<p>L out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wilson-is.com/blog/2012/04/rittmanmead-11g-bootcamp-course/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update!!</title>
		<link>http://www.wilson-is.com/blog/2012/03/update-2/</link>
		<comments>http://www.wilson-is.com/blog/2012/03/update-2/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 20:46:30 +0000</pubDate>
		<dc:creator>Leigh Wilson</dc:creator>
				<category><![CDATA[Welcome]]></category>

		<guid isPermaLink="false">http://www.wilson-is.com/blog/?p=507</guid>
		<description><![CDATA[it&#8217;s been a very busy few months (for everyone in the OBI space)&#8230; I&#8217;m booked on a Rittmanmead 11g Bootcamp course in mid April, Brighton Beach. Looking forward to relaxing on the beach, beers, smashing some 11g course material and getting a tan. I have doubts about the tan, and the beer&#8230; but it will [...]]]></description>
			<content:encoded><![CDATA[<p>it&#8217;s been a very busy few months (for everyone in the OBI space)&#8230;</p>
<p>I&#8217;m booked on a <a href="http://www.rittmanmead.com/training/trn202-oracle-bi-ee-11g-bootcamp/">Rittmanmead 11g Bootcamp</a> course in mid April, Brighton Beach. Looking forward to relaxing on the beach, beers, smashing some 11g course material and getting a tan. I have doubts about the tan, and the beer&#8230; but it will be a solid week and I&#8217;m looking forward to taking time out from work and hitting the bootcamp hard. 16th to 20th April&#8230; give me a shout if you&#8217;re joining that bootcamp and we&#8217;ll sort out a beer beforehand&#8230;</p>
<p>L out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wilson-is.com/blog/2012/03/update-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OBIEE 10g &#8211; Search Page</title>
		<link>http://www.wilson-is.com/blog/2012/01/obiee-10g-search-page/</link>
		<comments>http://www.wilson-is.com/blog/2012/01/obiee-10g-search-page/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 20:48:19 +0000</pubDate>
		<dc:creator>Leigh Wilson</dc:creator>
				<category><![CDATA[Advanced Dashboarding]]></category>

		<guid isPermaLink="false">http://www.wilson-is.com/blog/?p=301</guid>
		<description><![CDATA[Most of my projects involve users who are in a hurry. They need information quickly and they don&#8217;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 [...]]]></description>
			<content:encoded><![CDATA[<p>Most of my projects involve users who are in a hurry. They need information quickly and they don&#8217;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&#8230; information overload.</p>
<p>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.</p>
<p>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 &#8220;Search&#8221; 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.</p>
<p><strong><span style="text-decoration: underline;">1. Create a &#8220;Search&#8221; Dashboard Page.</span></strong><br />
I have already constructed this in the <a href="http://www.wilson-is.com/blog/2011/08/obiee-10g-finding-a-prompt/">find a prompt</a> post where I setup the search page with a custom search prompt.</p>
<p><strong><span style="text-decoration: underline;">2. Setup your banner with home and search icons (optional).</span></strong><br />
This is a modification of a <a href="http://www.wilson-is.com/blog/2011/07/obiee-10g-adding-a-dynamic-toolbar-to-the-dashboard/">previous post</a> where I demonstrated how to create a floating toolbar.<br />
By adding a special home icon and a search icon the users won&#8217;t get lost in the dashboards. It&#8217;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.<br />
In this example I&#8217;ve added a home icon and a search icon.<br />
<a href="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/Screen-Shot-2012-01-09-at-19.39.35.png"><img src="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/Screen-Shot-2012-01-09-at-19.39.35.png" width=600 border=1></a></p>
<p><code>&lt;div id="my_banner" style="top:0px; left:0px; position: absolute; z-index=11; visibility=show; right=0px;"&gt;<br />
&lt;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"&gt;&lt;tr&gt;&lt;td&gt;&nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br />
&lt;/div&gt;</p>
<p>&lt;div id="my_banner_title"&gt;&lt;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');"&gt;Main Menu&lt;/font&gt;<br />
&lt;/div&gt;</p>
<p>&lt;div id="my_logo" style="top:1px; left:1px; position: absolute; z-index=14; visibility=show;"&gt;<br />
&lt;img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/logo.png" height=68 border=0&gt;&lt;/div&gt;</p>
<p>&lt;div id="my_toolbar" style="top:20px; right:10px; position: absolute; z-index=14; visibility=show;"&gt;<br />
&lt;a href="/analytics/saw.dll?Dashboard&#038;PortalPath=/shared/Sample%20Sales/_portal/00%20Overview&#038;Page=Content%20Index&#038;Action=Navigate"&gt;<br />
&lt;img src="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/house-icon.png" border=0&gt;&lt;/a&gt;<br />
&lt;a href="mailto:noreply@wilson-is.com"&gt;&lt;img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/email.png" border=0&gt;&lt;/a&gt;<br />
&lt;a href="/analytics/saw.dll?Dashboard&#038;PortalPath=/shared/Sample%20Sales/_portal/Search%20Page&#038;Page=Search&#038;Action=Navigate"&gt;&lt;img src="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/Search-2-icon.png" border=0 alt="search dashboards"&gt;&lt;/a&gt;<br />
&lt;/div&gt;</code><br />
<br />
<strong><span style="text-decoration: underline;">3. Construct your &#8220;Search Results&#8221; report and configure for the search page.</span></strong><br />
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.<br />
<a href="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/Screen-Shot-2012-01-09-at-19.51.56.png"><br />
<img src="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/Screen-Shot-2012-01-09-at-19.51.56.png" width=600" border=1></a><br />
<br />
Make sure you set the result column to HTML type<br />
<img src="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/Screen-Shot-2012-01-09-at-19.52.19.png" border=1></p>
<p>The result column is now HTML format (see previous pic)&#8230; 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&#8230;</p>
<p><a href="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/Screen-Shot-2012-01-09-at-20.17.45.png"><img src="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/Screen-Shot-2012-01-09-at-20.17.45.png" width=600 border=1></a><br />&#8230;</p>
<p>&#8230;.<br />
<img src="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/Screen-Shot-2012-01-09-at-20.06.10.png"><br />
<code><br />
'&lt;a href="/analytics/saw.dll?Dashboard&#038;PortalPath=/shared/Sample%20Sales/_portal/00%20Overview&#038;Page=02%20Customers%20Details&#038;Action=Navigate&#038;col1=%22D1%20Customer%22.%22C1%20%20Cust%20Name%22&#038;val1=%22' || "D1 Customer"."C1  Cust Name" || '%22"&gt;' || '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)) || '&lt;/a&gt;'<br />
</code><br />
<a href="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/Screen-Shot-2012-01-09-at-19.51.26.png"><img src="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/Screen-Shot-2012-01-09-at-19.51.26.png" width=600 border=1></a><br />
Save your work!! <img src='http://www.wilson-is.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
..<br />
&#8230;<br />
<strong><span style="text-decoration: underline;">4. Test your Search Results page.</span></strong><br />
<img src="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/Screen-Shot-2012-01-09-at-20.05.36.png"></p>
<p><strong><span style="text-decoration: underline;">5. On Click, the browser navigates to the appropriate dashboard displaying the appropriate result</span></strong><br />
If you look closely, the dashboard is automaticlally filtering for the customer &#8220;Andrew Jones&#8221;.<br />
<a href="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/Screen-Shot-2012-01-09-at-20.05.44.png"><br />
<img src="http://www.wilson-is.com/blog/wp-content/uploads/2012/01/Screen-Shot-2012-01-09-at-20.05.44.png" border=0 width=600></a></p>
<p>I know many OBIEE practitioners will *sigh* at this post but all too often we&#8217;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.</p>
<p>I hope this helps someone out &#8211; My project(s) have benefited from this approach.</p>
<p>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&#8230;</p>
<p>L out.<br />
p.s. leave a comment.<br />
p.p.s. please add my blog to your blogroll if you&#8217;re an OBIEE blogger, thanks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wilson-is.com/blog/2012/01/obiee-10g-search-page/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Update</title>
		<link>http://www.wilson-is.com/blog/2012/01/update/</link>
		<comments>http://www.wilson-is.com/blog/2012/01/update/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 19:31:04 +0000</pubDate>
		<dc:creator>Leigh Wilson</dc:creator>
				<category><![CDATA[Advanced Dashboarding]]></category>

		<guid isPermaLink="false">http://www.wilson-is.com/blog/?p=423</guid>
		<description><![CDATA[Hi there, it&#8217;s been a while since my last post. I&#8217;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.]]></description>
			<content:encoded><![CDATA[<p>Hi there, it&#8217;s been a while since my last post. I&#8217;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? <a href="mailto:leigh@wilson-is.com">email me</a>. L out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wilson-is.com/blog/2012/01/update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OBIEE 10g &#8211; Finding a prompt</title>
		<link>http://www.wilson-is.com/blog/2011/08/obiee-10g-finding-a-prompt/</link>
		<comments>http://www.wilson-is.com/blog/2011/08/obiee-10g-finding-a-prompt/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 14:38:35 +0000</pubDate>
		<dc:creator>Leigh Wilson</dc:creator>
				<category><![CDATA[Prompts Gone Wild]]></category>
		<category><![CDATA[change prompt]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[OBIEE]]></category>
		<category><![CDATA[prompt]]></category>
		<category><![CDATA[prompts]]></category>
		<category><![CDATA[resize]]></category>
		<category><![CDATA[resizing prompt]]></category>

		<guid isPermaLink="false">http://www.wilson-is.com/blog/?p=103</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<p><strong><span style="text-decoration: underline;">1. Setup the Dashboard Page with your prompts</span></strong><br />
In this example I have a simple dashboard page with one prompt on it. The prompt name is &#8220;Search&#8221;.<br /><center><img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/08/findprompt1.png" width=650></center></p>
<p><strong><span style="text-decoration: underline;">Why do I need to Find a Prompt?</span></strong><br />
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.<br />
You can do this yourself by clicking &#8220;View Source&#8221; in your browser and then searching for all occurrences of the prompt name, in this case &#8220;Search&#8221;.<br />
<center><img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/08/findprompt4.png"></center><br />
This input box is the target, we want to find it and return the ID.<br />
<center><a href="http://www.wilson-is.com/blog/wp-content/uploads/2011/08/findprompt5.png" target="_findprompt5"><img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/08/findprompt5.png" width=500 border=0></a></center></p>
<p>In this example we&#8217;re going to use the &#8220;Search&#8221; Edit Box prompt as seen in the screenshot above.<br />
<center><img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/08/findprompt3.png" width=580></center></p>
<p>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&#8217;t perform the following via style sheets:<br />
1. uppercase/lowercase the input field before submitting to the database;<br />
2. set focus/highlight the text onload;<br />
3. adjust properties of the text field automatically;<br />
4. perform javascript validations before executing database query;<br />
5. add/remove custom events to the input box; etc</p>
<p>This blog post will demonstrate how to &#8220;find&#8221; 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:<br />
1. onload, injection of the &#8220;findTextPrompt&#8221; function into the HEAD of the document;<br />
2. set the width of the Search Prompt so it looks good and longer than 10 chars;<br />
3. set the colour of the text (why not) <img src='http://www.wilson-is.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
4. set focus so the user can start typing straight away without having to click inside the text box;<br />
5. on &#8220;Enter&#8221; the field is submitted to the database;</p>
<p><span style="text-decoration: underline;">Step 1. Add the Javascript to your dashboard page</span><br />
(if you&#8217;re not sure how to add Javascript to your page please read my other blog posts ie. <a href="http://www.wilson-is.com/blog/2011/07/obiee-10g-adding-a-logo-to-the-dynamic-banner/">Adding a Dynamic Banner</a>).</p>
<p><code><br />
&lt;script type="text/javascript"&gt;</p>
<p>/*<br />
  Created By: Leigh Wilson (leigh@wilson-is.com)</p>
<p>http://www.wilson-is.com</p>
<p>  DEVELOPER NOTES<br />
  ______________________________________________________________________<br />
  This code is tested on Internet Explorer 6, 7, 7 and 9.</p>
<p>*/</p>
<p>function injectJavascriptIntoHead(scripttext) {<br />
  var script = document.createElement('script');<br />
  script.type = 'text/javascript';<br />
  script.text = scripttext;<br />
  document.getElementsByTagName('head')[0].appendChild(script);<br />
  return false;<br />
} //injectJavascriptIntoHead</p>
<p>var findinputboxer = '';<br />
findinputboxer += 'function findTextPrompt(fieldname) {\n';<br />
findinputboxer += '// this function will traverse the DOM and return the input element that matches the search field.\n';<br />
findinputboxer += '  var spans = document.getElementsByTagName("span");\n';<br />
findinputboxer += '  for (var i=0;i&lt;spans.length;i++) {\n';<br />
findinputboxer += '    if (spans[i].className == \'GFPCaption\' &#038;&#038; spans[i].innerHTML == fieldname) {\n';<br />
findinputboxer += '      //ok, we\'ve found the field but the input box is in the next SPAN so let\'s get the next span\n';<br />
findinputboxer += '      //alert(spans[i+1].innerHTML);\n';<br />
findinputboxer += '      var inputbox = spans[i+1].innerHTML;\n';<br />
findinputboxer += '      var pos = inputbox.indexOf("id=");\n';<br />
findinputboxer += '      var pos2 = inputbox.indexOf(" ", pos+1);\n';<br />
findinputboxer += '      var id = inputbox.substr(pos+3, pos2 - (pos+3));\n';<br />
findinputboxer += '      id = id.replace( new RegExp(\'"\', \'g\'), \'\');\n';<br />
findinputboxer += '      return id;\n';<br />
findinputboxer += '    }\n';<br />
findinputboxer += '  }\n';<br />
findinputboxer += '  return \'\';\n';<br />
findinputboxer += '}\n';</p>
<p>injectJavascriptIntoHead(findinputboxer);</p>
<p>var searchjs = '';<br />
searchjs += 'function listen(evnt, elem, func) {\n';<br />
searchjs += '  if (elem.addEventListener)  \/\/ W3C DOM\n';<br />
searchjs += '    elem.addEventListener(evnt,func,false);\n';<br />
searchjs += '  else if (elem.attachEvent) {\n';<br />
searchjs += '    \/\/ IE DOM\n';<br />
searchjs += '    var r = elem.attachEvent("on"+evnt, func);\n';<br />
searchjs += '    return r;\n';<br />
searchjs += '  } else window.alert(\'Error: cant listen on event!!!\');\n';<br />
searchjs += '} \/\/listen\n';<br />
searchjs += '\n';<br />
searchjs += 'function checkIfEnterPressed(e) { \n';<br />
searchjs += '  if (!e) { e = window.event; if (!e) { e = event; } }\n';<br />
searchjs += '  var key = e.keyCode ? e.keyCode : e.charCode\n';<br />
searchjs += '  if (key == 13) { \n';<br />
searchjs += '    global_go();\n';<br />
searchjs += '    return false;\n';<br />
searchjs += '  } \// if\n';<br />
searchjs += '} \//checkIfEnterPressed\n';<br />
searchjs += '\n';<br />
searchjs += '\n';<br />
searchjs += 'function loadSearchPage() {\n';<br />
searchjs += '  NQOnLoadEvent(); \/\/we need to call the default OBIEE onload event first\n';<br />
searchjs += '  var searchfield;\n';<br />
searchjs += ' \n';<br />
searchjs += '  searchfield = document.getElementById(findTextPrompt(\'Search\'));\n';<br />
searchjs += '  searchfield.value = searchfield.value.toUpperCase();\n';<br />
searchjs += ' \n';<br />
searchjs += '    \//Set the search field so that on key press it will clear the hidden prompts of any values.\n';<br />
searchjs += '   \n';<br />
searchjs += '    searchfield.size="70";\n';<br />
searchjs += '    searchfield.style.backgroundColor="black";\n';<br />
searchjs += '    searchfield.style.color="white";\n';<br />
//searchjs += '    listen("keypress", searchfield, checkIfEnterPressed);\n';<br />
searchjs += '\n';<br />
searchjs += '    searchfield.focus(); \//set focus\n';<br />
searchjs += '    searchfield.select(); \//auto select the text\n';<br />
searchjs += '}\n';</p>
<p>injectJavascriptIntoHead(searchjs);</p>
<p>listen("load", window, function() { loadSearchPage(); });<br />
&lt;/script&gt;<br />
</code></p>
<p>
<span style="text-decoration: underline;">Step 2. Modify the code accordingly</span><br />
The only place you need to modify the code is the name of the prompt. In this post the prompt (Label) is &#8220;Search&#8221; and must be the only prompt on the page with that specific name.<br />
<code><br />
searchjs += '  searchfield = document.getElementById(findTextPrompt(\'Search\'));\n';<br />
</code><br />
Make sure the findTextPrompt function contains the name of the prompt you are searching for.</p>
<p>I customised the prompt using the following piece of code:<br />
<code><br />
searchjs += '    searchfield.size="70";\n';<br />
searchjs += '    searchfield.style.backgroundColor="black";\n';<br />
searchjs += '    searchfield.style.color="white";\n';<br />
</code><br />
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, &#8220;Set Focus&#8221; is the term used when setting the cursor to default to this field so it&#8217;s ready for the user to start typing. They don&#8217;t need to click on it or in it to start typing their search results.<br />
<code><br />
searchjs += '    searchfield.focus(); \//set focus\n';<br />
searchjs += '    searchfield.select(); \//auto select the text\n';<br />
</code></p>
<p>The end result is a very cool looking Search Page&#8230;.<br />
<u>Onload</u><br />
The user types in &#8220;andrew&#8221;&#8230;<br />
<img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/08/findprompt6.png" width=650><br />
On Enter&#8230;the page uppercases the text, submits to the database and the report runs. As the page refreshes the text is &#8220;set focus&#8221; and the user can continue searching quickly without the need for clicking around. The way it should be!!<br />
<img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/08/findprompt7.png" width=650></p>
<p>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.</p>
<p>L out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wilson-is.com/blog/2011/08/obiee-10g-finding-a-prompt/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>OBIEE 10g &#8211; Adding a dynamic toolbar to the dashboard</title>
		<link>http://www.wilson-is.com/blog/2011/07/obiee-10g-adding-a-dynamic-toolbar-to-the-dashboard/</link>
		<comments>http://www.wilson-is.com/blog/2011/07/obiee-10g-adding-a-dynamic-toolbar-to-the-dashboard/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 16:34:51 +0000</pubDate>
		<dc:creator>Leigh Wilson</dc:creator>
				<category><![CDATA[Advanced Dashboarding]]></category>
		<category><![CDATA[Banner]]></category>
		<category><![CDATA[dashboard]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[OBIEE]]></category>
		<category><![CDATA[toolbar]]></category>

		<guid isPermaLink="false">http://www.wilson-is.com/blog/?p=259</guid>
		<description><![CDATA[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&#8217;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, [...]]]></description>
			<content:encoded><![CDATA[<p>In this post I will continue on from the <a href="http://www.wilson-is.com/blog/2011/07/obiee-10g-adding-a-logo-to-the-dynamic-banner/">Dynamic Banner</a> post and add a floating toolbar to the top right of the page. In this example I&#8217;m going to add the Excel icon and a Email icon.</p>
<p><strong><span style="text-decoration: underline;">1. Icon Selection</span></strong><br />
<center><img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/icons.png"></center><br />
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 <a href="http://www.iconarchive.com/tag/excel" target="_other">this</a> 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&#8217;re using 32&#215;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.</p>
<p><strong><span style="text-decoration: underline;">2. Download the icons</span></strong><br />
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&#8217; browser each time the page refreshes so to ensure the images are up and working it&#8217;s recommend to upload them onto a solid productionised webserver.</p>
<p><strong><span style="text-decoration: underline;">3. Adding the toolbar to the banner</span></strong><br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/toolbar.png" alt="" width=480/></p>
<p><code>&lt;div id="my_banner" style="top:0px; left:0px; position: absolute; z-index=11; visibility=show; right=0px;"&gt;<br />
&lt;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"&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br />
&lt;/div&gt;<br />
&lt;div id="my_banner_title"&gt;&lt;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');"&gt;Main Menu&lt;/font&gt;<br />
&lt;/div&gt;</p>
<p>&lt;div id="my_logo" style="top:1px; left:1px; position: absolute; z-index=14; visibility=show;"&gt;<br />
&lt;img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/logo.png" height=68 border=0&gt;&lt;/div&gt;</p>
<p>&lt;div id="my_toolbar" style="top:20px; right:10px; position: absolute; z-index=14; visibility=show;"&gt;<br />
&lt;img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/excel.png" border=0&gt;<br />
&lt;a href="mailto:testme@wilson-is.com"&gt;&lt;img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/email.png" border=0&gt;&lt;/a&gt;<br />
&lt;/div&gt;</code></p>
<p>The Excel icon doesn&#8217;t have an event associated to it so it&#8217;s just an image at this stage. I will add functionality (onclick) events to it in a later post. I&#8217;ve added a simple &#8220;mail to&#8221; on the email icon.</p>
<p>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&#8217;t need to go off digging around to find a contact person/team etc. It&#8217;s important to maintain them on the dashboard and retain their attention. We don&#8217;t want to lose them in a sea of Intranet pages do we?! <img src='http://www.wilson-is.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>I will look at adding an &#8220;onclick&#8221; event to the Excel icon in my next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wilson-is.com/blog/2011/07/obiee-10g-adding-a-dynamic-toolbar-to-the-dashboard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OBIEE 10g &#8211; Adding a Logo to the Dynamic Banner</title>
		<link>http://www.wilson-is.com/blog/2011/07/obiee-10g-adding-a-logo-to-the-dynamic-banner/</link>
		<comments>http://www.wilson-is.com/blog/2011/07/obiee-10g-adding-a-logo-to-the-dynamic-banner/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 15:17:19 +0000</pubDate>
		<dc:creator>Leigh Wilson</dc:creator>
				<category><![CDATA[Advanced Dashboarding]]></category>
		<category><![CDATA[10g]]></category>
		<category><![CDATA[adding]]></category>
		<category><![CDATA[Banner]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[Logo]]></category>
		<category><![CDATA[obi]]></category>
		<category><![CDATA[OBIEE]]></category>

		<guid isPermaLink="false">http://www.wilson-is.com/blog/?p=229</guid>
		<description><![CDATA[This post follows on from the Dynamic Banner post. In this example we&#8217;re going to float an image on the top left, absolute position of 1, 1. Adding the floating image to the banner &#60;div id="my_banner" style="top:0px; left:0px; position: absolute; z-index=11; visibility=show; right=0px;"&#62; &#60;table cellspacing="0" style="text-align: left; vertical-align: middle; background-color: rgb(24, 24, 24); height: 70px; [...]]]></description>
			<content:encoded><![CDATA[<p>This post follows on from the <a href="http://www.wilson-is.com/blog/2011/07/obiee-10g-dynamically-changing-the-banner-onload/">Dynamic Banner</a> post.</p>
<p>In this example we&#8217;re going to float an image on the top left, absolute position of 1, 1.<br />
<a href="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner10.png" target="popup"><br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner10_thumb.png" alt="" width=480/></a></p>
<p><strong><span style="text-decoration: underline;">Adding the floating image to the banner</span></strong><br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner11.png" alt="" width=480/></a></p>
<p>
<code>&lt;div id="my_banner" style="top:0px; left:0px; position: absolute; z-index=11; visibility=show; right=0px;"&gt;<br />
  &lt;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"&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br />
&lt;/div&gt;</p>
<p>&lt;div id="my_banner_title"&gt;&lt;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');"&gt;Main Menu&lt;/font&gt;<br />
&lt;/div&gt;</p>
<p>&lt;div id="my_logo" style="top:1px; left:1px; position: absolute; z-index=14; visibility=show;"&gt;<br />
&lt;img src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/logo.png" height=68 border=0&gt;&lt;/div&gt;</code></p>
<p><strong><span style="text-decoration: underline;">Considerations</span></strong><br />
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);<br />
2. Make the image as compact/compressed as possible for performance reasons;</p>
<p>I&#8217;ll look at adding a floating toolbar to this dynamic banner in my next post. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.wilson-is.com/blog/2011/07/obiee-10g-adding-a-logo-to-the-dynamic-banner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OBIEE 10g &#8211; Dynamically Changing the Banner onload</title>
		<link>http://www.wilson-is.com/blog/2011/07/obiee-10g-dynamically-changing-the-banner-onload/</link>
		<comments>http://www.wilson-is.com/blog/2011/07/obiee-10g-dynamically-changing-the-banner-onload/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 14:39:42 +0000</pubDate>
		<dc:creator>Leigh Wilson</dc:creator>
				<category><![CDATA[Advanced Dashboarding]]></category>
		<category><![CDATA[10g]]></category>
		<category><![CDATA[adding]]></category>
		<category><![CDATA[Banner]]></category>
		<category><![CDATA[dashboard]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[Logo]]></category>
		<category><![CDATA[OBIEE]]></category>
		<category><![CDATA[onload]]></category>
		<category><![CDATA[toolbar]]></category>

		<guid isPermaLink="false">http://www.wilson-is.com/blog/?p=109</guid>
		<description><![CDATA[As an OBIEE developer it can be hard to say &#8220;no&#8221; to the end-users when they ask for something simple. Sometimes they ask for something obvious like &#8220;I want a title at the top of the page&#8221; or &#8220;I don&#8217;t want to see all those links and distractions across the banner&#8221;. This blog entry will [...]]]></description>
			<content:encoded><![CDATA[<p>As an OBIEE developer it can be hard to say &#8220;no&#8221; to the end-users when they ask for something simple. Sometimes they ask for something obvious like &#8220;I want a title at the top of the page&#8221; or &#8220;I don&#8217;t want to see all those links and distractions across the banner&#8221;. This blog entry will demonstrate how to &#8220;cover up&#8221; 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.</p>
<p><strong><span style="text-decoration: underline;">Traditional OBIEE 10g Dashboard page</span></strong><br />
<a href="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner1.png" target="popup"><br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner1_thumb.png" alt="" width=480/></a></p>
<p><strong><span style="text-decoration: underline;">Same Page &#8211; With a Custom Banner</span></strong><br />
<a href="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner8.png" target="popup"><br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner8_thumb.png" alt="" width=480/></a></p>
<p><strong><span style="text-decoration: underline;">Steps to Creating Your Custom Banner</span></strong><br />
1. Edit the Dashboard and drag a Text object onto the dashboard page. Anywhere is fine.<br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner2.png" alt="" width=480/></p>
<p>2. Set the &#8220;Contains HTML Markup&#8221; and put some dummy HTML in there to test it. ie. &#8220;&lt;b&gt;My piece of html&lt;/b&gt;&#8221;. Press OK and save the dashboard.<br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner3.png" alt="" width=480/></p>
<p>3. In some cases you might have an error while saving the dashboard if your user account doesn&#8217;t have &#8220;HTML Markup&#8221; enabled. (See Settings->Administration->Manage Privileges. See Answers Section and ensure you belong to the groups in the &#8220;Save Content with HTML Markup&#8221; section). This is only required for dashboard developers who need to &#8220;save&#8221; html. All users will still be able to see the dashboard without problems.<br />
<a href="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner9.png" target="popup"><br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner9_thumb.png" alt="" width=480/></a></p>
<p>4. As you can see the HTML message will appear somewhere on the page.<br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner4.png" alt="" width=480/></p>
<p>5. We&#8217;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.
<p>
<code>&lt;div id="my_banner" style="top:0px; left:0px; position: absolute; z-index=11; visibility=show; right=0px;"&gt;<br />
  &lt;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"&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br />
&lt;/div&gt;</p>
<p>&lt;div id="my_banner_title"&gt;<br />
&lt;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');"&gt;&lt;b&gt;www.wilson-is.com&lt;/b&gt;&lt;br&gt;Main Menu&lt;/font&gt;<br />
&lt;/div&gt;</code></p>
<p><i>Copy the code from this page. Paste it into Notepad (or equivalent text editor first) then copy/paste from there.</i><br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner5.png" alt="" width=480/></p>
<p>6. For cleanliness, rename the text object to something friendly like &#8220;CUSTOM BANNER&#8221;. Save the dashboard page.<br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner6.png" alt="" width=480/></p>
<p>7. The page should render a nice clean banner (in this case a blue rectangle with a title).<br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner7.png" alt="" width=480/></p>
<p>8. The page looks quite nice and clean without all the banner links etc.<br />
<a href="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner8.png" target="popup"><br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/07/banner8_thumb.png" alt="" width=480/></a></p>
<p><strong><span style="text-decoration: underline;">Why would I want to do this&#8230; I can just use a custom skin, right?</span></strong><br />
Yes. You can use a skin but there are some problems with this approach.<br />
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 &#8220;no&#8221; outright because it&#8217;s a production risk;<br />
b) the skin would require some manipulation of &#8220;out of the box&#8221; javascript and html&#8230; not cool;<br />
c) if you use a skin and then the users ask for a small change this requires a prod change and roll out&#8230; which could make the option A &amp; B a big problem.<br />
d) using a skin will require migration considerations when migrating to new versions of OBIEE&#8230; something to consider;<br />
e) adding a dynamic banner/title is nearly impossible using a skin &#8211; &#8220;too hard basket&#8221;.</p>
<p><strong><span style="text-decoration: underline;">If I use this approach I will need to put that Text Object on each Dashboard page&#8230; that could take a while, right?</span></strong><br />
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&#8217;re updating. So no, it&#8217;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&#8217;t do them by hand on each page or you run the risk of version control issues and headaches. Be smart <img src='http://www.wilson-is.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong><span style="text-decoration: underline;">Cool things you can add to this Custom Banner approach</span></strong><br />
1. <a href="http://www.wilson-is.com/blog/2011/07/obiee-10g-adding-a-dynamic-toolbar-to-the-dashboard/">floating toolbar for help icons, emailing, printing</a> etc.<br />
2. <a href="http://www.wilson-is.com/blog/2011/07/obiee-10g-adding-a-logo-to-the-dynamic-banner/">custom logo</a><br />
I will be adding these two additions to the next blog entry&#8230; stay tuned.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wilson-is.com/blog/2011/07/obiee-10g-dynamically-changing-the-banner-onload/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Oracle 10g Business Intelligence Reporting using iPad/iPad2</title>
		<link>http://www.wilson-is.com/blog/2011/05/oracle-10g-business-intelligence-reporting-using-ipadipad2/</link>
		<comments>http://www.wilson-is.com/blog/2011/05/oracle-10g-business-intelligence-reporting-using-ipadipad2/#comments</comments>
		<pubDate>Tue, 17 May 2011 20:59:46 +0000</pubDate>
		<dc:creator>Leigh Wilson</dc:creator>
				<category><![CDATA[iPad & iPhone for OBIEE]]></category>
		<category><![CDATA[charts]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[graphs]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[obi]]></category>
		<category><![CDATA[OBIEE]]></category>

		<guid isPermaLink="false">http://www.wilson-is.com/blog/?p=44</guid>
		<description><![CDATA[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 &#38; iPad2 have some hardware and software specifications that can make Oracle Business Intelligence development difficult. Issues [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>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 &amp; 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.</p>
<p>&nbsp;</p>
<p>This document will include iPad and iPad2 compliancy for OBIEE 10g.</p>
<p>&nbsp;</p>
<p><strong>The Apple iPad &amp; iPad2 – Know Your Device</strong></p>
<p>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.</p>
<p><a href="http://www.wilson-is.com/blog/wp-content/uploads/2011/05/ipad_photo1.png" target="popup"><br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/05/ipad_photo1_thumb.png" alt="" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>iPad/iPad2 Hardware specifications relevant to OBIEE Reporting</strong></p>
<ul>
<li>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.</li>
<li>Display resolution of 1024&#215;768. (In portrait it’s 768&#215;1024,      landscape it’s 1024&#215;768).</li>
<li>Processor:</li>
</ul>
<ul>
<li>IPad1 contains the A4 1Ghz single core processor; 256MB PoP (Package on Package) memory, Graphics Processing Unit built into the chip;</li>
<li>IPad2 contains the A5 1Ghz dual core processor; 512MB PoP Memory, GPU built in;</li>
</ul>
<p><em>Both are adequate for report rendering.</em></p>
<ul>
<li>Location Services:
<ul>
<li>The Wi-Fi only model uses an approximation approach to returning       the latitude/longitude of the device in use;</li>
<li>The Wi-Fi &amp; 3G models use Assisted GPS and 3G for more       accurate latitude/longitude results.</li>
</ul>
</li>
</ul>
<p>This could be useful for gathering stats on user location when running reports but outside the scope of this post.</p>
<p>&nbsp;</p>
<p><strong>Software Specifications</strong></p>
<ul>
<li>Accessibility Support
<ul>
<li>Support for playback of closed-captioned content;</li>
<li>VoiceOver screen reader;</li>
<li>Full-screen magnification; and</li>
<li>White on Black display</li>
</ul>
</li>
<li>Built in support for document types:
<ul>
<li>.jpeg, .tiff, .gif (image types);</li>
<li>.doc and .docx (word files);</li>
<li>.ppt &amp; .pptx (powerpoint);</li>
<li>.htm/html;</li>
<li>.key (keynote), .numbers (numbers), .pages (pages), .pdf (Preview       and Adobe Acrobat)</li>
<li>.txt (text); .rtf (rich text);</li>
<li>.vcf (contact card);</li>
<li>.xls and .xlsx (excel);</li>
<li><em>Does not support       Adobe Flash files/plugin</em></li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Safari Browser &amp; why we don’t need a custom application from the App Store</strong></p>
<p>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).</p>
<p>&nbsp;</p>
<p>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.</p>
<p>&nbsp;</p>
<p>The iPad/iPad2 has the Safari browser pre-installed as part of the iOS package.</p>
<p>&nbsp;</p>
<p>For the purposes of this post the iPad OS version we’re using is iOS 4.3.</p>
<p>&nbsp;</p>
<p><strong>OBIEE demo environment</strong></p>
<p><strong> </strong>Windows 7 Professional Virtual Machine, OBIEE 10.1.3.4.1, Sample Sales XML/RPD installed.</p>
<p><strong>Desktop Machine Screenshot</strong></p>
<p><a href="http://www.wilson-is.com/blog/wp-content/uploads/2011/05/ipad_photo2.png" target="popup"><br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/05/ipad_photo2_thumb.png" alt="" /></a></p>
<p>&nbsp;</p>
<p><strong>iPad Screenshot</strong></p>
<p><a href="http://www.wilson-is.com/blog/wp-content/uploads/2011/05/ipad_photo3.png" target="popup"><br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/05/ipad_photo3_thumb.png" alt="" /></a></p>
<p>&nbsp;</p>
<p>Aas you can see, the iPad/iPhone devices don&#8217;t support Adobe Flash so the default chart rendering option isn&#8217;t working.</p>
<p><strong><span style="text-decoration: underline;">Chart Solutions</span></strong></p>
<p>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.</p>
<p>&nbsp;</p>
<p>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.</p>
<p>&nbsp;</p>
<p>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.</p>
<p>&nbsp;</p>
<p>(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).<br />
<i>See inserted XML towards the bottom of the instanceconfig.xml screenshot</i></p>
<p><a href="http://www.wilson-is.com/blog/wp-content/uploads/2011/05/ipad_photo4.png" target="popup"><br />
<img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/05/ipad_photo4_thumb.png" alt="" /></a></p>
<p><strong>After Adjusting Charts to render in PNG format – iPad</strong><br />
<a href="http://www.wilson-is.com/blog/wp-content/uploads/2011/05/ipad_photo5.png" target="popup"><img class="aligncenter" src="http://www.wilson-is.com/blog/wp-content/uploads/2011/05/ipad_photo5_thumb.png" alt="" /></a></p>
<p><strong>Success!!</strong></p>
<p>I will add some more posts on dashboard formatting for &#8220;best fit&#8221; and other helpful tips for iPad and iPhone.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wilson-is.com/blog/2011/05/oracle-10g-business-intelligence-reporting-using-ipadipad2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Welcome</title>
		<link>http://www.wilson-is.com/blog/2011/05/welcome/</link>
		<comments>http://www.wilson-is.com/blog/2011/05/welcome/#comments</comments>
		<pubDate>Tue, 17 May 2011 19:28:38 +0000</pubDate>
		<dc:creator>Leigh Wilson</dc:creator>
				<category><![CDATA[Welcome]]></category>

		<guid isPermaLink="false">http://www.wilson-is.com/blog/?p=41</guid>
		<description><![CDATA[Hi there &#8211; I&#8217;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 [...]]]></description>
			<content:encoded><![CDATA[<p>Hi there &#8211; I&#8217;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.</p>
<p>This blog is a collection of my personal tips/tricks (so i don&#8217;t forget them&#8230;and also to share with other developers).</p>
<p>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 <img src='http://www.wilson-is.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p>I hope you enjoy,</p>
<p>Leigh.<br />
<a href="http://www.wilson-is.com">www.wilson-is.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wilson-is.com/blog/2011/05/welcome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

