SlideShare a Scribd company logo
Chippewa Valley Code Camp 2008 Web-based Data Visualization  A Focus on VisiFire Ryan Oliveira Solutia Consulting Room 103 12:45am-2:00pm Solutia Consulting Technology Enablement Services
Greetings and Introduction Business Intelligence and Visualization Overview  Business Intelligence and Data Visualization Strategies  Light / No Code Options  Dynamic / Code Supported Options  VisiFire ™  Product Overview Using the VisiFire ™  Chart Designer Web Design Implementation & XML Data  VisiFire ™  API Examples Light / No Code Options Quick Real-World Solution Example Walkthrough of Real World Dashboard Solution Creation Questions and Answers Today’s Agenda
Greetings and Introductions
Founded in 1997, Solutia Consulting helps clients develop customized software solutions to align with their business goals. We manage projects from requirements gathering through application development, with quality as our top priority.  In 2007 Solutia created the Technology Enablement Practice focused on delivering technology solutions and best practices in support of its Management Consulting and Transformational Support practices. About Solutia Consulting
Business Intelligence and Data Visualization Overview
Scale  This is a  HUGE  Topic, focus today is on a very specific approach of supporting decision making via web-capable data visualization. Context Not all Business Intelligence solutions have need be global or corporate implementations, our focus is on offering visualization for local information. Approach First, we’ll take a look at the competitive space for visualization components Then we’ll look at a newer open source Silverlight-based product called from VisiFire Business Intelligence and Data Visualization
What is Business Intelligence? Ability to create universal visibility and clarity to the information harvested from a businesses data sources. What is Data Visualization? A technique using graphical representations  to help shape understanding of data and information ! ? Business Intelligence and Data Visualization
Traditional Challenges Poor visibility of key performance indicators (KPI’s) Core reports took too long to create Too many people involved to get key reports Data located in multiple systems (financial, CRM, ERP, operations) Needed one spot for decision makers view Making data available to all in the organization Goals Ease of use Better, more timely business response/action One stop shop for decision making Enter the Business Intelligence Portal / Dashboard Business Intelligence and Data Visualization
Ease of Use Solution must be able to be used by office user and/or power user Cost Lower is Better Presentation Features Product should offer a number  of visualization and presentation options  including database drill down Data Features Product should offer a number of ways of getting to various types of data within your organization Integration Product should integrate with a web platform Measurement Criteria
Visifire is a set of open source data visualization components - powered by Microsoft® Silverlight. Dundas is a leader in Data Visualization technologies and includes Charting, Gauge and mapping products specific to SSRS, OLAP, SharePoint and .NET SoftwareFX and its ChartFX franchise have been a mainstay in visualization technologies since the early 90’s.  It’s product line(s) include components which integrate with SSRS, COM/.NET, WPF/Silverlight, SharePoint, Java and PowerShell. .netCharting is another player to this space providing powerful code supported solutions for the .NET space. Graphs can be easily plugged into a WinForms or WebForms solution. Looking at comparable product toolkits
Ease of Use Cost Presentation Features Data Features Integration The Players and how they measure up Ease of Use Sometimes frustrating to make changes in browser environment (New Chart development product created for charts) Cost No Client Access licenses required –$1999 /server (discounts for multiple servers) Presentation Features Easy to make updates and preview graphs – no compiling and loading sites. Data Features Limited drill-down capabilities – must be done leveraging SharePoint’s Taxonomy structure Integration Product should integrate with proposed  (WSS 3.0) platform Ease of Use Solution must be able to be used by back office user and/or SharePoint power user.  Cost Costly; $1599 per server license Presentation Features Product should offer a number  of visualization and presentation options.  Data Features Product should offer a number of ways of getting to various types of data within your organization Integration Product should integrate with proposed  (WSS 3.0) platform Ease of Use Requires .NET Development skillset (VB/C#), although claim of simple Chart in 10 lines of code. Cost Site license $395 per server license Presentation Features Very pretty presentation. Does offer database drill down capabilities Data Features Great API.  Integration Product should integrate with proposed  (WSS 3.0) platform Ease of Use Found it very easy to use and abuse.  First graph done in a couple of minutes Cost Did not get a response on whether GPL 3.0 open source license was feasible for internal corporate use .  $199 – Single Developers, single domain; $399 - Unlimited Developers, single domain; $799 - Unlimited Developers, unlimited domains;  Presentation Features Product does not present direct drill down capabilities without manual or scripted intervention Data Features Very limited features in integrating to with data components. Needs to be done via code Integration Very quick to integrate and use within SharePoint for static components.  Any API work would need to be wrapped into SP Webpart framework.
Visifire is a set of open source data visualization components - powered by Microsoft® Silverlight. Dundas is a leader in Data Visualization technologies and includes Charting, Gauge and mapping products specific to SSRS, OLAP, SharePoint and .NET SoftwareFX and its ChartFX franchise have been a mainstay in visualization technologies since the early 90’s.  It’s product line(s) include components which integrate with SSRS, COM/.NET, WPF/Silverlight, SharePoint, Java and PowerShell. .netCharting is another player to this space providing powerful code supported solutions for the .NET space. Graphs can be easily plugged into a WinForms or WebForms solution. Other honorable mentions
Studio Enterprise for Silverlight product has huge suite of Silverlight powered ‘controls’ (GridView, Dropdowns, RichText Box)  which also includes charts and graphics. Corda is collaboration software focussed specifically on buisiness intelligence and dashboard building.  Components include built-in interactivity and communication components. Other products worth looking at
VisiFire ™  Product Overview
Easy to use Online Chart Development tool that allows you to configure and test your graphing configuration options.  Great for quick prototyping and idea sessions. View HTML Display the embed HTML  that can be used to add this graph to any web page View XML Builds the sample XML to be associated with the Chart.  Render Chart Rebuilds the Chart online and renders the sample data Chart Designer
VisiFire ™  Chart  Designer Demo
Visifire is available under Open Source GNU GPL 3.0 license, which is suitable  for: Integrating Visifire in your Open Source software.  Personal and educational use of Visifire.  Integrating Visifire in commercial software, complying with Open Source GPL 3.0 license terms.  Commercial License with Support If GPL is not suitable for your products or company, we provide Visifire under a flexible commercial license designed to meet your specific usage and distribution requirements. Commercial license offers a very flexible way to integrate Visifire in your commercial application.  Modifications and enhancements need not be released under an Open Source license.  There is no need to distribute the GPL license with your product.  No reference to Visifire has to be done in any file distributed with your product.  The source code of Visifire doesn’t have to be distributed along with your product.  You can remove any file from Visifire while integrating it with your product.  VisiFire’s Dual License
Basic configuration for scripting implementation includes uploading two files to your web server Visifire.js contains required JavaScript rendering libraries Visifire.xap Silverlight Application Package file containing binaries required to render charts. How do you do it? Step 1. Download install from VisiFire.com Step 2. Extract two key files and upload to location (root) on web server. Configure Visifire for Scripting on Web Server
OK Let’s build some charts! How do you do it? Step 1. Visit VisiFire.com and work with customer to  Step 2. Extract HTML that we’re interested in using and add to empty file on WSS site. Step 3. Load Render page. ‘ Hello Chart’ Example
View HTML Sample – Static Data Example      <script type=&quot;text/javascript&quot; src=&quot;Visifire.js&quot;></script>     <div id=&quot;VisifireChart&quot;>     <script language=&quot;javascript&quot; type=&quot;text/javascript&quot;>         var chartXmlString = '‘      +'<vc:Chart xmlns:vc=&quot;clr-namespace:Visifire.Charts;assembly=Visifire.Charts&quot; '     +' Width=&quot;500&quot; Height=&quot;300&quot; AnimationDuration=&quot;2&quot; BorderThickness=&quot;0&quot; Theme=&quot;Theme1&quot; View3D=&quot;True&quot; AnimationEnabled=&quot;True&quot; AnimationType=&quot;Type5&quot; ColorSet=&quot;VisiRed&quot; UniqueColors=&quot;True&quot; Watermark=&quot;False&quot; ShadowEnabled=&quot;True&quot;>'         +'<vc:Legend Enabled=&quot;True&quot; AlignmentX=&quot;Right&quot; AlignmentY=&quot;Center&quot;/>'         +'<vc:AxisX Title=&quot;OE Date“/>‘         +'<vc:AxisY Title=&quot;Number of Units“/>‘     +'<vc:DataSeries Name=&quot;AW&quot; RenderAs=&quot;StackedColumn&quot; AxisYType=&quot;Primary&quot;>'         +'<vc:DataPoint AxisLabel=&quot;10/21/08&quot; YValue=&quot;883&quot;/><vc:DataPoint AxisLabel=&quot;10/22/08&quot; YValue=&quot;800&quot;/>'         +'<vc:DataPoint AxisLabel=&quot;10/23/08&quot; YValue=&quot;823&quot;/><vc:DataPoint AxisLabel=&quot;10/24/08&quot; YValue=&quot;696&quot;/>'         +'<vc:DataPoint AxisLabel=&quot;10/25/08&quot; YValue=&quot;556&quot;/><vc:DataPoint AxisLabel=&quot;10/27/08&quot; YValue=&quot;709&quot;/>'     +'</vc:DataSeries>'     +'<vc:DataSeries Name=&quot;CO&quot; RenderAs=&quot;StackedColumn&quot; AxisYType=&quot;Primary&quot;>'         +'<vc:DataPoint AxisLabel=&quot;10/21/08&quot; YValue=&quot;358&quot;/><vc:DataPoint AxisLabel=&quot;10/22/08&quot; YValue=&quot;161&quot;/>'         +'<vc:DataPoint AxisLabel=&quot;10/23/08&quot; YValue=&quot;404&quot;/><vc:DataPoint AxisLabel=&quot;10/24/08&quot; YValue=&quot;278&quot;/>'         +'<vc:DataPoint AxisLabel=&quot;10/26/08&quot; YValue=&quot;88&quot;/><vc:DataPoint AxisLabel=&quot;10/27/08&quot; YValue=&quot;73&quot;/>'     +'</vc:DataSeries>'     +'</vc:Chart>';          var vChart = new Visifire(&quot;Visifire.xap&quot;,500,300);         vChart.setDataXml(chartXmlString);         vChart.render(&quot;VisifireChart&quot;);     </script> </div> Static Data Scripting Example
chart.html <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;> <head>         <title>Visifire Charts</title>          <script type=&quot;text/javascript&quot; src=&quot;Visifire.js&quot;></script> </head> <body> <div id=&quot;VisifireChart&quot;>          <script language=&quot;javascript&quot; type=&quot;text/javascript&quot;>                  var vChart = new Visifire(&quot;Visifire.xap&quot;,600,400);                  vChart.setDataUri(“chart.xml&quot;);                  vChart.render(&quot;VisifireChart&quot;);          </script> </div> </body> </html> chart.xml <vc:Chart xmlns:vc=&quot;clr-namespace:Visifire.Charts;assembly= Visifire.Charts&quot; Width=&quot;500“ Height=&quot;300&quot; AnimationDuration=&quot;2&quot; BorderThickness=&quot;0“ Theme=&quot;Theme1&quot; View3D=&quot;True&quot; AnimationEnabled=&quot;True“ AnimationType=&quot;Type5“ ColorSet=&quot;VisiRed&quot; UniqueColors=&quot;True&quot; Watermark=&quot;False ShadowEnabled=&quot;True&quot;>     <vc:Legend Enabled=&quot;True&quot; AlignmentX=&quot;Right&quot; AlignmentY=&quot;Center&quot;/>     <vc:AxisX Title=&quot;OE Date“/><vc:AxisY Title=&quot;Number of Units“/>     <vc:DataSeries Name=&quot;AW&quot; RenderAs=&quot;StackedColumn&quot; AxisYType= &quot;Primary&quot;>         <vc:DataPoint AxisLabel=&quot;10/21/08&quot; YValue=&quot;883&quot;/>          <vc:DataPoint AxisLabel=&quot;10/22/08&quot; YValue=&quot;800&quot;/>         <vc:DataPoint AxisLabel=&quot;10/23/08&quot; YValue=&quot;823&quot;/>          <vc:DataPoint AxisLabel=&quot;10/24/08&quot; YValue=&quot;696&quot;/>         <vc:DataPoint AxisLabel=&quot;10/25/08&quot; YValue=&quot;556&quot;/>          <vc:DataPoint AxisLabel=&quot;10/27/08&quot; YValue=&quot;709&quot;/>     </vc:DataSeries>     <vc:DataSeries Name=&quot;CO&quot; RenderAs=&quot;StackedColumn&quot; AxisYType= &quot;Primary&quot;>         <vc:DataPoint AxisLabel=&quot;10/21/08&quot; YValue=&quot;358&quot;/>          <vc:DataPoint AxisLabel=&quot;10/22/08&quot; YValue=&quot;161&quot;/>         <vc:DataPoint AxisLabel=&quot;10/23/08&quot; YValue=&quot;404&quot;/>          <vc:DataPoint AxisLabel=&quot;10/24/08&quot; YValue=&quot;278&quot;/>         <vc:DataPoint AxisLabel=&quot;10/26/08&quot; YValue=&quot;88“/>          <vc:DataPoint AxisLabel=&quot;10/27/08&quot; YValue=&quot;73&quot;/>     </vc:DataSeries> </vc:Chart> Dynamic Data Scripting Example Dynamic Chart example
Adding events can allow for custom interactions and behavior including drill-down and drill-across behavior commonly required for data transitions. <script language=&quot;text/javaScript&quot; type=&quot;text/JavaScript&quot;>    function onMouseLeftButtonDown(e) { alert(e.Element); }   </script> vChart1 = new Visifire('Visifire.xap', 500, 300); vChart1.setDataUri(&quot;Data.xml&quot;);   // Attach MouseLeftButtonDown event to DataPoint.  vChart1.attachEvent('DataPoint','MouseLeftButtonDown', onMouseLeftButtonDown);   // Attach MouseLeftButtonDown event to Chart.  vChart1.attachEvent('Chart','MouseLeftButtonDown', onMouseLeftButtonDown);   // Attach MouseLeftButtonDown event to Title.  vChart1.attachEvent('Title','MouseLeftButtonDown', onMouseLeftButtonDown);   // Attach MouseLeftButtonDown event to Legend.  vChart1.attachEvent('Legend','MouseLeftButtonDown', onMouseLeftButtonDown);   vChart1.render(&quot;VisifireChart&quot;);  //Render Chart (javascript) example.html Embedding Events into Chart Event Chart example
Re-rendering the chart will allow it to refresh and pull new (possibly updated) data based on an interval. Very cool! // Displays new chart at regular intervals function UpdateChart() { Chart.setDataXml(GenerateXML()); Chart.render(&quot;VisifireChart0&quot;); setTimeout(UpdateChart,3000); }              // Checks if Silverlight plugin is loaded before //running the update routine function CheckAndUpdate() { if(Chart.isLoaded())        UpdateChart();       else            setTimeout(CheckAndUpdate,100); }              // To display the first chart also initialize loading the Silverlight Plugin function onPageLoad() { Chart.setDataXml(GenerateXML());       Chart.render(&quot;VisifireChart0&quot;);       CheckAndUpdate(); } (javascript) example.html Re-Rendering Chart Information ReRender Chart example
How do you do it? Step 1. From Visual Studio, start a new ‘Silverlight Application’ project type allowing VS to create a new Web in which to host the solution. Step 2. Extract Visifire assemblies from Visifire.xap* to local bin or GAC and add references in project to the  Visifire.Charts  and  Visifire.Commons   assemblies . Step 3. In the Main Project, locate the Page.xaml.cs and insert CreateChart() function and reference to call CreateChart from within Page constructor. Step 4. Build and Run Solution to render in browser * convert to Visifire.xap to Visifire.zip  and extract files Silverlight / ASP.NET Example See Solution in Action
Page.xaml.cs using Visifire.Charts; using Visifire.Commons; … public Page() { InitializeComponent(); CreateChart(); } … private void CreateChart() { LayoutRoot.Children.Clear(); // Remove all existing child elements   Chart chart = new Chart(); // Create a Chart element   chart.Width = 400; chart.Height = 300;  // Set chart width and height   DataSeries dataSeries = new DataSeries(); // Create new DataSeries int intDataPts = 10; // Number of DataPoints to be generated Random random = new Random(); // To set the YValues of DataPoint for (int idx= 0; idx < intDataPts; idx ++) // Loop and add a few DataPoints { DataPoint dataPoint = new DataPoint(); // Create a DataPoint dataPoint.YValue = random.Next(1, 100); // Set the YValue using random number dataSeries.Children.Add(dataPoint); // Add DataPoint to DataSeries }              chart.Children.Add(dataSeries); // Add DataSeries to Chart LayoutRoot.Children.Add(chart); // Add chart to the LayoutRoot for display } ASP.NET Code Example
(c#) sample.aspx <%@ Page Language=&quot;C#&quot; ContentType=&quot;text/html&quot; ResponseEncoding=&quot;iso-8859-1&quot; %> <html> <head> <title>Visifire example using ASP.NET and C#</title> <script type=&quot;text/javascript&quot; src=&quot;Visifire.js&quot;></script> <script type=&quot;text/javascript&quot;> function GetXMLHttpObj() { var objXmlHttp; // XMLHttpRequest object // Firefox, Opera 8.0+, Safari try { objXmlHttp = _ new XMLHttpRequest(); }  catch (e) { // Internet Explorer try {  objXmlHttp = _ new ActiveXObject(&quot;Msxml2.XMLHTTP&quot;); }   catch (e) { try { objXmlHttp = _ new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;); } catch (e) { alert(“Browser does not support AJAX!&quot;); return null; }   }  } return objXmlHttp; } (c#) sample.aspx – cont’d // Loads Visifire Chart function onLoad() { var xmlHttp = GetXMLHttpObj(); xmlHttp.onreadystatechange = function() { if( xmlHttp.readyState == 4 ) { /* Create chart object. Arguments are  Visifire.xap uri, width, height */ var vChart = _ new Visifire(&quot;Visifire.xap&quot;,600,400);  /* Set the data XAML where response text contains the Data xaml is passed as argument */ vChart.setDataXml(xmlHttp.responseText);  /* Render the chart, target div element id is passed as argument */ vChart.render(&quot;Visifire1&quot;); } } // Sending request xmlHttp.open(&quot;GET&quot;, &quot;sample.aspx&quot; + &quot;?action=GetXML&quot;, true); xmlHttp.send(null); } </script> </head> <body onLoad = &quot;onLoad()&quot;> <div style=&quot;width:800px;height:600px;&quot; id=&quot;Visifire1&quot; ></div> </body> </html> 1/3 2/3 ASP.NET Code Example
(c#) sample.aspx – cont’d <%  if (Request.QueryString.Get(&quot;action&quot;) == &quot;GetXML&quot;) { string chartTitle = &quot;Infant Mortality Rate&quot;;  // Main title for chart  string chartSubTitle = &quot;(Global Survey)&quot;;  // Sub title for chart  string axisXtitle = &quot;Year&quot;;  // X axis title  string axisYtitle = &quot;IMR Rate&quot;;  // Y axis title  string myXAML;  // String for Data xaml  int numberOfDataPoints = 6;  // Number of data point in the DataSeries  // DataSeries is a two dimensional array of DataPoints (Year | IMR Rate ) string[,] dataSeries = {{&quot;2000&quot;, &quot;52.6&quot;}, {&quot;2001&quot;, &quot;40.3&quot;}, {&quot;2002&quot;, &quot;20&quot;},  {&quot;2003&quot;, &quot;28.7&quot;}, {&quot;2004&quot;, &quot;46.1&quot;},{&quot;2005&quot;, &quot;15.1&quot;}}; // Constructing Data XAML  myXAML = &quot;<vc:Chart Theme=\&quot;Theme2\&quot; Width=\&quot;600\&quot; Height=\&quot;400\&quot; xmlns:vc=\&quot;clr-namespace:Visifire.Charts;assembly=Visifire.Charts\&quot; >&quot; + &quot;\n&quot; + &quot;\n&quot;; myXAML = myXAML + &quot;<vc:Title Text=\&quot;&quot; + chartTitle + &quot;\&quot;/>&quot; + &quot;\n&quot;; myXAML = myXAML + &quot;<vc:Title Text=\&quot;&quot; + chartSubTitle + &quot;\&quot;/>&quot; + &quot;\n&quot;; myXAML = myXAML + &quot;<vc:AxisX Title=\&quot;&quot; + axisXtitle + &quot;\&quot;/>&quot; + &quot;\n&quot;; myXAML = myXAML + &quot;<vc:AxisY Title=\&quot;&quot; + axisYtitle + &quot;\&quot; ValueFormatString=\&quot;#0.##'%'\&quot;/>&quot; + &quot;\n&quot; + &quot;\n&quot;; myXAML = myXAML + &quot;<vc:DataSeries RenderAs=\&quot;Column\&quot;>&quot; + &quot;\n&quot;; //Constructing XAML fragment for DataSeries  for (int dataPointIndex = 0; dataPointIndex <= numberOfDataPoints - 1; dataPointIndex++) {   myXAML = myXAML + &quot;<vc:DataPoint AxisLabel=\&quot;&quot; + dataSeries[dataPointIndex, 0] + &quot;\&quot; YValue=\&quot;&quot; +    dataSeries[dataPointIndex, 1] + &quot;\&quot;/>&quot; + &quot;\n&quot;; // Adding DataPoint XAML fragment  } myXAML = myXAML + &quot;\n&quot; + &quot;</vc:DataSeries>&quot; + &quot;\n&quot;; myXAML = myXAML + &quot;</vc:Chart>&quot;; Response.Clear(); // Clear all response text  Response.Write(myXAML); // Write data xaml as response text  }  %> 3/3 ASP.NET Code Example ASP.NET Sample
Use a DataView Web Part to connect to represent data from a SharePoint  Example: Represent a Hockey Teams Statistics (Goals and Assists) SharePoint Designer DataView WebPart Example
How do you do it Step 1. Create List within SharePoint Site Column: Title ‘Player’ (Text) Column: Goals (Number) Column: Assists (Number) Then add data to the SharePoint List. Step 2. Launch SharePoint Designer and add DataView to any Web Part Zone on a Page Step 3. Replace the first DataFormWebPart template a) with b) Step 4. Render SharePoint Web Page in browser <xsl:template match=&quot;/&quot;>  <xsl:call-template name=&quot;dvt_1&quot;/>  </xsl:template>  <xsl:template match=&quot;/&quot;>  <script type=&quot;text/javascript&quot; src=&quot;Visifire.js&quot; mce_src=&quot;Visifire.js&quot;></script>  <xsl:text disable-output-escaping=&quot;yes&quot;><![CDATA[  <script type=&quot;text/javascript&quot;>  var xmlString =  ' <vc:Chart xmlns:vc=&quot;clr-namespace:Visifire.Charts;assembly=Visifire.Charts&quot;'  + ' Theme=&quot;Theme1&quot; AnimationType=&quot;Type4&quot; >'  + ' <vc:Title Text=&quot;Hockey Team Goals&quot;/>'  + ' <vc:DataSeries RenderAs=&quot;Pie&quot; ShowInLegend=&quot;True&quot; Bevel=&quot;False&quot;>'  ]]></xsl:text>  <xsl:for-each select=&quot;/dsQueryResponse/Rows/Row&quot;>  <xsl:text disable-output-escaping=&quot;yes&quot;><![CDATA[ + ' <vc:DataPoint AxisLabel=&quot;]]></xsl:text>  <xsl:value-of select=&quot;./@Title&quot; />  <xsl:text disable-output-escaping=&quot;yes&quot;><![CDATA[&quot; YValue=&quot;]]></xsl:text>  <xsl:value-of select=&quot;@Goals&quot; />  <xsl:text disable-output-escaping=&quot;yes&quot;><![CDATA[&quot;/>']]></xsl:text>  </xsl:for-each>  <xsl:text disable-output-escaping=&quot;yes&quot;>  <![CDATA[  + ' </vc:DataSeries>'  + ' </vc:Chart>';  </script>  ]]></xsl:text>  <div id=&quot;myChart&quot; style=&quot;width:500px;height:300px;&quot;>  <script language=&quot;javascript&quot; type=&quot;text/javascript&quot;>  var vChart2 = new Visifire(&quot;Visifire.xap&quot;);  vChart2.setDataXml(xmlString);  vChart2.render(&quot;myChart&quot;);  </script>  </div>  </xsl:template>  A B SharePoint Designer DataView Web Part Example SPD Example
Sample Real-world Dashboard Solution
Business Story: Client is looking for an inexpensive way to create value through adding simple product related dashboard functionality to it’s existing online customer portal. Client already using SharePoint (WSS 3.0) to share internal product weekly sales information with vendors via a vendor portal implementation Solution needs to be easy to implement into a SharePoint Site Definition to be implemented into the existing site taxonomy. Business Information: Over hundreds of customer portals, Excel Services & BDC not practical. Need for a customization by end-customer minimal Sample Real-world Dashboard Solution
Product Catalog Multiple Data Sources Challenge 1: Need Real-time information from multiple data sources Inventory Sales Sample Real-world Dashboard Solution
Overlapping Product Lines Multiple Portal Display Locations Challenge 2: Information Alignment Sample Real-world Dashboard Solution
Solution Components: VisiFire Chart Web Part (WSP) Simple Form  Web Part with added to front page of solution which displays Sales Top Performers VisiFire Runtime Binaries / Components XMLPublisher.exe Console Server component Console application designed to generate data (data.xml) to individual Vendor Sites UploadFiles.exe PowerShell Server component* PowerShell script designed to upload data.xml to individual vendor sites * not shown in solution - included in solution published on Code Camp site Sample Real-world Dashboard Solution
SharePoint/MOSS Create smaller charts for use as KPIs on team sites (project task breakdown) Associate charts workflow statistics in visually represent workflow status Great for any portal implementation, for example WSS 3.0 or MOSS Standard environment where BDC and/or Excel Services may not be available Automate certain components by wrapping the ASP.NET solution into a Web Part shown earlier with the MOSS SDK  Add MOSS item, document level functionality by writing a custom control Combining this solution with a jQuery UI (http://jquery.com) to add additional levels of interactivity (Menus Other Ideas and Opportunities
Strengths: Great tool for getting a concept from idea to prototype in minutes not hours/days Very inexpensive agile solution – can replace need for large project implementation - Great for any portal implementation, for example WSS 3.0 or MOSS Standard environment where BDC and/or Excel Services may not be available Drawbacks: You still need to know your data (does that ever go away?) Great for a SharePoint implementation where skillset required may be  Final Thoughts
Learn more about… VisiFire http://www.visifire.com Source on Google Code http://code.google.com/p/visifire/  VisiFire  Forums http://www.visifire.com/forums GNU GPL 3.0 License  http://www.gnu.org/licenses/quick- guide-gplv3.html References Ryan Oliveira Solutia Consulting SharePoint Service Line Manager email: ryan.oliveira@solutiaconsulting.com
Questions & Answers
Thank You

More Related Content

PPTX
#SPFestDC Migrate your custom solutions to the modern stack
PPT
Rational HATS overview 7.5.1
PPTX
SPFestDc AZR204 Microsoft Graph and SharePoint Framework under steroids with ...
PPTX
Modernize Siebel CRM with Open UI
PPTX
WebFest 2011 Hosting Applications CR by David Tang
PDF
Workday Integration Cloud Platform Datasheet
PPTX
Legacy ECM Migration
PDF
Integration cockpit with cloud anand jha cwin18-india
#SPFestDC Migrate your custom solutions to the modern stack
Rational HATS overview 7.5.1
SPFestDc AZR204 Microsoft Graph and SharePoint Framework under steroids with ...
Modernize Siebel CRM with Open UI
WebFest 2011 Hosting Applications CR by David Tang
Workday Integration Cloud Platform Datasheet
Legacy ECM Migration
Integration cockpit with cloud anand jha cwin18-india

What's hot (19)

PDF
emediaIT - Sharepoint 2010 and K2 Breakfast - 2010.04.22
PPTX
Live events in Microsoft Teams , Yammer and Stream- When to use what
PPTX
Microsoft Viva Connections - Set up and Extend with SPFx
PPTX
Pariksha ria presentation
PPT
Introduction to cloud computing and microsoft online services
PPTX
Solution engine presentation
PPT
CVNUG - Share Point Development
PPTX
Webinar: How Much Can You Save with Office 365?
DOCX
Updated Core Cal Guide
PPTX
Community or Commercial: Which Edition of JasperSoft is Right For You?
PDF
O365con14 - how to manage projects using project online
PDF
How to go about your SAP Integration 2019, SAP PI, and cloud
PPTX
Explore Microsoft Power Platform Center of Excellence
PDF
ARIS World
PDF
What and how do I choose SharePoint 2013 On-premise vs. Cloud (Office 365)
PDF
Rolustech portfolio
PDF
Syncfusion Company Brochure_May2015
PPTX
SharePoint Online v Onprem
PPTX
Dataverse meets Teams: low code app opportunities for everyone
emediaIT - Sharepoint 2010 and K2 Breakfast - 2010.04.22
Live events in Microsoft Teams , Yammer and Stream- When to use what
Microsoft Viva Connections - Set up and Extend with SPFx
Pariksha ria presentation
Introduction to cloud computing and microsoft online services
Solution engine presentation
CVNUG - Share Point Development
Webinar: How Much Can You Save with Office 365?
Updated Core Cal Guide
Community or Commercial: Which Edition of JasperSoft is Right For You?
O365con14 - how to manage projects using project online
How to go about your SAP Integration 2019, SAP PI, and cloud
Explore Microsoft Power Platform Center of Excellence
ARIS World
What and how do I choose SharePoint 2013 On-premise vs. Cloud (Office 365)
Rolustech portfolio
Syncfusion Company Brochure_May2015
SharePoint Online v Onprem
Dataverse meets Teams: low code app opportunities for everyone
Ad

Viewers also liked (6)

PPT
Galway
PDF
Propagation of Policies in Rich Data Flows
PPT
Natural Methods For Stress Management
PDF
The Outcome Economy
PDF
The Six Highest Performing B2B Blog Post Formats
Galway
Propagation of Policies in Rich Data Flows
Natural Methods For Stress Management
The Outcome Economy
The Six Highest Performing B2B Blog Post Formats
Ad

Similar to CVCC - Data Visualization and VisiFire (20)

PPTX
Charting libraries vs BI & Analytics Platforms
PDF
Data Analytics Strategies & Solutions for SAP customers
PPTX
Emerging Trends In Data Analysis And Visualisation
PPT
Jaspersoft Webinar deck
PDF
6 creating data visualizations for analysis
PDF
Empowering Collaboration through Self-Service BI
PDF
Empowering Collaboration through Self-Service BI
PPT
Adobe jax2010 1_dashboard
PPTX
Jaspersoft Dashboards Webinar Feb 2013
PPTX
Embedded Analytics in your App Webinar
PDF
A Strategic View of Enterprise Reporting and Analytics: The Data Funnel
PDF
BISMART Bihealth. Microsoft Business Intelligence in health
PDF
Expanding the capabilities of SAC with App Design
PDF
Tutorial: (Additional Slides) Business Intelligence: Making the Right Choices...
PDF
201003 BIRT
PDF
Business Intelligence Data Visualization from SharePoint Saturday Boston
PDF
Microsoft Analysis Services July 2010
PPTX
How agile BI delivers business value
PDF
Self-service data discovery for business users and analysts using SAP Lumira
PPTX
Grafixoft ltd
Charting libraries vs BI & Analytics Platforms
Data Analytics Strategies & Solutions for SAP customers
Emerging Trends In Data Analysis And Visualisation
Jaspersoft Webinar deck
6 creating data visualizations for analysis
Empowering Collaboration through Self-Service BI
Empowering Collaboration through Self-Service BI
Adobe jax2010 1_dashboard
Jaspersoft Dashboards Webinar Feb 2013
Embedded Analytics in your App Webinar
A Strategic View of Enterprise Reporting and Analytics: The Data Funnel
BISMART Bihealth. Microsoft Business Intelligence in health
Expanding the capabilities of SAC with App Design
Tutorial: (Additional Slides) Business Intelligence: Making the Right Choices...
201003 BIRT
Business Intelligence Data Visualization from SharePoint Saturday Boston
Microsoft Analysis Services July 2010
How agile BI delivers business value
Self-service data discovery for business users and analysts using SAP Lumira
Grafixoft ltd

Recently uploaded (20)

PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
KodekX | Application Modernization Development
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
Big Data Technologies - Introduction.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Machine learning based COVID-19 study performance prediction
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Electronic commerce courselecture one. Pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
Network Security Unit 5.pdf for BCA BBA.
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Understanding_Digital_Forensics_Presentation.pptx
KodekX | Application Modernization Development
MYSQL Presentation for SQL database connectivity
Diabetes mellitus diagnosis method based random forest with bat algorithm
Dropbox Q2 2025 Financial Results & Investor Presentation
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Big Data Technologies - Introduction.pptx
20250228 LYD VKU AI Blended-Learning.pptx
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Machine learning based COVID-19 study performance prediction
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Electronic commerce courselecture one. Pdf
“AI and Expert System Decision Support & Business Intelligence Systems”

CVCC - Data Visualization and VisiFire

  • 1. Chippewa Valley Code Camp 2008 Web-based Data Visualization A Focus on VisiFire Ryan Oliveira Solutia Consulting Room 103 12:45am-2:00pm Solutia Consulting Technology Enablement Services
  • 2. Greetings and Introduction Business Intelligence and Visualization Overview Business Intelligence and Data Visualization Strategies Light / No Code Options Dynamic / Code Supported Options VisiFire ™ Product Overview Using the VisiFire ™ Chart Designer Web Design Implementation & XML Data VisiFire ™ API Examples Light / No Code Options Quick Real-World Solution Example Walkthrough of Real World Dashboard Solution Creation Questions and Answers Today’s Agenda
  • 4. Founded in 1997, Solutia Consulting helps clients develop customized software solutions to align with their business goals. We manage projects from requirements gathering through application development, with quality as our top priority. In 2007 Solutia created the Technology Enablement Practice focused on delivering technology solutions and best practices in support of its Management Consulting and Transformational Support practices. About Solutia Consulting
  • 5. Business Intelligence and Data Visualization Overview
  • 6. Scale This is a HUGE Topic, focus today is on a very specific approach of supporting decision making via web-capable data visualization. Context Not all Business Intelligence solutions have need be global or corporate implementations, our focus is on offering visualization for local information. Approach First, we’ll take a look at the competitive space for visualization components Then we’ll look at a newer open source Silverlight-based product called from VisiFire Business Intelligence and Data Visualization
  • 7. What is Business Intelligence? Ability to create universal visibility and clarity to the information harvested from a businesses data sources. What is Data Visualization? A technique using graphical representations to help shape understanding of data and information ! ? Business Intelligence and Data Visualization
  • 8. Traditional Challenges Poor visibility of key performance indicators (KPI’s) Core reports took too long to create Too many people involved to get key reports Data located in multiple systems (financial, CRM, ERP, operations) Needed one spot for decision makers view Making data available to all in the organization Goals Ease of use Better, more timely business response/action One stop shop for decision making Enter the Business Intelligence Portal / Dashboard Business Intelligence and Data Visualization
  • 9. Ease of Use Solution must be able to be used by office user and/or power user Cost Lower is Better Presentation Features Product should offer a number of visualization and presentation options including database drill down Data Features Product should offer a number of ways of getting to various types of data within your organization Integration Product should integrate with a web platform Measurement Criteria
  • 10. Visifire is a set of open source data visualization components - powered by Microsoft® Silverlight. Dundas is a leader in Data Visualization technologies and includes Charting, Gauge and mapping products specific to SSRS, OLAP, SharePoint and .NET SoftwareFX and its ChartFX franchise have been a mainstay in visualization technologies since the early 90’s. It’s product line(s) include components which integrate with SSRS, COM/.NET, WPF/Silverlight, SharePoint, Java and PowerShell. .netCharting is another player to this space providing powerful code supported solutions for the .NET space. Graphs can be easily plugged into a WinForms or WebForms solution. Looking at comparable product toolkits
  • 11. Ease of Use Cost Presentation Features Data Features Integration The Players and how they measure up Ease of Use Sometimes frustrating to make changes in browser environment (New Chart development product created for charts) Cost No Client Access licenses required –$1999 /server (discounts for multiple servers) Presentation Features Easy to make updates and preview graphs – no compiling and loading sites. Data Features Limited drill-down capabilities – must be done leveraging SharePoint’s Taxonomy structure Integration Product should integrate with proposed (WSS 3.0) platform Ease of Use Solution must be able to be used by back office user and/or SharePoint power user. Cost Costly; $1599 per server license Presentation Features Product should offer a number of visualization and presentation options. Data Features Product should offer a number of ways of getting to various types of data within your organization Integration Product should integrate with proposed (WSS 3.0) platform Ease of Use Requires .NET Development skillset (VB/C#), although claim of simple Chart in 10 lines of code. Cost Site license $395 per server license Presentation Features Very pretty presentation. Does offer database drill down capabilities Data Features Great API. Integration Product should integrate with proposed (WSS 3.0) platform Ease of Use Found it very easy to use and abuse. First graph done in a couple of minutes Cost Did not get a response on whether GPL 3.0 open source license was feasible for internal corporate use . $199 – Single Developers, single domain; $399 - Unlimited Developers, single domain; $799 - Unlimited Developers, unlimited domains; Presentation Features Product does not present direct drill down capabilities without manual or scripted intervention Data Features Very limited features in integrating to with data components. Needs to be done via code Integration Very quick to integrate and use within SharePoint for static components. Any API work would need to be wrapped into SP Webpart framework.
  • 12. Visifire is a set of open source data visualization components - powered by Microsoft® Silverlight. Dundas is a leader in Data Visualization technologies and includes Charting, Gauge and mapping products specific to SSRS, OLAP, SharePoint and .NET SoftwareFX and its ChartFX franchise have been a mainstay in visualization technologies since the early 90’s. It’s product line(s) include components which integrate with SSRS, COM/.NET, WPF/Silverlight, SharePoint, Java and PowerShell. .netCharting is another player to this space providing powerful code supported solutions for the .NET space. Graphs can be easily plugged into a WinForms or WebForms solution. Other honorable mentions
  • 13. Studio Enterprise for Silverlight product has huge suite of Silverlight powered ‘controls’ (GridView, Dropdowns, RichText Box) which also includes charts and graphics. Corda is collaboration software focussed specifically on buisiness intelligence and dashboard building. Components include built-in interactivity and communication components. Other products worth looking at
  • 14. VisiFire ™ Product Overview
  • 15. Easy to use Online Chart Development tool that allows you to configure and test your graphing configuration options. Great for quick prototyping and idea sessions. View HTML Display the embed HTML that can be used to add this graph to any web page View XML Builds the sample XML to be associated with the Chart. Render Chart Rebuilds the Chart online and renders the sample data Chart Designer
  • 16. VisiFire ™ Chart Designer Demo
  • 17. Visifire is available under Open Source GNU GPL 3.0 license, which is suitable for: Integrating Visifire in your Open Source software. Personal and educational use of Visifire. Integrating Visifire in commercial software, complying with Open Source GPL 3.0 license terms. Commercial License with Support If GPL is not suitable for your products or company, we provide Visifire under a flexible commercial license designed to meet your specific usage and distribution requirements. Commercial license offers a very flexible way to integrate Visifire in your commercial application. Modifications and enhancements need not be released under an Open Source license. There is no need to distribute the GPL license with your product. No reference to Visifire has to be done in any file distributed with your product. The source code of Visifire doesn’t have to be distributed along with your product. You can remove any file from Visifire while integrating it with your product. VisiFire’s Dual License
  • 18. Basic configuration for scripting implementation includes uploading two files to your web server Visifire.js contains required JavaScript rendering libraries Visifire.xap Silverlight Application Package file containing binaries required to render charts. How do you do it? Step 1. Download install from VisiFire.com Step 2. Extract two key files and upload to location (root) on web server. Configure Visifire for Scripting on Web Server
  • 19. OK Let’s build some charts! How do you do it? Step 1. Visit VisiFire.com and work with customer to Step 2. Extract HTML that we’re interested in using and add to empty file on WSS site. Step 3. Load Render page. ‘ Hello Chart’ Example
  • 20. View HTML Sample – Static Data Example      <script type=&quot;text/javascript&quot; src=&quot;Visifire.js&quot;></script>     <div id=&quot;VisifireChart&quot;>     <script language=&quot;javascript&quot; type=&quot;text/javascript&quot;>         var chartXmlString = '‘      +'<vc:Chart xmlns:vc=&quot;clr-namespace:Visifire.Charts;assembly=Visifire.Charts&quot; '     +' Width=&quot;500&quot; Height=&quot;300&quot; AnimationDuration=&quot;2&quot; BorderThickness=&quot;0&quot; Theme=&quot;Theme1&quot; View3D=&quot;True&quot; AnimationEnabled=&quot;True&quot; AnimationType=&quot;Type5&quot; ColorSet=&quot;VisiRed&quot; UniqueColors=&quot;True&quot; Watermark=&quot;False&quot; ShadowEnabled=&quot;True&quot;>'         +'<vc:Legend Enabled=&quot;True&quot; AlignmentX=&quot;Right&quot; AlignmentY=&quot;Center&quot;/>'         +'<vc:AxisX Title=&quot;OE Date“/>‘         +'<vc:AxisY Title=&quot;Number of Units“/>‘     +'<vc:DataSeries Name=&quot;AW&quot; RenderAs=&quot;StackedColumn&quot; AxisYType=&quot;Primary&quot;>'         +'<vc:DataPoint AxisLabel=&quot;10/21/08&quot; YValue=&quot;883&quot;/><vc:DataPoint AxisLabel=&quot;10/22/08&quot; YValue=&quot;800&quot;/>'         +'<vc:DataPoint AxisLabel=&quot;10/23/08&quot; YValue=&quot;823&quot;/><vc:DataPoint AxisLabel=&quot;10/24/08&quot; YValue=&quot;696&quot;/>'         +'<vc:DataPoint AxisLabel=&quot;10/25/08&quot; YValue=&quot;556&quot;/><vc:DataPoint AxisLabel=&quot;10/27/08&quot; YValue=&quot;709&quot;/>'     +'</vc:DataSeries>'     +'<vc:DataSeries Name=&quot;CO&quot; RenderAs=&quot;StackedColumn&quot; AxisYType=&quot;Primary&quot;>'         +'<vc:DataPoint AxisLabel=&quot;10/21/08&quot; YValue=&quot;358&quot;/><vc:DataPoint AxisLabel=&quot;10/22/08&quot; YValue=&quot;161&quot;/>'         +'<vc:DataPoint AxisLabel=&quot;10/23/08&quot; YValue=&quot;404&quot;/><vc:DataPoint AxisLabel=&quot;10/24/08&quot; YValue=&quot;278&quot;/>'         +'<vc:DataPoint AxisLabel=&quot;10/26/08&quot; YValue=&quot;88&quot;/><vc:DataPoint AxisLabel=&quot;10/27/08&quot; YValue=&quot;73&quot;/>'     +'</vc:DataSeries>'     +'</vc:Chart>';          var vChart = new Visifire(&quot;Visifire.xap&quot;,500,300);         vChart.setDataXml(chartXmlString);         vChart.render(&quot;VisifireChart&quot;);     </script> </div> Static Data Scripting Example
  • 21. chart.html <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;> <head>         <title>Visifire Charts</title>          <script type=&quot;text/javascript&quot; src=&quot;Visifire.js&quot;></script> </head> <body> <div id=&quot;VisifireChart&quot;>          <script language=&quot;javascript&quot; type=&quot;text/javascript&quot;>                  var vChart = new Visifire(&quot;Visifire.xap&quot;,600,400);                  vChart.setDataUri(“chart.xml&quot;);                  vChart.render(&quot;VisifireChart&quot;);          </script> </div> </body> </html> chart.xml <vc:Chart xmlns:vc=&quot;clr-namespace:Visifire.Charts;assembly= Visifire.Charts&quot; Width=&quot;500“ Height=&quot;300&quot; AnimationDuration=&quot;2&quot; BorderThickness=&quot;0“ Theme=&quot;Theme1&quot; View3D=&quot;True&quot; AnimationEnabled=&quot;True“ AnimationType=&quot;Type5“ ColorSet=&quot;VisiRed&quot; UniqueColors=&quot;True&quot; Watermark=&quot;False ShadowEnabled=&quot;True&quot;>     <vc:Legend Enabled=&quot;True&quot; AlignmentX=&quot;Right&quot; AlignmentY=&quot;Center&quot;/>     <vc:AxisX Title=&quot;OE Date“/><vc:AxisY Title=&quot;Number of Units“/>     <vc:DataSeries Name=&quot;AW&quot; RenderAs=&quot;StackedColumn&quot; AxisYType= &quot;Primary&quot;>         <vc:DataPoint AxisLabel=&quot;10/21/08&quot; YValue=&quot;883&quot;/>          <vc:DataPoint AxisLabel=&quot;10/22/08&quot; YValue=&quot;800&quot;/>         <vc:DataPoint AxisLabel=&quot;10/23/08&quot; YValue=&quot;823&quot;/>          <vc:DataPoint AxisLabel=&quot;10/24/08&quot; YValue=&quot;696&quot;/>         <vc:DataPoint AxisLabel=&quot;10/25/08&quot; YValue=&quot;556&quot;/>          <vc:DataPoint AxisLabel=&quot;10/27/08&quot; YValue=&quot;709&quot;/>     </vc:DataSeries>     <vc:DataSeries Name=&quot;CO&quot; RenderAs=&quot;StackedColumn&quot; AxisYType= &quot;Primary&quot;>         <vc:DataPoint AxisLabel=&quot;10/21/08&quot; YValue=&quot;358&quot;/>          <vc:DataPoint AxisLabel=&quot;10/22/08&quot; YValue=&quot;161&quot;/>         <vc:DataPoint AxisLabel=&quot;10/23/08&quot; YValue=&quot;404&quot;/>          <vc:DataPoint AxisLabel=&quot;10/24/08&quot; YValue=&quot;278&quot;/>         <vc:DataPoint AxisLabel=&quot;10/26/08&quot; YValue=&quot;88“/>          <vc:DataPoint AxisLabel=&quot;10/27/08&quot; YValue=&quot;73&quot;/>     </vc:DataSeries> </vc:Chart> Dynamic Data Scripting Example Dynamic Chart example
  • 22. Adding events can allow for custom interactions and behavior including drill-down and drill-across behavior commonly required for data transitions. <script language=&quot;text/javaScript&quot; type=&quot;text/JavaScript&quot;>   function onMouseLeftButtonDown(e) { alert(e.Element); }   </script> vChart1 = new Visifire('Visifire.xap', 500, 300); vChart1.setDataUri(&quot;Data.xml&quot;);   // Attach MouseLeftButtonDown event to DataPoint. vChart1.attachEvent('DataPoint','MouseLeftButtonDown', onMouseLeftButtonDown);   // Attach MouseLeftButtonDown event to Chart. vChart1.attachEvent('Chart','MouseLeftButtonDown', onMouseLeftButtonDown);   // Attach MouseLeftButtonDown event to Title. vChart1.attachEvent('Title','MouseLeftButtonDown', onMouseLeftButtonDown);   // Attach MouseLeftButtonDown event to Legend. vChart1.attachEvent('Legend','MouseLeftButtonDown', onMouseLeftButtonDown);   vChart1.render(&quot;VisifireChart&quot;); //Render Chart (javascript) example.html Embedding Events into Chart Event Chart example
  • 23. Re-rendering the chart will allow it to refresh and pull new (possibly updated) data based on an interval. Very cool! // Displays new chart at regular intervals function UpdateChart() { Chart.setDataXml(GenerateXML()); Chart.render(&quot;VisifireChart0&quot;); setTimeout(UpdateChart,3000); }              // Checks if Silverlight plugin is loaded before //running the update routine function CheckAndUpdate() { if(Chart.isLoaded())       UpdateChart();       else            setTimeout(CheckAndUpdate,100); }              // To display the first chart also initialize loading the Silverlight Plugin function onPageLoad() { Chart.setDataXml(GenerateXML());       Chart.render(&quot;VisifireChart0&quot;);       CheckAndUpdate(); } (javascript) example.html Re-Rendering Chart Information ReRender Chart example
  • 24. How do you do it? Step 1. From Visual Studio, start a new ‘Silverlight Application’ project type allowing VS to create a new Web in which to host the solution. Step 2. Extract Visifire assemblies from Visifire.xap* to local bin or GAC and add references in project to the Visifire.Charts and Visifire.Commons assemblies . Step 3. In the Main Project, locate the Page.xaml.cs and insert CreateChart() function and reference to call CreateChart from within Page constructor. Step 4. Build and Run Solution to render in browser * convert to Visifire.xap to Visifire.zip and extract files Silverlight / ASP.NET Example See Solution in Action
  • 25. Page.xaml.cs using Visifire.Charts; using Visifire.Commons; … public Page() { InitializeComponent(); CreateChart(); } … private void CreateChart() { LayoutRoot.Children.Clear(); // Remove all existing child elements   Chart chart = new Chart(); // Create a Chart element   chart.Width = 400; chart.Height = 300; // Set chart width and height   DataSeries dataSeries = new DataSeries(); // Create new DataSeries int intDataPts = 10; // Number of DataPoints to be generated Random random = new Random(); // To set the YValues of DataPoint for (int idx= 0; idx < intDataPts; idx ++) // Loop and add a few DataPoints { DataPoint dataPoint = new DataPoint(); // Create a DataPoint dataPoint.YValue = random.Next(1, 100); // Set the YValue using random number dataSeries.Children.Add(dataPoint); // Add DataPoint to DataSeries }              chart.Children.Add(dataSeries); // Add DataSeries to Chart LayoutRoot.Children.Add(chart); // Add chart to the LayoutRoot for display } ASP.NET Code Example
  • 26. (c#) sample.aspx <%@ Page Language=&quot;C#&quot; ContentType=&quot;text/html&quot; ResponseEncoding=&quot;iso-8859-1&quot; %> <html> <head> <title>Visifire example using ASP.NET and C#</title> <script type=&quot;text/javascript&quot; src=&quot;Visifire.js&quot;></script> <script type=&quot;text/javascript&quot;> function GetXMLHttpObj() { var objXmlHttp; // XMLHttpRequest object // Firefox, Opera 8.0+, Safari try { objXmlHttp = _ new XMLHttpRequest(); } catch (e) { // Internet Explorer try { objXmlHttp = _ new ActiveXObject(&quot;Msxml2.XMLHTTP&quot;); } catch (e) { try { objXmlHttp = _ new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;); } catch (e) { alert(“Browser does not support AJAX!&quot;); return null; } } } return objXmlHttp; } (c#) sample.aspx – cont’d // Loads Visifire Chart function onLoad() { var xmlHttp = GetXMLHttpObj(); xmlHttp.onreadystatechange = function() { if( xmlHttp.readyState == 4 ) { /* Create chart object. Arguments are Visifire.xap uri, width, height */ var vChart = _ new Visifire(&quot;Visifire.xap&quot;,600,400); /* Set the data XAML where response text contains the Data xaml is passed as argument */ vChart.setDataXml(xmlHttp.responseText); /* Render the chart, target div element id is passed as argument */ vChart.render(&quot;Visifire1&quot;); } } // Sending request xmlHttp.open(&quot;GET&quot;, &quot;sample.aspx&quot; + &quot;?action=GetXML&quot;, true); xmlHttp.send(null); } </script> </head> <body onLoad = &quot;onLoad()&quot;> <div style=&quot;width:800px;height:600px;&quot; id=&quot;Visifire1&quot; ></div> </body> </html> 1/3 2/3 ASP.NET Code Example
  • 27. (c#) sample.aspx – cont’d <% if (Request.QueryString.Get(&quot;action&quot;) == &quot;GetXML&quot;) { string chartTitle = &quot;Infant Mortality Rate&quot;; // Main title for chart string chartSubTitle = &quot;(Global Survey)&quot;; // Sub title for chart string axisXtitle = &quot;Year&quot;; // X axis title string axisYtitle = &quot;IMR Rate&quot;; // Y axis title string myXAML; // String for Data xaml int numberOfDataPoints = 6; // Number of data point in the DataSeries // DataSeries is a two dimensional array of DataPoints (Year | IMR Rate ) string[,] dataSeries = {{&quot;2000&quot;, &quot;52.6&quot;}, {&quot;2001&quot;, &quot;40.3&quot;}, {&quot;2002&quot;, &quot;20&quot;}, {&quot;2003&quot;, &quot;28.7&quot;}, {&quot;2004&quot;, &quot;46.1&quot;},{&quot;2005&quot;, &quot;15.1&quot;}}; // Constructing Data XAML myXAML = &quot;<vc:Chart Theme=\&quot;Theme2\&quot; Width=\&quot;600\&quot; Height=\&quot;400\&quot; xmlns:vc=\&quot;clr-namespace:Visifire.Charts;assembly=Visifire.Charts\&quot; >&quot; + &quot;\n&quot; + &quot;\n&quot;; myXAML = myXAML + &quot;<vc:Title Text=\&quot;&quot; + chartTitle + &quot;\&quot;/>&quot; + &quot;\n&quot;; myXAML = myXAML + &quot;<vc:Title Text=\&quot;&quot; + chartSubTitle + &quot;\&quot;/>&quot; + &quot;\n&quot;; myXAML = myXAML + &quot;<vc:AxisX Title=\&quot;&quot; + axisXtitle + &quot;\&quot;/>&quot; + &quot;\n&quot;; myXAML = myXAML + &quot;<vc:AxisY Title=\&quot;&quot; + axisYtitle + &quot;\&quot; ValueFormatString=\&quot;#0.##'%'\&quot;/>&quot; + &quot;\n&quot; + &quot;\n&quot;; myXAML = myXAML + &quot;<vc:DataSeries RenderAs=\&quot;Column\&quot;>&quot; + &quot;\n&quot;; //Constructing XAML fragment for DataSeries for (int dataPointIndex = 0; dataPointIndex <= numberOfDataPoints - 1; dataPointIndex++) { myXAML = myXAML + &quot;<vc:DataPoint AxisLabel=\&quot;&quot; + dataSeries[dataPointIndex, 0] + &quot;\&quot; YValue=\&quot;&quot; + dataSeries[dataPointIndex, 1] + &quot;\&quot;/>&quot; + &quot;\n&quot;; // Adding DataPoint XAML fragment } myXAML = myXAML + &quot;\n&quot; + &quot;</vc:DataSeries>&quot; + &quot;\n&quot;; myXAML = myXAML + &quot;</vc:Chart>&quot;; Response.Clear(); // Clear all response text Response.Write(myXAML); // Write data xaml as response text } %> 3/3 ASP.NET Code Example ASP.NET Sample
  • 28. Use a DataView Web Part to connect to represent data from a SharePoint Example: Represent a Hockey Teams Statistics (Goals and Assists) SharePoint Designer DataView WebPart Example
  • 29. How do you do it Step 1. Create List within SharePoint Site Column: Title ‘Player’ (Text) Column: Goals (Number) Column: Assists (Number) Then add data to the SharePoint List. Step 2. Launch SharePoint Designer and add DataView to any Web Part Zone on a Page Step 3. Replace the first DataFormWebPart template a) with b) Step 4. Render SharePoint Web Page in browser <xsl:template match=&quot;/&quot;> <xsl:call-template name=&quot;dvt_1&quot;/> </xsl:template> <xsl:template match=&quot;/&quot;> <script type=&quot;text/javascript&quot; src=&quot;Visifire.js&quot; mce_src=&quot;Visifire.js&quot;></script> <xsl:text disable-output-escaping=&quot;yes&quot;><![CDATA[ <script type=&quot;text/javascript&quot;> var xmlString = ' <vc:Chart xmlns:vc=&quot;clr-namespace:Visifire.Charts;assembly=Visifire.Charts&quot;' + ' Theme=&quot;Theme1&quot; AnimationType=&quot;Type4&quot; >' + ' <vc:Title Text=&quot;Hockey Team Goals&quot;/>' + ' <vc:DataSeries RenderAs=&quot;Pie&quot; ShowInLegend=&quot;True&quot; Bevel=&quot;False&quot;>' ]]></xsl:text> <xsl:for-each select=&quot;/dsQueryResponse/Rows/Row&quot;> <xsl:text disable-output-escaping=&quot;yes&quot;><![CDATA[ + ' <vc:DataPoint AxisLabel=&quot;]]></xsl:text> <xsl:value-of select=&quot;./@Title&quot; /> <xsl:text disable-output-escaping=&quot;yes&quot;><![CDATA[&quot; YValue=&quot;]]></xsl:text> <xsl:value-of select=&quot;@Goals&quot; /> <xsl:text disable-output-escaping=&quot;yes&quot;><![CDATA[&quot;/>']]></xsl:text> </xsl:for-each> <xsl:text disable-output-escaping=&quot;yes&quot;> <![CDATA[ + ' </vc:DataSeries>' + ' </vc:Chart>'; </script> ]]></xsl:text> <div id=&quot;myChart&quot; style=&quot;width:500px;height:300px;&quot;> <script language=&quot;javascript&quot; type=&quot;text/javascript&quot;> var vChart2 = new Visifire(&quot;Visifire.xap&quot;); vChart2.setDataXml(xmlString); vChart2.render(&quot;myChart&quot;); </script> </div> </xsl:template> A B SharePoint Designer DataView Web Part Example SPD Example
  • 31. Business Story: Client is looking for an inexpensive way to create value through adding simple product related dashboard functionality to it’s existing online customer portal. Client already using SharePoint (WSS 3.0) to share internal product weekly sales information with vendors via a vendor portal implementation Solution needs to be easy to implement into a SharePoint Site Definition to be implemented into the existing site taxonomy. Business Information: Over hundreds of customer portals, Excel Services & BDC not practical. Need for a customization by end-customer minimal Sample Real-world Dashboard Solution
  • 32. Product Catalog Multiple Data Sources Challenge 1: Need Real-time information from multiple data sources Inventory Sales Sample Real-world Dashboard Solution
  • 33. Overlapping Product Lines Multiple Portal Display Locations Challenge 2: Information Alignment Sample Real-world Dashboard Solution
  • 34. Solution Components: VisiFire Chart Web Part (WSP) Simple Form Web Part with added to front page of solution which displays Sales Top Performers VisiFire Runtime Binaries / Components XMLPublisher.exe Console Server component Console application designed to generate data (data.xml) to individual Vendor Sites UploadFiles.exe PowerShell Server component* PowerShell script designed to upload data.xml to individual vendor sites * not shown in solution - included in solution published on Code Camp site Sample Real-world Dashboard Solution
  • 35. SharePoint/MOSS Create smaller charts for use as KPIs on team sites (project task breakdown) Associate charts workflow statistics in visually represent workflow status Great for any portal implementation, for example WSS 3.0 or MOSS Standard environment where BDC and/or Excel Services may not be available Automate certain components by wrapping the ASP.NET solution into a Web Part shown earlier with the MOSS SDK Add MOSS item, document level functionality by writing a custom control Combining this solution with a jQuery UI (http://jquery.com) to add additional levels of interactivity (Menus Other Ideas and Opportunities
  • 36. Strengths: Great tool for getting a concept from idea to prototype in minutes not hours/days Very inexpensive agile solution – can replace need for large project implementation - Great for any portal implementation, for example WSS 3.0 or MOSS Standard environment where BDC and/or Excel Services may not be available Drawbacks: You still need to know your data (does that ever go away?) Great for a SharePoint implementation where skillset required may be Final Thoughts
  • 37. Learn more about… VisiFire http://www.visifire.com Source on Google Code http://code.google.com/p/visifire/ VisiFire Forums http://www.visifire.com/forums GNU GPL 3.0 License http://www.gnu.org/licenses/quick- guide-gplv3.html References Ryan Oliveira Solutia Consulting SharePoint Service Line Manager email: ryan.oliveira@solutiaconsulting.com

Editor's Notes

  • #2: TALK SLOWLY!!!!